WEB+DB PRESS plusシリーズ[改訂第3版]Jenkins実践入門
―ビルド・テスト・デプロイを自動化する技術
―ビルド・
2017年5月24日紙版発売
2017年5月24日電子版発売
川口耕介,佐藤聖規 監修,佐藤聖規,和田貴久,新井雄介,米沢弘樹,山岸啓,岩成祐樹 著
A5判/416ページ
定価3,278円(本体2,980円+税10%)
ISBN 978-4-7741-8928-4
書籍の概要
この本の概要
継続的インテグレーションに欠かせないツールであるJenkins。その導入から運用管理までを解説した定番書として大好評の『Jenkins実践入門』が,ついに2系に対応しました。生みの親である川口耕介氏監修のもと,近年の開発環境の変化に合わせて内容を一新。インストールなどの基本から,JUnitによるテストといった内容はもちろんのこと,さまざまなソースコード管理システムとの連携やおすすめプラグインの紹介,さらには認定試験についても説明します。チームの一員として上手に迎えるための実開発のポイントがわかります。
こんな方におすすめ
- CIを取り入れようとしているエンジニア
著者の一言
Jenkinsは,世界中で広く使われている継続的インテグレーションサーバです。拡張性も高く,日本語化も進んでおり,活発なコミュニティもあるお陰で,日本でもJenkinsの認知度は高いと思っています。しかし,実際に現場に適用しようと思った時に,拡張性・自由度の高さがかえって仇になって,「どうしたらいいのかわからない」,という声もよく耳にします。
ソフトウェアを書く作業にはある種の才能,努力,時間が必要ですが,そのソフトウェアという「点」を普及させて実際に世の中の役に立つ「面」に広げるのも別種の才能,努力,時間が必要です。
NTTデータの佐藤さん(当時)のチームに声を掛けていただいたのはそんな時でした。佐藤さんのチームではNTTデータの社内向けに開発環境やプロセスの整備を進めており,Jenkinsもその一環として使ってらっしゃるとのことでした。
本書は,そんな佐藤さんのチームがNTTデータの現場のプロジェクトと日々接する中で培った経験から生まれました。先進的な技術を現場に導入する̶̶実用的な,現場指向の本を生み出すのにこれ以上優れた環境は考えられません。
Jenkinsが世に産声を上げてからはや10年以上,ソフトウェア開発の世界での自動化へのニーズは増える一方です。これにあわせて,継続的デリバリーやDevOpsへの取り組みを支えるためにJenkinsも,Jenkins 2,Pipeline,Blue Oceanといった様々な取り組みを進めています。また,CloudBeesも企業として成長し,企業での組織的な取り組みを助けるという「点を面に広げる」お手伝いをしています。
そういった環境の中で第3版を迎えたこの本が,実際にJenkinsを仕事に組み込む上で役に立つと確信しています。
川口耕介
Jenkins プロジェクトリード
CloudBees, Inc. CTO
本書に関するお知らせ
本書に関連する記事を公開しております。
この書籍に関連する記事があります!
- 世界標準ツールの活用ポイントがわかる!
- 近年のソフトウェア開発の現場では,「迅速に」「正確に」開発が行われることが必要とされています。
目次
第1章 継続的インテグレーションとJenkins
1.1 継続的インテグレーションとは
- 1.1.1 手動ビルドとビルドツールの限界
- 1.1.2 継続的インテグレーションと5つのメリット
- Column 継続的インテグレーションはXPから生まれた
- 1.1.3 継続的インテグレーションの4つの疑問
- 1.1.4 とあるチームの結合テスト
1.2 継続的インテグレーションに必要なもの
- 1.2.1 必要となる6つのツール
- 1.2.2 必要となる2つの機能
1.3 Jenkinsとは
- 1.3.1 Jenkinsの6つのメリット
- 1.3.2 Jenkinsの歴史
- Column Jenkinsコミュニティに参加する3つの方法
第2章 インストールと設定
2.1 Jenkinsをインストールする
- 2.1.1 Windows Server 2016にインストールする
- 2.1.2 CentOSにインストールする
- 2.1.3 Dockerにインストールする
- 2.1.4 Tomcatにインストールする
- Column jenkins.warで簡単起動
- Column Jenkins in the Cloud
2.2 Jenkinsの初期設定
- 2.2.1 ビルド結果をメール通知する
- 2.2.2 JDK/Ant/Maven/Gitを自動的にインストールする
- Column Apacheの後ろでJenkinsを動かそう
- 2.2.3 Jenkins1系から2系へのアップデート
第3章 ジョブを作ってビルドする
3.1 ジョブを作る
- 3.1.1 STEP1. 新規ジョブを作成する
- 3.1.2 STEP2. ソースコード管理システムを設定する
- Column 複数リポジトリからのチェックアウトを指定するには
- 3.1.3 STEP3. ビルド・トリガを設定する
- Column cronの設定書式
- Column GitからJenkinsビルドをトリガーする
- 3.1.4 STEP4. ビルドタスクを設定する
- 3.1.5 STEP5. ビルド後の処理を設定する
- Column クエスチョンマーク
3.2 ビルドして結果を確認する
- 3.2.1 ビルドを実行する2つの方法
- 3.2.2 手動でビルドする
3.3 結果を確認する
- 3.3.1 ビルドの状態を確認する
- 3.3.2 ビルド結果画面を確認する
- 3.3.3 コンソール出力を確認する
- 3.3.4 ジョブを削除する
- Column Jenkinsの便利なショートカット
第4章 本番を想定して開発環境を準備する
4.1 開発を始める前に
- 4.1.1 モデルプロジェクト
- 4.1.2 GitHubにプロジェクトデータを登録する
- Column git-flow/GitHub Flow
- 4.1.3 MavenとJDKを設定する
- Column ビルドツール/JDKを手動でインストールするには
- 4.1.4 Eclipseを準備する
- 4.1.5 プラグインをインストールする
- Column 社外のネットワークに接続するときのHTTP Proxyの設定
4.2 ビルドしてみよう
- 4.2.1 手動でビルドしてみよう
第5章 JUnitでテストする
5.1 ユニットテストを自動化する意味
- 5.1.1 ビルドサーバでも実施するメリット
- 5.1.2 なぜユニットテストを自動化すべきか
- 5.1.3 テストコードを作成する手間がかからないか
5.2 JenkinsでJUnitコードを実行する
- 5.2.1 ビルド設定ファイルを修正する
5.3 テスト結果を集計する
- 5.3.1 集計機能を利用する
- 5.3.2 失敗したテストの詳細を確認する
- Column 単体テストフレームワーク
第6章 カバレッジを取得する
6.1 カバレッジの取得を自動化する意味
- 6.1.1 カバレッジとは
- 6.1.2 なぜJenkinsでカバレッジを取得するのか
6.2 JaCoCoを実行する
- 6.2.1 POMを設定する
- 6.2.2 ジョブを設定する
- 6.2.3 カバレッジレポートを確認する
- 6.2.4 テストを追加する
- 6.2.5 テスト追加後の結果を確認する
- Column カバレッジ測定ツール
第7章 インスペクションを実施する
7.1 インスペクションを自動化する前に
- 7.1.1 Jenkinsでインスペクションを実施する意味
- 7.1.2 インスペクションに利用するツール
7.2 インスペクションを実行する
- 7.2.1 ビルドスクリプトを設定する
- 7.2.2 ジョブを設定する
- 7.2.3 警告を確認する
- 7.2.4 警告に従ってソースコードを修正する
- Column 静的コード解析ツール
第8章 コードステップ数をカウントする
8.1 コードステップ数をカウントする理由
- 8.1.1 コードステップ数からわかること
- 8.1.2 コードステップをカウントするためのツール
8.2 コードステップ数を測定する
- 8.2.1 ジョブを設定する
- 8.2.2 コードステップ数の推移グラフを確認する
- 8.2.3 レポートから状況を分析する
第9章 設定のポイント
9.1 ビルドの実行数を制御する
- 9.1.1 なぜビルド数を制御する必要があるか
- 9.1.2 同時ビルド数を設定する
9.2 セキュリティのためのユーザー管理
- 9.2.1 ユーザーを管理する
- Column LDAPで接続できる代表的なソフトウェア
- Column おすすめプラグイン「Reverse Proxy Auth Plugin」
- 9.2.2 権限を設定する
- Column おすすめプラグイン「Jenkins Job Configuration History Plugin」
9.3 上流/下流プロジェクトの設定
- 9.3.1 下流プロジェクトの設定
- 9.3.2 上流プロジェクトの設定
- Column おすすめプラグイン「Copy Artifact Plugin」
9.4 パラメータを指定してビルドする
- 9.4.1 パラメータビルドとは
- 9.4.2 パラメータビルドの設定
- 9.4.3 上流ジョブのパラメータを下流ジョブに引継ぐ
9.5 マルチ構成プロジェクトのビルド
- 9.5.1 マルチ構成プロジェクトとは
- 9.5.2 マルチ構成プロジェクトのビルド
9.6 ビルド結果をさまざまな経路で通知させる
- 9.6.1 E-mail通知を拡張する
- 9.6.2 IRCに通知する
- 9.6.3 Slackに通知する
- Column ChatOps/Hubot
- Column スマートフォンからJenkinsを見てみよう
第10章 Pipelineの設定
10.1 Jenkins Pipelineとは
- 10.1.1 Jenkinsを設定するときの問題点
- 10.1.2 Jenkins Pipelineによるコードによる設定
- 10.1.3 Jenkins Pipelineの構文
10.2 Pipelineを実行する
- 10.2.1 Pipelineのインストールとジョブ作成
- 10.2.2 Pipelineを実行する
10.3 Pipelineの高度な設定をする
- 10.3.1 Snippet GeneratorによるPipelineスクリプトの自動生成
- 10.3.2 Pipelineの中で定義済みのジョブを呼び出す
- 10.3.3 Pipelineを利用した並列処理
- 10.3.4 SCMからPipelineスクリプトを読み込む
- 10.3.5 Multibranch Pipelineでビルドする
- 10.3.6 Shared Libraryでコードを共有する
- Column Blue Ocean
第11章 一歩進んだ活用法
11.1 さまざまなソースコード管理システムと連携する
- 11.1.1 Subversionとの連携
- 11.1.2 Team Foundation Version Controlとの連携
- Column 集中管理型か,分散管理型か?
- Column おすすめプラグイン「URL SCM plugin」
11.2 分散ビルドを実行する
- 11.2.1 分散ビルドが必要になる理由
- 11.2.2 マスターとビルドエージェントとは
- 11.2.3 マスターとビルドエージェントの設定方法
- 11.2.4 ビルドエージェントとしてWindowsを利用する
- 11.2.5 ビルドエージェントとしてLinux/macOSを利用する
- Column おすすめプラグイン「MSBuild Plugin」
- 11.2.6 ビルドエージェントとしてDockerコンテナを利用する
- Column コンテナとは? ~Docker
- 11.2.7 ビルドの実行環境を制御する
11.3 Gradleでビルドする
- 11.3.1 Gradleとは
- 11.3.2 Gradleの設定
- 11.3.3 JenkinsでのGradleを使ったビルド
- Column おすすめプラグイン「TextFinder Plugin」
11.4 パッケージリポジトリと連携する
- 11.4.1 パッケージリポジトリとは
- 11.4.2 Mavenでのインハウスリポジトリの追加
- 11.4.3 インハウスリポジトリへのMavenからのパッケージ登録
- 11.4.4 Gradleでのインハウスリポジトリの追加
- 11.4.5 インハウスリポジトリへのGradleからのパッケージ登録
11.5 成果物をデプロイする
- 11.5.1 手動デプロイから自動デプロイへ
- 11.5.2 WARファイルをデプロイする
- Column Immutable Infrastructure ~デプロイをめぐるリリース管理
11.6 結合テストを自動化する
- 11.6.1 テスト自動化ツールの課題と意義
- 11.6.2 Seleniumで自動的にテストを実行する
- Column Xvfb PluginによるXvfbでのSeleniumの実行
11.7 バグトラッカーと連携する
- 11.7.1 情報を共有すればバグ管理を強化できる
- 11.7.2 Redmineと連携させる
- 11.7.3 JIRAと連携させる
- 11.7.4 Backlogと連携させる
- Column Infrastructure as CodeではじめるインフラCI
第12章 より便利に使うために
12.1 プラグインを利用する
- 12.1.1 プラグインの探し方
- 12.1.2 プラグインをインストールする
- 12.1.3 プラグインをアップデートするには
- Column CloudBees Jenkins Enterprise
12.2 プラグインを開発する
- 12.2.1 開発に必要なもの
- 12.2.2 開発環境を準備する
- 12.2.3 雛型プラグインを作成する
- 12.2.4 Eclipseで効率的に開発する
- 12.2.5 プラグインをデバッグする
12.3 成果物を管理する
- 12.3.1 成果物の保存設定を変更する
- 12.3.2 ファイル指紋で成果物の情報を追跡する
12.4 ビューをカスタマイズする
- 12.4.1 見たいジョブを埋もれさせないために
- 12.4.2 ビューを追加する
- 12.4.3 ビューを変更する
- 12.4.4 ビューを削除する
- Column おすすめプラグイン「Nested View Plugin」と「CloudBees Folders Plugin」
12.5 Jenkinsをコマンドラインから操作する
- 12.5.1 Jenkinsを外部マシンから操作する
- 12.5.2 Jenkins CLI
第13章 安定して利用するための6つの運用管理
13.1 Jenkinsログを確認する
- 13.1.1 問題解決の糸口はログにある
- 13.1.2 ログを確認するには
- 13.1.3 ログはどこに出力されるか
13.2 バックアップとリストア
- 13.2.1 JENKINS_HOMEのコピーが基本
- 13.2.2 ThinBackup Pluginでバックアップする
13.3 ディスク領域を管理/変更する
- 13.3.1 ディスク容量を管理する
- 13.3.2 JENKINS_HOMEを変更する
- Column CloudBees Jenkins Operations Center
13.4 Jenkinsをチューニングする
- 13.4.1 ヒープ領域の利用状況を確認する
- 13.4.2 メモリ領域を拡張する
13.5 Jenkinsをバージョンアップさせる
- 13.5.1 自動アップグレードのメリットとデメリット
- 13.5.2 アップグレードの手順
- 13.5.3 ダウングレードの手順
- Column Continuous Deliveryとは?
13.6 Jenkinsのエキスパートになる ~Jenkins認定試験
この本に関連する書籍
-
GitHub CI/CD実践ガイド ――持続可能なソフトウェア開発を支えるGitHub Actionsの設計と運用
本書はCI/CDの設計や運用について,GitHubを使ってハンズオン形式で学ぶ書籍です。GitHub Actionsの基本構文からスタートし,テスト・静的解析・リリース・コンテナデプ...
-
CircleCI実践入門 ──CI/CDがもたらす開発速度と品質の両立
CI/CD(継続的インテグレーション,継続的デプロイ)を導入すると,ビルド/テスト/デプロイなどアプリケーションのリリースに至るまでの多くの作業を自動化できます。...
-
[改訂新版]マインドマップから始めるソフトウェアテスト
2007年に刊行されたテスト入門書が待望の復刻改訂! ソフトウェアテストの各フェーズにマインドマップを適用しながら,考え方やノウハウを実例とともにわかりやすく紹...
-
Selenium実践入門 ――自動化による継続的なブラウザテスト
ブラウザの多様化に伴い,Webアプリケーションをクロスブラウザ対応にするための負荷がますます増加し,その解決の一つとしてテスト自動化のノウハウが開発現場で必要と...
-
Chef実践入門――コードによるインフラ構成の自動化
本書は,サーバ構築自動化・構成管理ソフトウェアであるChefの解説書です。まずはスタンドアロンで利用できるChef Soloを利用し,設定ファイルとなるクックブックの書き...
-
JUnit実践入門 ── 体系的に学ぶユニットテストの技法
本書では,JavaテスティングフレームワークのデファクトスタンダードであるJUnitの基本的な使い方から,拡張機能,テストパターンまでを網羅的に解説します。また,デー...