我已经为systemd服务构建了一个deb包,在使用GitLab CI构建它之后,我想对其进行测试。
我使用的图像基于debian:stable
(即撰写本文时发生的破坏)。
我正在像这样进行基本的烟雾测试:
test:
stage: test
script:
- dpkg -i myservice.deb
- systemctl start myservice
这失败,并显示一条错误消息,因为未找到systemctl
。如果我将其作为测试的一部分进行安装,则它仍然会失败,因为systemd
不是系统上的第一个进程。
如何在GitLab CI上测试systemctl服务?是否有运行systemd的Debian映像?
systemd与Docker不兼容,并且通常不需要,因为Docker范例是每个容器运行一个服务,因此服务控制框架没有多大意义。除非您特别依赖systemd进行测试…
[我在https://developers.redhat.com/blog/2014/05/05/running-systemd-within-docker-container/找到了一个在Docker容器内运行systemd的指令(随后,https://developers.redhat.com/blog/2016/09/13/running-systemd-in-a-non-privileged-container/)。它基于Redhat,但其原理也应适用于其他发行版(并且提供了有关systemd / docker兼容性的更多背景信息)。
但是,我想知道在这种设置下进行的测试是否仍然有意义。最好依靠本地VM进行测试。