如何在 Gitlab CICD 中 运行 后台任务?

How can I run background tasks in Gitlab CICD?

如何在 gitlab-ci.yml 中构建过程后 运行 基于服务的命令?

例如,我想 运行:

php artisan queue:listen --timeout=0 &

问题是构建 运行 一直在等待此命令的结果而未完成(即使此命令从未完成)。

无论如何我可以 运行 它作为后台任务吗?我尝试了 nohup 但没有成功。

:

Process started with Runner, even if you add nohup and & at the end, is marked with process group ID.
When the job is finished, the Runner is sending a kill signal to the whole process group.
So any process started directly from CI job will be terminated at job end.

如果您控制目标服务器,则使用 systenter code hereemd 服务(如此 )仍然是一种选择。

在 VonC 的帮助下 - 这是我采用的方法。

我使用 Alpine Linux 与他提供的 link 略有不同,但方法相同。

我在 /etc/init.d 中创建了一个文件并赋予了它 chmod +x 权限。

内容如下:

#!/sbin/openrc-run

command="php /var/www/artisan queue:listen"
command_args="--timeout=0"
command_background=true
pidfile="/run/${RC_SVCNAME}.pid"

然后我 运行 它与 gitlab-ci 配置文件中的 rc-service laravel-queue start