GitLab CI 用于 systemd 服务
GitLab CI for systemd service
我已经为 systemd 服务构建了一个 deb 包,我想在使用 GitLab 构建它后对其进行测试 CI。
我使用的图像基于 debian:stable
(即撰写本文时的 buster)。
我正在做这样的基本冒烟测试:
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/ (and, as a follow-up, https://developers.redhat.com/blog/2016/09/13/running-systemd-in-a-non-privileged-container/ 的 Docker 容器中找到了 运行 systemd 的指令。它基于 Redhat,但它的原则也应该适用于其他发行版(并且它提供了一些关于 systemd/docker 兼容性的更多背景信息)。
但是,此时我想知道在这样的设置上进行的测试是否仍然有意义。依赖本地 VM 进行测试可能会更好。
我已经为 systemd 服务构建了一个 deb 包,我想在使用 GitLab 构建它后对其进行测试 CI。
我使用的图像基于 debian:stable
(即撰写本文时的 buster)。
我正在做这样的基本冒烟测试:
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/ (and, as a follow-up, https://developers.redhat.com/blog/2016/09/13/running-systemd-in-a-non-privileged-container/ 的 Docker 容器中找到了 运行 systemd 的指令。它基于 Redhat,但它的原则也应该适用于其他发行版(并且它提供了一些关于 systemd/docker 兼容性的更多背景信息)。
但是,此时我想知道在这样的设置上进行的测试是否仍然有意义。依赖本地 VM 进行测试可能会更好。