如何从Jenkins向Rundeck传递构件名称?传参触发作业遇阻
解决Jenkins触发Rundeck作业时BUILD_NUMBER参数传递失效的问题
我之前在整合Jenkins和Rundeck时也碰到过类似的参数传递坑,咱们从几个核心点入手排查和解决:
1. 确认Rundeck参数的正确传递格式
Rundeck接收外部参数时,必须遵循 option.选项名称=参数值 的格式,而非你尝试的 option=BUILD_NUMBER。你需要先核对Rundeck作业里的选项配置:
- 打开Rundeck作业的配置页,找到那个关联Jenkins构件的URL选项,查看它的Name字段(比如如果选项命名为
buildNumber,那参数应该写成option.buildNumber=$BUILD_NUMBER)。 - 如果你的选项名称就是
BUILD_NUMBER,那正确的参数写法是option.BUILD_NUMBER=$BUILD_NUMBER。
2. 检查Rundeck选项是否允许手动输入
你的URL选项是从Jenkins动态拉取构建号列表,但如果Rundeck设置了仅允许从下拉列表选择,直接传值会被拦截:
- 进入Rundeck作业的选项配置界面,找到该URL选项,确保「Allow Manual Entry(允许手动输入)」的开关是打开的。
- 这个设置默认通常是关闭的,只允许选列表里的值,所以你手动传递的BUILD_NUMBER会被判定为无效值。
3. 验证Jenkins的触发配置
如果你用Jenkins的Rundeck插件触发:
- 在Jenkins的构建步骤中,找到「Trigger Rundeck Job」配置项,在「Job Options」区域添加键值对:
- Key:填Rundeck里的选项名称(比如
BUILD_NUMBER) - Value:填
${BUILD_NUMBER}(Jenkins自带的环境变量)
- Key:填Rundeck里的选项名称(比如
- 别直接在URL里拼接参数,插件会自动处理参数映射逻辑。
如果你用API/curl脚本触发:
如果是通过Jenkins的shell脚本调用Rundeck API,确保请求格式正确,示例如下:
curl -X POST "https://your-rundeck-server.com/api/40/job/[JOB_ID]/run" \ -H "X-Rundeck-Auth-Token: [YOUR_RUNDECK_TOKEN]" \ -H "Content-Type: application/x-www-form-urlencoded" \ --data "option.BUILD_NUMBER=${BUILD_NUMBER}"
记得替换[JOB_ID]和[YOUR_RUNDECK_TOKEN]为实际值,参数部分必须严格用option.选项名的格式。
4. 查看Rundeck执行日志定位问题
如果还是没解决,去Rundeck的执行日志里找线索:
- 触发作业后,进入Rundeck的「Executions」页面,查看该次执行的日志,看是否有类似
Invalid option value for 'BUILD_NUMBER'的错误提示,这能帮你快速判断参数是否被正确接收或验证失败。
内容的提问来源于stack exchange,提问作者user7802257
相关产品推荐
相关产品推荐

