🗻

Jenkinsfile あれこれ - Diclarative Pipeline -

2022/09/04に公開約1,700字

はじめに

JenkinsのPipelineのケーススタディなどのあれこれを1ページでまとめるもの。
徐々に深堀りし・書き足して自分のチートシートに仕上げたい。
場合によって長くなるものは切り出すが、こちらにリンクを張って運用する。
なお、基本的にPipelineのSyntaxは「Diclarative Pipeline」となる。

公式ページ

Jenkinsの公式ページは以下。

https://www.jenkins.io/doc/book/pipeline/#pipeline

確かにここに掲載されていることがほとんどなのだが、わかりにくい。
あと、覚えにくいので毎回ググることになる。

ジョブの最後に処理を入れたい

中身は大体stepsの中と同じ内容が書けます。

pipeline {
  agent any
  // omitted...
  post {
    failure {
      // 失敗時
    }
    success {
      // 成功時
    }
  }
}

シェルを複数行に渡って記載する

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

ログインするとコメントできます