本シリーズのトップページ |
---|
https://qiita.com/robozushi10/items/52a393aee1ba57999196 |
概要
パラメータを Pipeline declarative で使用する例.
次のパターンを書き残しておく.
Jenkins バージョンは Jenkins 2.314 である.
1. 文字列パラメータ「NODENAME」を設けて Slave名 1台を入力する
2. 選択肢パラメータ「NODENAME」を設けて Slave名 1台を入力する
3. 文字列パラメータ「NODENAME」を設けて Slave名 1台か全台(all)かを入力する
環境
下記で構築した Master(1台) - Slave(8台) [SSH通信] を使って Pipeline を書いてみる.
(OS は Linux である)
・[シリーズ] docker-compose を使って同一物理マシン上に Jenkins Master(docker) - Slave(docker) [SSH通信]を構築する
コード
1. 文字列パラメータ「NODENAME」を設けて Slave名 1台を入力する
次の (1)(2) を満すこと. 単に(1)のみであれば、パラメータは作成されない.
(1) 下記💚としてパラメータ「NODENAME」を定義する.
(2) 🛑 のように params.NODENAME
としてパラメータ「NODENAME」にアクセスする.
pipeline {
parameters {
string(name: 'NODENAME', defaultValue: '', description: 'ノード名') // 💚
}
agent any
stages {
stage('stage-1') {
steps {
echo "「${params.NODENAME}」が指定されました." // 🛑
}
}
}
}
上記のような実装をすると、
次のように GUI 上にもパラメータが作成されている.
2. 選択肢パラメータ「NODENAME」を設けて Slave名 1台を入力する
pipeline {
parameters {
choice(
name: 'NODENAME',
choices: [
'slave001',
'slave002',
'slave003',
'slave004',
'slave005',
'slave006',
'slave007',
'slave008',
],
description: 'ノード名'
)
}
agent any
stages {
stage('stage-1') {
steps {
echo "「${params.NODENAME}」が指定されました."
}
}
}
}
次のように選択肢パラメータが作成されている.
3. 文字列パラメータ「NODENAME」を設けて Slave名 1台か全台(all)かを入力する
グロバール変数として List型で選択肢を定義しておく.
def List L_NODES = [
'all',
'slave001',
'slave002',
'slave003',
'slave004',
'slave005',
'slave006',
'slave007',
'slave008',
]
pipeline {
parameters {
choice(
name: 'NODENAME',
choices: L_NODES,
description: 'ノード名'
)
}
agent any
stages {
stage('stage-1') {
steps {
script {
N = params.NODENAME
if(N == 'all'){
// all が選択されたら全台で実行する
for(i = 1; i < L_NODES.size(); i++){
N = L_NODES[i]
stage("stage -- ${N}"){
node(N){
echo "コンテナ「${N}」でコマンド hostname を実行します."
sh "hostname"
}
}
}
}
else {
// all 以外の場合は指定された 1台のみで実行する
stage("stage -- ${N}"){
node(N){
echo "コンテナ「${N}」でコマンド hostname を実行します."
sh "hostname"
}
}
}
}
}
}
}
}
以上