当命令失败时,如何检查GitLab runner中使用了哪个映像?
我有一个多级CI/CD设置,它使用默认映像(运行程序托管在我的服务器上) 我需要一个阶段来使用特定映像(MQTT客户机发送单个MQTT消息,但这并不重要): 在重新加载阶段之前,一切都会平稳运行:当命令失败时,如何检查GitLab runner中使用了哪个映像?,gitlab,gitlab-ci,gitlab-ci-runner,Gitlab,Gitlab Ci,Gitlab Ci Runner,我有一个多级CI/CD设置,它使用默认映像(运行程序托管在我的服务器上) 我需要一个阶段来使用特定映像(MQTT客户机发送单个MQTT消息,但这并不重要): 在重新加载阶段之前,一切都会平稳运行: Running with gitlab-runner 12.2.0 (a987417a) on srv zN2MsS9q Using Shell executor... Running on srv... Fetching changes... Reinitialized existing Git
Running with gitlab-runner 12.2.0 (a987417a)
on srv zN2MsS9q
Using Shell executor...
Running on srv...
Fetching changes...
Reinitialized existing Git repository in /home/gitlab-runner/builds/zN2MsS9q/0/wsw70-docker/dash/.git/
Checking out 7d19cb65 as master...
Skipping Git submodules setup
$ pub -h mqtt.mudomain -t dash/reload -m "`date`"
bash: line 82: pub: command not found
ERROR: Job failed: exit status 1
pub
在此图像中未被识别为命令。但它确实存在,因为以下命令已成功执行:
docker run --init -it --rm efrecon/mqtt-client pub -h mqtt.mydomain -t dash/reload -m "`date`"
如果我启动bash
并从那里运行pub
,也会成功
所有这些让我想知道imageefrecon/mqtt客户机是否在该阶段实际使用。我怎么能检查呢
额外问题:如果正确使用映像,那么pub
命令会出什么问题?由于正在使用作业输出第3行所述的shell
运行程序,因此efrecon/mqtt客户机
映像不会用于重新加载作业:
使用Shell执行器…
您的运行程序似乎只配置为一个,也应该配置。重新加载作业不使用efrecon/mqtt客户端
映像,因为它使用的是作业输出第3行所述的shell
运行程序:
使用Shell执行器…
您的runner似乎只配置为一个,也应该配置。将完整的文件路径放置到pub
位于.gitlab ci.yml
文件中的位置时会发生什么?ie/usr/local/bin/pub
或它所在的任何地方?@Rekovni:好主意,但错误是相同的(bash:line 82:/usr/local/bin/pub:没有这样的文件或目录
,pub
确实位于/usr/local/bin
)如果将完整文件路径放到.gitlab ci.yml
文件中的pub
位置,会发生什么情况?ie/usr/local/bin/pub
或任何地方?@Rekovni:好主意,但错误是一样的(bash:line 82:/usr/local/bin/pub:没有这样的文件或目录
,pub
确实在/usr/local/bin
)谢谢Stefan。你的回答让我重新思考了我的整个设置——我意识到我正在运行运行runner的主机上可用的命令,根本没有使用docker图像。我会考虑切换到DOCKER执行器,但这将带来一些问题,在访问<代码> DOCKER撰写< /代码>配置我访问通过<代码> -F /代码>开关。谢谢斯特凡。你的回答让我重新思考了我的整个设置——我意识到我正在运行运行runner的主机上可用的命令,根本没有使用docker图像。我会考虑切换到DOCKER执行器,但这将带来一些问题,在访问<代码> DOCKER撰写< /代码>配置我访问通过<代码> -F /代码>开关。
docker run --init -it --rm efrecon/mqtt-client pub -h mqtt.mydomain -t dash/reload -m "`date`"