インテージテクノスフィア技術ブログ

株式会社インテージテクノスフィアの社員達がシステム開発や仕事に関する技術情報を随時掲載いたします

Jenkinsおにいさんになりました

こんにちは。インテージテクノスフィア技術探求委員アイダです。当社ブログは基本毎週木曜日に投稿しておりましたが、先週ブログの投稿がなくてお休みしたんです。そういうこともあるよねーとアイダは思っておりました。

ところが「今週の投稿が無いじゃん!」と気づいてくれた ビジネスインテリジェンス第一本部 健康情報サービス部のMさん、連絡くれてすぐに投稿が届きました。

今回はそんなジェントルマンなMさんがゴールデンウイークに取得した「Certified Jenkins Engineer」についての投稿です。ではMさん宜しくお願い致します。

はじめに

こんにちは。健康情報サービス部のMです。今年は異例のゴールデンウイークになったと思いますが、いかがお過ごしでしたか? 私は初日に坊主にしました。異例です。プロジェクトに失敗した訳でも失恋した訳でもないので心配しないでください。元気です。

もうひとつ、ゴールデンウイークの出来事ですが「Certified Jenkins Engineer」を取得しました。

卓越した知識や技術を持つ人を○○おじさんと呼びますが(そんなことはない?)、まだまだ私は駆け出しのため、Jenkinsおにいさんになったということです。 JenkinsおじさんだとJenkins自身と紛らわしいですしね。

そこで、今回は私の受験体験記をご紹介します。以下の点に注意して読んでいただければ幸いです。

  • 発展的な内容やTIPSはなく入門レベルの話です。職人の皆様には稚拙な内容かもしれませんが、Jenkinsのような笑顔でニコニコと見守ってください
  • Jenkinsの資格試験をお題にしつつまとまりのない話をするため、Jenkinsに興味がない人も読める内容だと思います

Jenkinsとは

「継続的インテグレーション(CI)」はビルドやテスト、デプロイを自動化して高頻度で統合することにより、バグをの早期発見やリリース速度の向上を目的とした開発手法であり、Jenkinsはそれを実践するためのソフトウェアです。

適切なツールを適切なタイミングで使い、即座にメールやSlackまたはランプなどの物理デバイスでフィードバックしてくれます。 Jenkinsの特徴としては下記のようなところでしょうか。

- システム面 機能面
汎用性 WindowsでもLinuxでもJavaが動けばどこでも動く ビルドやテストに限らず様々な種類・言語のスクリプトを実行できる
拡張性 分散ビルドが可能でスケールアウトが容易 豊富なプラグインを持ち機能追加や外部ツールとの連携ができる

汎用性と拡張性の点から、アジャイルな開発に限らずJenkinsが活躍する場面は様々かと思います。 一例として私のチームでは顧客毎にWebアプリを頻繁に構築するため、その際の「ビルド・デプロイ」を自動化しています。JenkinsのREST APIを用いて内部向けのWebページからキックしたりと、Webアプリ構築が簡単になり工数削減に繋がっています。

受験の動機

Jenkins実践入門 によると

gihyo.jp

ちなみにJenkinsとは、イギリス人の執事をイメージした名前です。この名前には「Jenkinsがプロジェクトの一員として、執事のように振る舞い、ビルドを実行したり、ビルドレポートを作成してくれる」という思いが込められています。Jenkinsの全身であるHudsonも執事をイメージした名前です。

とのことです。指揮者だけでなく執事でもあるようです。

Jenkinsをお使いのみなさん、お宅の執事の活躍ぶりはいかがでしょうか?

先ほど一例を挙げた通り、私のチームでもJenkinsを利用していますが、活用までは至っていません。マルチクライアント型のサービスを提供しているため、顧客は増えていくのですが、増えるたびに苦しくなっているのが現状です。

今後のサービス拡大に向けて、彼にも自動化の中心として躍動してもらわないと困ります。そこで、まずは体系的な知識の獲得になればと思い受験を決めました。

試験概要

Enterprise版のJenkinsを提供するCloudBees社が主催する試験で下記2種類の区分があります。

  • Certified Jenkins Engineer (CJE)
  • Certified CloudBees Jenkins Engineer (CCJE)

私はOSS版のJenkinsを対象としたCJE試験を受験しました。CCJE試験ではEnterprise版のJenkinsに関する知識も問われます。以下は全てCJE試験についての記述となります。

  • 試験時間:90分
  • 設問  :60問選択形式(複数選択あり)
  • 受験料 :150USD(自宅受験は99USD)
  • 出題分野:下記表参照
カテゴリ 出題数 割合
Jenkins Fundamentals 10問 17%
Jenkins Administration 25問 42%
Jenkins Build Technologies - Pipeline 18問 30%
Jenkins Build Technologies - Freestyle 7問 11%

合格基準:66%以上の得点

試験は全て英語になります。長文を読む訳ではなく、単語も技術用語・Jenkins 用語が中心のためそこまで苦労はしないはずです。

試験の詳細や例題についてはCertification Guide and Information を参照してください。

standard.cbu.cloudbees.com

学習方法

私が実際に学習した方法も共有しておきます。試験を受けるつもりはなくても「 Jenkins に興味がある」という方のお役に立てればと。

1. 「Jenkins実践入門」を読む

[改訂第3版]Jenkins 実践入門 ―ビルド・テスト・デプロイを自動化する技術

gihyo.jp

EC2でサーバー立ててハンズオンで読み進めました。サクッと読めて面白かったです。

「必要になった時に必要な部分だけ勉強する」という遅延評価勉強法のように、ググってつまみ食いをするのも実践的な手段だと思いますが、こういう本を読んで歴史やバックグラウンドを知ることにも楽しさがあります。

lukesilvia.hatenablog.com

読んだ内容を覚えていられないので結局ググる訳ですが、キーワードを知っているだけでも上手にググれたりします。今回の Jenkins の体系的な知識の獲得というのも、ググるためのインデックス構築みたいなイメージです。

2. Jenkinsで遊ぶ

個人開発のプロジェクトでデプロイを自動化してみました。

No 担当 ジョブ
1 GitHubのdevelopへpush
2 GitHub WebhookでJenkinsへ通知
3 Jenkins ブランチの判断
4 Jenkins 自動テスト+Slack通知
5 Jenkins masterへmerge+Slack通知
6 GitHub WebhookでHerokuへ通知
7 Heroku デプロイ+Slack通知

Draw.ioを使って連携図を書いてみました。

3. CloudBees University を受講する

CloudBees University: Jenkins - Fundamentals
https://standard.cbu.cloudbees.com/cloudbees-university-jenkins-fundamentals

CloudBees University: Jenkins Administration - Fundamentals https://standard.cbu.cloudbees.com/cloudbees-university-jenkins-administration-fundamentals

CloudBees University: Jenkins Pipeline - Fundamentals https://standard.cbu.cloudbees.com/cloudbees-university-jenkins-pipeline-fundamentals

公式推奨の教材です。CloudBeesへのアカウント登録が必要になりますが、試験に合格するためであればオススメします。公式推奨とはそういうことです。

スライド形式の資料に加えて Vagrant + VirtualBoxで実際に動かすことができます。1コース8hとなっていますがそれぞれ3hほどで終えることができました。

BlueOcean(JenkinsのUXをモダンでシンプルにするプラグイン)ベースで説明しているところが特徴的なのと、英語のリハビリになったかなという感じです。試験を受けないのであればオススメしません。

所感

詳細についてはお伝えできませんが、試験は広く浅くといった印象でした。

今回の学習方法では手を動かすことが多く、試験勉強自体がためになったため、合否はどちらでもよかったのかもしれませんね。

そのため受験(のための学習)はオススメです。私のような初学者だけでなく既にJenkinsを活用している人でも、学習の過程で意外な機能に出会えたりするかも…?

おわりに

記事の中でググることについて書きましたが、社内でググる力も大事だと考えています。「あの人に、あの部署に聞けば分かる」と知っておくといつか役に立つかもしれません。 そのためには些細なことでもブログを通して知識を、技術を共有していければと思います。