如何在 shell 命令中发送 Jenkins 版本号作为参数,该命令将在构建结束后执行

Posted

技术标签:

【中文标题】如何在 shell 命令中发送 Jenkins 版本号作为参数,该命令将在构建结束后执行【英文标题】:How to send Jenkins build number as parameter in shell command which will get executed after build ends 【发布时间】:2021-09-11 14:09:02 【问题描述】:

在 Jenkins 构建失败或中止之后,我每次都运行 python 脚本。 在该脚本中,我想传递内部版本号,以便我在脚本中拥有此信息并相应地使用它。

有人可以帮我理解我应该如何将此内部版本号作为参数传递给我的 shell 命令吗?

【问题讨论】:

【参考方案1】:

如果你使用%访问环境变量,你应该使用"Execute Windows Batch Command"。 使用"Execute Windows Batch Command",您可以如下使用:

echo %BUILD_NUMBER%
C:\\Python38\\python.exe C:\\python-workspace\\hello_test.py %BUILD_NUMBER%

如果你想用shell执行,那么你可以使用$作为$BUILD_NUMBER访问

【讨论】:

非常感谢您的回答。但是这个 -> BUILD_NUMBER 真的存在吗,或者我应该把它设置在某个地方? @Marialena 它是一个 Jenkins 环境变量,所以你不必设置它。您可以在以下位置查看所有环境变量列表:http://localhost:8080/env-vars.html/。如果您需要更多信息,请告诉我。 $BUILD_NUMBER 应该为你工作 @Marialena 如果这对你有用,那么请你接受答案 我已经改成你所说的,前面有$,我可以在我的构建的jenkins日志中看到它不起作用:Running script : python.exe sendemail.py LoginOld ABORT $BUILD_NUMBER @Marialena 你能用$BUILD_NUMBER检查吗,你也能在链接http://localhost:8080/env-vars.html/看到环境变量【参考方案2】:

您正在使用 Postbuild Task 插件,它将脚本作为 shell 脚本执行,因此您应该使用 shell 参数语法 $YOUR_PARAM

在您的情况下,只需更新您的代码以使用 $BUILD_NUMBER 而不是 %BUILD_NUMBER%

【讨论】:

我更改了它,但我可以从日志中看到它只打印 $BUILD_NUMBER 而不是实际数字。 最后成功了:%BUILD_NUMBER%。感谢您的帮助。

以上是关于如何在 shell 命令中发送 Jenkins 版本号作为参数,该命令将在构建结束后执行的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Jenkins shell命令复制文件但不包括某些目录[重复]

在 jenkins 中运行命令 shell

在Jenkins管道shell中运行嵌套命令

在Jenkins中配置执行远程shell命令

远程(jenkins)调用shell 不能正常结束

Pybot在Jenkins shell执行中没有看到“which”命令