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 进行测试可能会更好。