【问题标题】:How can I run background tasks in Gitlab CICD?如何在 Gitlab CI CD 中运行后台任务?
【发布时间】:2023-02-23 23:17:53
【问题描述】:

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

例如,我想运行:

php artisan queue:listen --timeout=0 &

问题是构建会永久运行,并且在等待此命令的结果时不会完成(即使此命令永远不会完成)。

无论如何我可以将它作为后台任务运行吗?我试过 nohup 没有运气。

【问题讨论】:

    标签: php laravel gitlab


    【解决方案1】:

    作为mentioned here

    以Runner启动的进程,即使你在末尾加上nohup&,也标有进程组ID。
    作业完成后,Runner 会向所有的进程组。
    因此,任何直接从 CI 作业启动的进程都将在作业结束时终止。

    如果您控制目标服务器,则使用 systemd 服务(如 same page 中所示)仍然是一个选项。

    【讨论】:

      【解决方案2】:

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

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

      我在/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 运行它。

      【讨论】:

        猜你喜欢
        • 2022-08-14
        • 2020-10-27
        • 1970-01-01
        • 2021-11-28
        • 1970-01-01
        • 2021-09-13
        • 1970-01-01
        • 1970-01-01
        • 2021-08-21
        相关资源
        最近更新 更多