Jenkinsfileをメンテナンスし続ける自信がないので、Jenkinsfileをパイプラインの定義のみで使うようにしました。 定義したパイプラインの各ステップは、Makefileのターゲットに対応させるとメンテナンスし易くなります。
パイプラインの定義
パイプラインは、下記のように定義します。
ステージと同じ名前のターゲットをMakefile
に定義すると、開発するときにmakeコマンドで実行した処理がJenkinsのビルドでも同じように利用されます。
makeコマンドをantやmavenなどに入れ替えれば、他かの開発でも応用が利きます。
ステージ | 処理 |
---|---|
setup | ビルドに必要な環境をセットアップ |
build | ビルド |
test | テストは、単体テストと結合テストを並列で実行 |
deploy | デプロイ |
Jenkinsのパイプラインジョブで実行するとこんな感じになります。
Jenkinsfileの定義
pipeline { agent any environment { branch = 'master' scmUrl = 'git@bitbucket.org:***/***.git' } stages { stage('setup') { steps { sh: 'make setup' } } stage('checkout git') { steps { print "checkout" git credentialsId: credentialId, url: scmUrl } } stage('build') { steps { sh 'make' } } stage ('test') { steps { parallel ( "unit tests": { sh 'make test' }, "integration tests": { sh 'make integration-test' } ) } } stage('deploy'){ steps { sh 'make deploy' } } } }
Makefileの定義
all: build build: echo build test: echo test integration-test: echo integration-test deploy: echo deploy setup: echo setup