如何在 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 here
emd 服务(如此 )仍然是一种选择。
在 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
。
如何在 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 here
emd 服务(如此
在 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
。