Jenkins実践入門 改訂第3版 ビルド・テスト・デプロイを自動化する技術
[改訂第3版]Jenkins実践入門 ――ビルド・テスト・デプロイを自動化する技術 WEB+DB PRESS plus
技術評論社
監修:川口耕介、佐藤聖規
著者:佐藤聖規、和田貴久、新井雄介、米沢弘樹、山岸啓、岩成祐樹
本書の刊行に寄せて
はじめに
第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認定試験
参考文献
索引
監修者・著者略歴
奥付