私はJenkins Pipelineジョブを持っています。ジョブ間の唯一の違いはパラメーター、単一の「名前」値です。複数ブランチのジョブ名を使用することもできます(ただし、ブランチ名であるJOB_NAMEとして渡されているものではありませんが、残念ながらenvsは解析せずに適切に見えます)。これをJenkinsfileの外側に設定できればすばらしいと思います。それから、同じjenkinsfileをさまざまなジョブすべてに再利用できるからです。
基本的には jenkins共有ライブラリ サンプル名myCoolLib
を作成し、 vars の下の1つのファイルに完全な宣言的パイプラインを設定する必要があります。ファイルmyFancyPipeline.groovy
を呼び出すとしましょう。
私の例を書きたかったが、実際には ドキュメントはかなりいい なので、そこからコピーします。最初にmyFancyPipeline.groovy
def call(int buildNumber) {
if (buildNumber % 2 == 0) {
pipeline {
agent any
stages {
stage('Even Stage') {
steps {
echo "The build number is even"
}
}
}
}
} else {
pipeline {
agent any
stages {
stage('Odd Stage') {
steps {
echo "The build number is odd"
}
}
}
}
}
}
それを使用するJenkinsfile(現在は2行あります)
@Library('myCoolLib') _
evenOrOdd(currentBuild.getNumber())
ここのパラメーターは明らかにint型ですが、任意の型の任意の数のパラメーターにすることができます。
私はこのアプローチを使用しており、3つのパラメーター(2つの文字列と1つのint)を備えたグルーヴィーなスクリプトの1つと、共有ライブラリを介してそのスクリプトを使用する15〜20のJenkinsfileがあり、完璧です。もちろん、動機はプログラミングの最も基本的なルールの1つです(引用ではなく、次のようになります):2つの異なる場所に「同じコード」がある場合、何かが正しくありません。
これをJenkinsfileに追加します。
properties([
parameters([
string(name: 'myParam', defaultValue: '')
])
])
次に、ビルドが1回実行されると、ジョブUIに「パラメーターを使用してビルド」ボタンが表示されます。
そこで、必要なパラメータ値を入力できます。
パイプラインスクリプトでは、params.myParam
で参照できます。
オプションがありますこのプロジェクトはパラメーター化されていますパイプラインジョブ構成にあります。必要に応じて、変数名とデフォルト値を記述します。パイプラインでenv.variable_name
を使用してこの変数にアクセスします