簡體   English   中英

如何遠程觸發Jenkins構建並傳遞參數

[英]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

在您的 Jenkins 作業配置中,勾選名為“ This build is parameterized ”的框,單擊“ Add Parameter ”按鈕並選擇“ String Parameter ”下拉值。

現在定義您的參數 - 例如:

在此處輸入圖片說明

現在您可以在作業/構建管道中使用您的參數,例如:

在此處輸入圖片說明

接下來使用自己的/自定義參數觸發構建,調用以下 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=... ,每當進行調用時,它都會將值為TEST的參數myParam傳遞給作業。 但是,即使 Jenkins 作業不期望參數myParam它仍然會運行。

唯一未涵蓋的情況是作業是否具有未在json傳遞的參數。 即使作業為該參數設置了默認值,它也將無法運行該作業。 在這種情況下,您將在調用/build時遇到以下錯誤消息/堆棧跟蹤:

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

我意識到這個答案晚了幾年,但我希望這對其他人有用!

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

要傳遞/使用變量,首先在 Jenkins 的配置部分創建參數。 您使用的參數可以是文本、字符串、文件等類型。

創建它們后,在您想要的字段中使用變量引用。

例如:我為Email-subjectEmail-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&param_name1=value&param_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&param2=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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM