我正在使用以下方法远程调用 Jenkins 作业:
wget http://<ServerIP>:8080/job/Test-Jenkins/build?token=DOIT
这里Test-Jenkins
调用了作业,并且DOIT
是我使用的安全令牌。
现在我需要将一些参数传递给这个作业的 build.xml 文件,即Test-Jenkins
。
我还没有弄清楚如何传递变量。
我正在使用以下方法远程调用 Jenkins 作业:
wget http://<ServerIP>:8080/job/Test-Jenkins/build?token=DOIT
这里Test-Jenkins
调用了作业,并且DOIT
是我使用的安全令牌。
现在我需要将一些参数传递给这个作业的 build.xml 文件,即Test-Jenkins
。
我还没有弄清楚如何传递变量。
请参阅 Jenkins 文档:参数化构建
以下是您感兴趣的行:
http://server/job/myjob/buildWithParameters?token=TOKEN&PARAMETER=Value
在您的 Jenkins 作业配置中,勾选名为“ This build is parameterized
”的框,单击“ Add Parameter
”按钮并选择“ String Parameter
”下拉值。
现在定义您的参数 - 示例:
现在您可以在工作/构建管道中使用您的参数,例如:
接下来要使用 own/custom 参数触发构建,调用以下 URL(使用 POST 或 GET):
http://JENKINS_SERVER_ADDRESS/job/YOUR_JOB_NAME/buildWithParameters?myparam=myparam_value
为了补充这个问题,我发现您不必使用/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
有了这个json=...
,它会在调用时将myParam
带有值的参数传递给作业。TEST
但是,即使不期望参数 Jenkins 作业仍将运行myParam
。
这不包括的唯一情况是,如果作业具有未在json
. 即使作业为参数设置了默认值,它也将无法运行作业。在这种情况下,您将在调用时遇到以下错误消息/堆栈跟踪/build
:
java.lang.IllegalArgumentException: No such parameter definition: myParam
我意识到这个答案已经晚了几年,但我希望这对其他人来说可能是有用的信息!
您可以简单地使用 jenkinsfile 进行尝试。使用以下管道脚本创建 Jenkins 作业。
pipeline {
agent any
parameters {
booleanParam(defaultValue: true, description: '', name: 'userFlag')
}
stages {
stage('Trigger') {
steps {
script {
println("triggering the pipeline from a rest call...")
}
}
}
stage("foo") {
steps {
echo "flag: ${params.userFlag}"
}
}
}
}
手动构建一次作业以对其进行配置 & 只需为 Jenkins 作业创建一个 http POST 请求,如下所示。
格式是http://server/job/myjob/buildWithParameters?PARAMETER=Value
curl http://admin:test123@localhost:30637/job/apd-test/buildWithParameters?userFlag=false --request POST
要传递/使用变量,首先在 Jenkins 的配置部分创建参数。您使用的参数可以是文本、字符串、文件等类型。
创建它们后,在您想要的字段中使用变量引用。
例如:我为 和 配置/创建了两个变量Email-subject
,Email-recipentList
并且我在EMail-ext
插件中使用了它们的引用(附截图)。
当我们必须向 jenkins 作业发送多个触发参数时,以下命令有效。
curl -X POST -i -u "auto_user":"xxxauthentication_tokenxxx" "JENKINS_URL/view/tests/job/helloworld/buildWithParameters?param1=162¶m2=store"
您可以使用以下查询远程触发 Jenkins 构建并传递参数。
JENKINS_URL/job/job-name/buildWithParameters?token=TOKEN_NAME¶m_name1=value¶m_name1=value
JENKINS_URL
(可以)=https://<your domain name or server address>
TOKE_NAME
可以使用配置选项卡创建
curl -H "Jenkins-Crumb: <your_crumb_data>" -u "<username>:<password>" "http://<your_jenkins_url>?buildWithParameters?token=<your_remote_api_name>?<parameterA>=<val_parameter_A>&<parameterB>=<val_parameterB>"
您可以根据需要更改以下参数:
<your_crumb_data>
<username>
<password>
<your_jenkins_url>
<your_remote_api_name>
<parameterA>
<parameterB>
<val_parameter_A>
<val_parameter_B>
注意:放置双引号可能很关键。请集中注意。