🗻
Jenkinsfile あれこれ - Diclarative Pipeline -
はじめに
JenkinsのPipelineのケーススタディなどのあれこれを1ページでまとめるもの。
徐々に深堀りし・書き足して自分のチートシートに仕上げたい。
場合によって長くなるものは切り出すが、こちらにリンクを張って運用する。
なお、基本的にPipelineのSyntaxは「Diclarative Pipeline」となる。
公式ページ
Jenkinsの公式ページは以下。
確かにここに掲載されていることがほとんどなのだが、わかりにくい。
あと、覚えにくいので毎回ググることになる。
ジョブの最後に処理を入れたい
中身は大体stepsの中と同じ内容が書けます。
pipeline {
agent any
// omitted...
post {
failure {
// 失敗時
}
success {
// 成功時
}
}
}
ジョブの継続をユーザーに判断させる(手動承認)(簡易版)
単純に不特定多数のユーザーが応答できて良い場合は以下。
ジョブが閲覧・実行できるユーザーであれば誰でも承認ができる。
pipeline {
agent any
stages {
steps {
input message: "質問するメッセージ", ok: "OKするときの選択肢"
}
}
// omitted...
}
ジョブの継続を特定ユーザーに判断させる(手動承認)
特定のユーザーにジョブの継続を判断させる場合は以下。
指定したユーザーでなければ、承認が行えない。
pipeline {
agent any
stages {
steps {
input(
message: "質問するメッセージ",
ok: "OKするときの選択肢",
submitter: "ユーザーIDを指定。カンマで複数可能"
)
}
}
// omitted...
}
シェルを複数行に渡って記載する
pipeline {
agent any
stages {
steps {
sh '''
echo 1
echo 2
'''
}
}
// omitted...
}
ビルド履歴をN個まで保持する
ビルド履歴を30個までとしたい場合
pipeline {
agent any
options {
buildDiscarder(logRotator(numToKeepStr: '30'))
}
// omitted...
}
N分毎にジョブを実行する
10分毎に起動したい場合は以下
pipeline {
agent any
triggers {
cron('H/10 * * * *')
}
// omitted...
}
GitのCheckoutをWorkspaceのサブディレクトリに行う
// omitted...
stage("Checkout") {
steps {
dir("$WORKSPACE") {
checkout(
[$class: "GitSCM"],
branches: [[name: "$BRANCH_NAME"]],
extensions: [
[
$class: "RelativeTargetDirectory",
relativeTargetDir: "1. !!!sub directory name here!!!"
]
],
userRemoteConfigs: [
[
credentialsId: "2. !!!credentials id here!!!",
url: "3. !!!git repository url here!!!"
]
]
)
}
}
}
番号 | 記載内容 |
---|---|
1 | サブディレクトリ名を指定。環境変数も利用可能 |
2 | GitアクセスのためのCredentialsのIDを指定。Jenkinsの管理画面で確認可能 |
3 | GitのURL |
$WORKSPACE
, $BRANCH_NAME
はデフォルトで利用可能なEnvironmentとなる。
参照する際に、 $WORKSPACE
はそのままでもあまり問題ないが、 $BRANCH_NAME
の方はきちんと意図した指定となっているか気を付けたほうが良い。
終わりに
※間違いなど有りましたらコメントにて指摘をいただけると幸いです。
※間違った情報を拡散して人の時間を無駄に奪わぬよう修正は行います。
Discussion