「ねえGoogle、Jenkins2から登場したPipelineを試してみて」
「Alexa、Jenkins2から登場したJenkinsFileも試してみて」
ちなみにこの記事内容は、APIやPipelineの内容考えるところから含めて8時間くらい費やし、完成には至らず。
もっと時間を作れれば良かった。。。計画性のなさを反省。
まずはJenkinsをインストール Jenkins
Jenkins2より追加されたBlue Oceanも使ってみた
Easy!! Cool!!
Pipelineを登録してBlue Oceanで見るとこんな感じ。
まずは”JenkinsのJobで実行するPipelineをGitHub Repository管理”を試してみた。
今回はRestなAPIのアプリをテストしてビルドしてデプロイするPipelineを作成(したかった)。
Chocolateの材料を渡すと”success”と返却するAPI
Spring Initializrでapplication作ってSwaggerFoxでAPI仕様を生成
Jenkins Jobの設定などは、ググるといい感じの記事がたくさん出てきた。(ページ下部のReferencesをご覧ください)
完成形のPipelineはこちら。
実行中はこんな感じ。
実際のPipelineの内容はこちら。
def gitUrl = "https://github.com/c417-jenkins/chocolate-factory.git" |
def targetBranch = "master" |
node { |
stage("checkout git") { |
dir("${WORKSPACE}") { |
git url: "${gitUrl}", branch: "${targetBranch}", credentialsId: "${ChocolateJenkins}" |
sh "ls -la" |
} |
} |
stage("Lint") { |
dir("${WORKSPACE}") { |
println("TODO: Add lint") |
} |
} |
stage("Unit Test") { |
dir("${WORKSPACE}") { |
withMaven( maven: "M3") { |
sh "mvn test" |
} |
} |
} |
stage("build") { |
dir("${WORKSPACE}") { |
withMaven( maven: "M3") { |
sh "mvn install" |
} |
} |
} |
stage("Integration Test") { |
dir("${WORKSPACE}") { |
println("TODO: integration test") |
} |
} |
stage("deploy") { |
println("deploy delicious chocolate!!") |
} |
} |
トリッキーなことをしない限り大抵の書き方が、ネットの至る所に転がっている。ありがたい。
ただ、ご覧の通り・・・Stage内容は実装時間が足りなかった。。きっとクリスマスまでには出来ているはず!!
GitHub Repository(今回はChocolate FactoryのRepository)に JenkinsFile を配置すると、JenkinsさんがPipelineを実行してくれる。
Pipelineの内容はほぼ同じで実施。Pipelineの挙動はもちろん同じ。
ちなみにBlue OceanでPipelineを作成すると超簡単!フローに沿って進めるとあっという間にJenkinsFileを作ってくれた。
JenkinsFileは超簡単で感動、ソースと共に管理できるって素晴らしい。そしてBlue Oceanイケてる。
また、PipelineをGitHub Repositoryに集約することで、stageの内容をmodule化して使い回せる。
実際にプロジェクトで使うとしたら、、
- ブランチ戦略と合わせてJenkinsFileのPipeline作成
- リリースのCI/CDはGitHub Repository管理して使いまわす
- stageのバリエーションを増やすことで必要なstageが可視化され、対象に合わせたstageの実施スコープを網羅できそう
改めて自身のプロジェクトのCI/CDを見直ししたくなった。
JenkinsFileでどこまでやるか、Pipelineで実現できることはもっとないか、
そもそも今のプロジェクトに適したPipelineを作れているか、、
もっとjenkins2を使いこなしたい!
そしておいしいチョコレートを皆さんにデプロイできるその日までお楽しみに!
Chocolate Application chocolate-factory