[英]How to trigger Jenkins builds remotely and to pass parameters
我正在使用以下方法遠程調用 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
為了補充這個問題,我發現您不必使用/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=...
,每當進行調用時,它都會將值為TEST
的參數myParam
傳遞給作業。 但是,即使 Jenkins 作業不期望參數myParam
它仍然會運行。
唯一未涵蓋的情況是作業是否具有未在json
傳遞的參數。 即使作業為該參數設置了默認值,它也將無法運行該作業。 在這種情況下,您將在調用/build
時遇到以下錯誤消息/堆棧跟蹤:
java.lang.IllegalArgumentException: No such parameter definition: myParam
我意識到這個答案晚了幾年,但我希望這對其他人有用!
要傳遞/使用變量,首先在 Jenkins 的配置部分創建參數。 您使用的參數可以是文本、字符串、文件等類型。
創建它們后,在您想要的字段中使用變量引用。
例如:我為Email-subject
和Email-recipentList
配置/創建了兩個變量,並且我在EMail-ext
插件中使用了它們的參考(附截圖)。
您可以簡單地使用 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}"
}
}
}
}
手動構建一次作業以對其進行配置,只需創建一個 http POST 請求到 Jenkins 作業,如下所示。
格式為http://server/job/myjob/buildWithParameters?PARAMETER=Value
curl http://admin:test123@localhost:30637/job/apd-test/buildWithParameters?userFlag=false --request POST
您可以使用以下查詢遠程觸發 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
當我們必須向 jenkins 作業發送多個觸發參數時,以下命令有效。
curl -X POST -i -u "auto_user":"xxxauthentication_tokenxxx" "JENKINS_URL/view/tests/job/helloworld/buildWithParameters?param1=162¶m2=store"
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>
注意:放置雙引號可能很關鍵。 請注意。
curl -X POST -u Admin:<api_token> http://localhost:8080/job/<job_name>/buildWithParameters\?ColorValue\=sddddsd
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.