从UI取消时,优雅地关闭GitLab运行程序

时间:2019-11-20 22:51:26

标签: docker gitlab gitlab-ci-runner

概述

我正在将GitLab CI / CD管道与docker executor一起使用,以检出硬件以使用SSH进行测试,从而阻止了其他用户/进程在会话期间访问。完成后,将为下一个用户释放硬件。如果我在跑步者完成之前cancel工作,则该工作将被杀死并且不允许正常关闭,从而使硬件处于已检出状态。

问题

从跑步者的docker日志中,我可以看到从UI中选择cancel时收到了403错误,但是当我在本地对docker映像运行命令时,它工作正常。例如,从命令行使用docker kill <container-name> --signal=SIGTERM可以正常工作。下面是单击cancel后docker容器中的日志。

Checking for jobs... received                       job=23857 repo_url=*** runner=w7yc61Bu
WARNING: Appending trace to coordinator... aborted  code=403 job=23857 job-log= job-status=canceled runner=w7yc61Bu sent-log=1702-1767 status=403 Forbidden
WARNING: Job failed: canceled                       duration=48.963024553s job=23857 project=21 runner=w7yc61Bu
WARNING: Appending trace to coordinator... aborted  code=403 job=23857 job-log= job-status=canceled runner=w7yc61Bu sent-log=1702-2119 status=403 Forbidden
WARNING: Submitting job to coordinator... aborted   code=403 job=23857 job-status=canceled runner=w7yc61Bu
WARNING: Failed to process runner                   builds=0 error=canceled executor=docker runner=w7yc61Bu

问题

作为gitlab-runner的一些源代码,似乎Cancel的函数实际上什么也不做,issue #3031似乎也很受关注。但是,我强迫我的Dockerfile使用ENTRYPOINT设置为使用dumb-init来通过信号传递给子进程,但是我仍然为如何捕获来自UI的信号而感到困惑。有没有办法公开访问为该工作而旋转的Docker映像?

0 个答案:

没有答案