Jenkins2のPipelineの運用方法2つ試してみた

この記事は 『CRESCO Advent Calendar 2017』 9日目の記事です。

VPA関連を書こうと思ったけれど、他の人と被りまくりそうな気がするので回避。

「ねえGoogle、Jenkins2から登場したPipelineを試してみて」
「Alexa、Jenkins2から登場したJenkinsFileも試してみて」

ちなみにこの記事内容は、APIやPipelineの内容考えるところから含めて8時間くらい費やし、完成には至らず。
もっと時間を作れれば良かった。。。計画性のなさを反省。

Jenkins install


まずはJenkinsをインストール Jenkins
Jenkins2より追加されたBlue Oceanも使ってみた:star:
Easy!! Cool!!

Pipelineを登録してBlue Oceanで見るとこんな感じ。

その1: PipelineをGitHub Repository管理


まずは”JenkinsのJobで実行するPipelineをGitHub Repository管理”を試してみた。
今回はRestなAPIのアプリをテストしてビルドしてデプロイするPipelineを作成(したかった)。

REST API application(Chocolate Factory)


Chocolateの材料を渡すと”success”と返却するAPI
Spring Initializrでapplication作ってSwaggerFoxでAPI仕様を生成

 

Pipeline Flow(テストしてビルドしてデプロイする)


Jenkins Jobの設定などは、ググるといい感じの記事がたくさん出てきた。(ページ下部のReferencesをご覧ください)

完成形のPipelineはこちら。

実行中はこんな感じ。

 

実際のPipelineの内容はこちら。

chocolate_pipeline.groovy

トリッキーなことをしない限り大抵の書き方が、ネットの至る所に転がっている。ありがたい。

ただ、ご覧の通り・・・Stage内容は実装時間が足りなかった。。きっとクリスマスまでには出来ているはず!!

 

その2: 対象ソースのGitHub Repository内でPipelineをJenkinsFile管理


GitHub Repository(今回はChocolate FactoryのRepository)に JenkinsFile を配置すると、JenkinsさんがPipelineを実行してくれる。

Pipelineの内容はほぼ同じで実施。Pipelineの挙動はもちろん同じ。

ちなみにBlue OceanでPipelineを作成すると超簡単!フローに沿って進めるとあっという間にJenkinsFileを作ってくれた。

 

二つのPipelineを試してみて感じたこと


JenkinsFileは超簡単で感動、ソースと共に管理できるって素晴らしい。そしてBlue Oceanイケてる。

また、PipelineをGitHub Repositoryに集約することで、stageの内容をmodule化して使い回せる。

実際にプロジェクトで使うとしたら、、

  • ブランチ戦略と合わせてJenkinsFileのPipeline作成
  • リリースのCI/CDはGitHub Repository管理して使いまわす
  • stageのバリエーションを増やすことで必要なstageが可視化され、対象に合わせたstageの実施スコープを網羅できそう

おわりに


改めて自身のプロジェクトのCI/CDを見直ししたくなった。

JenkinsFileでどこまでやるか、Pipelineで実現できることはもっとないか、

そもそも今のプロジェクトに適したPipelineを作れているか、、

もっとjenkins2を使いこなしたい!

そしておいしいチョコレートを皆さんにデプロイできるその日までお楽しみに!

 

This GitHub Repository


今回のソースコードはこちら。

Groovyで書いたPipeline chocolate-pipeline

Chocolate Application chocolate-factory

 

References


参考にさせていただいた記事はこちら。

Using a Jenkinsfile

Pipeline Maven Plugin

Jenkinsの設定を最小限でJenkinsfile(Pipeline)を使う

使ってみよう!Jenkins 「Pipeline」

 

  • このエントリーをはてなブックマークに追加