我正在将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映像?