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