私はJenkinsジョブをリモートで呼び出しています:
wget http://<ServerIP>:8080/job/Test-Jenkins/build?token=DOIT
ここでTest-Jenkins
ジョブが呼び出され、DOIT
は私が使用したセキュリティトークンです。
ここで、このジョブのbuild.xmlファイルにいくつかのパラメーター、つまりTest-Jenkins
を渡す必要があります。
変数を渡す方法はまだわかりません。
Jenkinsのドキュメントを参照してください:Parameterized Build
興味のある行は次のとおりです。
http://server/job/myjob/buildWithParameters?token=TOKEN&PARAMETER=Value
独自/カスタムパラメータでビルドをトリガーするには、次のURLを呼び出します(POSTまたはGETを使用):
http://JENKINS_SERVER_ADDRESS/job/YOUR_JOB_NAME/buildWithParameters?myparam=myparam_value
次に、Jenkinsジョブ設定で、「This build is parameterized
」という名前のボックスにチェックを入れ、「Add Parameter
」ボタンをクリックして、「String Parameter
」ドロップダウン値を選択します。
パラメータを定義します-例:
これで、ジョブ/ビルドパイプラインでパラメーターを使用できます。例:
変数を渡す/使用するには、まずJenkinsのconfigureセクションでパラメーターを作成します。使用するパラメーターは、テキスト、文字列、ファイルなどのタイプにすることができます。
それらを作成した後、目的のフィールドで変数参照を使用します。
例:Email-subject
およびEmail-recipentList
の2つの変数を構成/作成し、EMail-ext
プラグインで参照を使用しました(添付のスクリーンショット)。
この質問に追加するには、/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
とともにジョブに渡します。ただし、パラメータmyParam
を予期していなくても、Jenkinsジョブは引き続き実行されます。
これが対象としない唯一のシナリオは、ジョブに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