You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过Curl触发远程Jenkins参数化构建时参数传递异常排查

问题:跨Jenkins实例触发参数化构建时参数传递异常

场景说明

我维护两个Jenkins实例,需求是Jenkins1构建完成后,自动触发Jenkins2上的参数化构建——Jenkins2的构建会调用Ansible Playbook执行SVN更新,需要用户输入三个参数:

  • String类型参数:USER(SVN用户名)
  • Password类型参数:PASS(SVN密码)
  • String类型参数:REVISION(SVN版本号)

配置与问题现象

  1. Jenkins1的Post Build触发脚本(已能成功触发Jenkins2构建):
curl POST http://JENKINS2:8080/job/test/buildWithParameters \
  --user user:token \
  --data "REVISION=$REVISION" \
  --data "USER=$USER" \
  --data "PASS=$PASS"
  1. 异常表现:Jenkins2的构建日志里,参数被替换成了随机编码字符串,而非实际传入的值:
/usr/bin/ansible-playbook test.yml -f 5 --private-key /tmp/ssh.key -u jenkins \
  -e user={AQAAABAAAAAQdPfG8ioIGy+FX2QsIG/P/SS5O5YIEmnUK/8l/jKF8Ac=} \
  -e ******** \
  -e revision={AQAAABAAAAAQPhzpgyl6n5lTlOcOFzy8yr8F8AvvoPNM0BKklbYa81w=}

排查过程

  • 一开始以为是curl的参数编码问题,试了--data-url-encode参数,没用。
  • 因为用的是AD认证,不同用户发起构建且密码每40天强制更换,没法用Jenkins凭证插件存凭证,必须每次手动传参数。

解决方案

问题根本不在curl请求,而是Jenkins2的Ansible额外变量配置错误:
之前配置额外变量时,值字段留空了,Jenkins自动生成了随机字符串当默认值。把额外变量的键值对改成下面这样就解决了:

  • 键:user,值:$USER
  • 键:pass,值:$PASS
  • 键:revision,值:$REVISION

修改后参数能正常传递,构建日志显示的就是实际输入的参数值了。

内容的提问来源于stack exchange,提问作者loonar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 09:40:10