🏗️ CI(継続的インテグレーション)を学ぶための例
このレッスンでは、JavaのMavenプロジェクトを使って、
実際にパイプラインを作っていきます。
📦 Mavenってなに?
-
Javaのプログラムをビルド(実行できる形に変換)するツール。
-
.jar
ファイル(実行ファイル)を作るときに使う。 -
Javaの現場でよく使われる
💡 現場では Maven または Gradle どちらかがよく使われています。
📁 Jenkinsfileとは?
普通、実際の開発現場では:
-
Jenkinsのパイプラインの設定内容をJenkinsfileに書く
-
それをGitHubなどのリポジトリに一緒に保存する
-
JenkinsがそのJenkinsfileを見て、ジョブを実行する!
でも今回はまだ初心者向けなので、
Jenkinsfileを自分でVS Codeで書いて、コピペして使う方法でやります。
🖥️ VS Codeの準備
Jenkins内で直接スクリプトを書くと、
文字が小さすぎて見づらいので、代わりに:
-
Visual Studio Code(VS Code)を使ってJenkinsfileを書く
-
完成したら Jenkins にコピペするだけ
🔨 作業手順
-
VS Code を起動
-
「Jenkins」という名前のフォルダを作る
-
中に「Jenkinsfile」というファイルを作成
-
ここにパイプラインの内容を記述
🧪 パイプラインの作成(手順)
① Jenkinsで新しいジョブを作成
-
Jenkinsのトップ画面で【New Item】をクリック
-
ジョブの種類は【Pipeline】を選択
-
名前は「My Pipeline」にする
-
OKをクリック
② パイプラインスクリプトを貼り付ける
-
Jenkins内の小さいエディタには直接書かずに
-
VS Codeで書いた内容をコピペする
⏰ ビルドトリガーとは?(=いつジョブを実行するか)
パイプラインを「いつ」「どうやって」実行するかを設定できます。
よく使われる2つのトリガー:
① Build Periodically(定期的にビルド)
-
一定の時間ごとに実行
-
例:「毎日朝8時にデプロイ」「毎時0分にクリーンアップ」など
② Poll SCM(ソースコードの変化を監視)
-
GitHubなどに変更(コミット)があったら、自動でビルド
-
→ 開発者がコードをPushしたら即ビルド!
-
→ これがCI/CDの自動化の基本!
🔗 便利リンク(Pipeline作成の参考)
以下の2つはとても便利なので、ブックマークしておくと良いです:
-
Pipeline Syntax
-
パイプラインを書くためのガイド付きジェネレーター
-
-
Pipeline: Basic Steps
-
sh
、dir
、deleteDir
などの基本関数を一覧で紹介
🧱 Mavenのインストール(事前準備)
✅ 目的
これからJenkins Pipelineを作るけど、その前に Maven(Javaアプリをビルドするツール)をインストールする必要があります。
✅ 手順(Dockerを使っている場合)
-
ターミナルで Jenkins コンテナのIDを調べる:
-
Jenkinsコンテナにログインするコマンド:
-
-it
: ターミナルでやりとりできるようにするオプション -
-u root
: rootユーザーとしてログインする -
/bin/bash
: bashシェルを起動する
-
-
Mavenをインストール:
インストール中に「Y(はい)」を入力して進める。
⚠️ 注意:この Maven は Docker の中にインストールされるので、コンテナを停止・削除したら消えてしまう。本番運用するなら 自分専用のDockerイメージを作った方がよいです。
🛠 Jenkins Pipelineの作成(本編)
ここからが本番の Jenkins Pipeline を書いていくパートです。
🎯 Jenkins Pipelineってなに?
-
Jenkinsで使う 「自動化スクリプト」 のこと。
-
たとえば、以下を自動でやってくれる:
-
コードのクローン(ダウンロード)
-
ビルド(jarファイル作る)
-
テスト
-
デプロイ
-
📝 Jenkinsfileの書き方(ステップバイステップ)
VS Code を使って書いて、それを Jenkins に貼り付ける。
① 最低限必要な構造:
-
pipeline {}
: Jenkins Pipelineのスタート -
agent any
: どのノード(マシン)でも動かせるようにする -
stages {}
: 各ステージをこの中に追加する
② ステージ1:Clean Up(お掃除)
-
Jenkinsが前のビルドのファイルを残していてエラーになるのを防ぐため。
-
deleteDir()
: 作業フォルダを丸ごと削除してくれる便利な関数。
③ ステージ2:Gitリポジトリをクローン
-
sh
: シェルコマンドを実行する命令。 -
git clone
: GitHubからコードをダウンロードする。
💡このリポジトリには Maven でビルドできる Javaアプリのサンプルが入ってる。
④ ステージ3:ビルド
-
dir()
: 作業ディレクトリを指定する(上でクローンしたフォルダ名)。 -
mvn clean package
: Maven で jar をビルドするコマンド。 -
-DskipTests
: テストは飛ばす。 -
-B
: バッチモード(ログを静かにする)
🔁 Build Triggers(いつPipelineを実行するか)
Jenkinsにはビルドを自動で開始する「トリガー」がある:
-
Build Periodically
: 定期的に実行(毎朝7時など) -
Poll SCM
: GitHubなどのリポジトリを監視して、コードが変更されたら自動でビルド
🔧 Jenkinsのdir
ステップとは?
💬 説明
-
Jenkinsでは、それぞれのステージ(stage)を実行するたびに初期の親フォルダ(ジョブのルート)に戻ってしまう。
-
sh
コマンドでcd
しても、次のステージでは元の場所に戻るので意味がない。 -
そこで使うのが
dir
ステップ。これは、「このディレクトリで実行してね」と指定するもの。 -
dir
の中で実行したコマンドは、すべてそのフォルダ内で動く。
🔎 補足:
Gitリポジトリをgit clone
すると、「simple-java-maven-app
」というフォルダができる。
この中でmvn clean install
などを実行する必要があるので、dir('simple-java-maven-app')
と書く。
🔨 Build
ステージの構築
-
mvn clean install
: Javaアプリケーションをビルドするコマンド。 -
clean
は、古いビルドのゴミ(キャッシュやバイナリ)を削除する処理。
🧪 Test
ステージの構築
-
mvn test
は、アプリの動作確認(テスト)を行う。 -
このアプリでは「Hello World」が正しく出力されるかをチェックするテストが入っている。
🧩 全体の流れ(Pipeline構成)
📦 Jenkins上での操作手順(おさらい)
-
Jenkins画面で Pipelineジョブを作成。
-
スクロールして、Pipeline Scriptの欄に上記スクリプトを貼り付け。
-
保存して「Build Now」をクリック。
-
結果が出たら、ステージ(緑のブロック)を確認。
📋 各ステージの意味(まとめ)
ステージ | 内容 |
---|---|
Clean Up | 古いフォルダやデータを削除して、クリーンな状態からスタート |
Clone Repo | GitHubからソースコードをダウンロード(git clone ) |
Build | Javaアプリをビルド(mvn clean install ) |
Test | 単体テストを実行(mvn test ) |
🐞 Jenkinsの便利機能「Replay」
-
Jenkinsでは、ジョブが失敗したとき、毎回Gitにコミットして再実行するのは面倒。
-
そこで「Replay」機能を使うと、Jenkinsの画面上で直接スクリプトを修正・再実行できる。
-
修正して成功したら、その内容をGitに反映(コミット)すればOK!
⚠️ 会社などのセキュリティポリシーでReplayが無効化されていることもあるので注意。