如何远程触发Jenkins构建并传递参数

Exp*_*ing 59 continuous-integration continuous-deployment jenkins continuous-delivery

我使用以下方法远程调用Jenkins作业:

wget http://<ServerIP>:8080/job/Test-Jenkins/build?token=DOIT
Run Code Online (Sandbox Code Playgroud)

这里Test-Jenkins调用了job,它DOIT是我使用过的安全令牌.

现在我需要将一些参数传递给此作业的build.xml文件,即Test-Jenkins.

我还没有弄清楚如何传递变量.

Pet*_*tze 69

请参阅Jenkins文档:参数化构建

以下是您感兴趣的行:

http://server/job/myjob/buildWithParameters?token=TOKEN&PARAMETER=Value
Run Code Online (Sandbox Code Playgroud)

  • 但它触发了构建.你需要实际进行POST调用.我想为人们提供默认参数值的链接,例如GET http:// <ServerIP>:8080/job/Test-Jenkins/build?some_param = xyz应该打开一个some_param设置为值xyz的网页.然后使用可以按"Build". (4认同)
  • 有没有处理帖子的插件?我想要一个用户链接,然后单击以一键触发特定的参数化构建作业 (2认同)

Zac*_*olz 55

要使用自己的/自定义参数触发构建,请调用以下URL(使用POST或GET):

http://JENKINS_SERVER_ADDRESS/job/YOUR_JOB_NAME/buildWithParameters?myparam=myparam_value
Run Code Online (Sandbox Code Playgroud)

然后在Jenkins作业配置中,勾选名为" This build is parameterized" 的框,单击" Add Parameter"按钮并选择" String Parameter"下拉值.

现在定义您的参数 - 示例:

在此输入图像描述

现在,您可以在作业/构建管道中使用您的参数,例如:

在此输入图像描述

  • 最新的詹金斯文档表示,出于安全原因,GET已经过折旧,因此应首选POST. (5认同)
  • 我的网址中缺少“工作”。 (2认同)

Mon*_*pit 9

要补充这个问题,我发现您不必使用端点/buildWithParameters

在我的场景中,我有一个脚本可以触发 Jenkins 在部署后运行测试。其中一些测试需要有关部署的额外信息才能正常工作。

/buildWithParameters如果我尝试在不需要参数的作业上使用,该作业将不会运行。我不想进入并编辑每个作业以需要假参数只是为了让作业运行。

相反,我发现你可以像这样传递参数:

curl -X POST --data-urlencode "token=${TOKEN}" --data-urlencode json='{"parameter": [{"name": "myParam", "value": "TEST"}]}' https://jenkins.corp/job/$JENKINS_JOB/build
Run Code Online (Sandbox Code Playgroud)

这样,每当进行调用时,它都会将带有值的json=...参数传递给作业。但是,即使 Jenkins 作业不需要参数 ,它仍然会运行。myParamTESTmyParam

唯一不涵盖的情况是作业是否有一个未在json. 即使作业为参数设置了默认值,也将无法运行作业。在这种情况下,当您调用时,您将遇到以下错误消息/堆栈跟踪/build

java.lang.IllegalArgumentException: No such parameter definition: myParam

我意识到这个答案已经晚了几年,但我希望这对其他人来说可能是有用的信息!

注意:我使用的是 Jenkins v2.163