Jenkins Pipeline の基本



🏗️ 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 にコピペするだけ

🔨 作業手順

  1. VS Code を起動

  2. 「Jenkins」という名前のフォルダを作る

  3. 中に「Jenkinsfile」というファイルを作成

  4. ここにパイプラインの内容を記述


🧪 パイプラインの作成(手順)

① Jenkinsで新しいジョブを作成

  1. Jenkinsのトップ画面で【New Item】をクリック

  2. ジョブの種類は【Pipeline】を選択

  3. 名前は「My Pipeline」にする

  4. OKをクリック

② パイプラインスクリプトを貼り付ける

  • Jenkins内の小さいエディタには直接書かずに

  • VS Codeで書いた内容をコピペする


⏰ ビルドトリガーとは?(=いつジョブを実行するか)

パイプラインを「いつ」「どうやって」実行するかを設定できます。

よく使われる2つのトリガー:

① Build Periodically(定期的にビルド)

  • 一定の時間ごとに実行

  • 例:「毎日朝8時にデプロイ」「毎時0分にクリーンアップ」など

② Poll SCM(ソースコードの変化を監視)

  • GitHubなどに変更(コミット)があったら、自動でビルド

  • → 開発者がコードをPushしたら即ビルド!

  • → これがCI/CDの自動化の基本!


🔗 便利リンク(Pipeline作成の参考)

以下の2つはとても便利なので、ブックマークしておくと良いです:

  1. Pipeline Syntax

    • パイプラインを書くためのガイド付きジェネレーター

  2. Pipeline: Basic Steps

    • shdirdeleteDir などの基本関数を一覧で紹介


🧱 Mavenのインストール(事前準備)

✅ 目的

これからJenkins Pipelineを作るけど、その前に Maven(Javaアプリをビルドするツール)をインストールする必要があります。

✅ 手順(Dockerを使っている場合)

  1. ターミナルで Jenkins コンテナのIDを調べる:

    docker container ls
  2. Jenkinsコンテナにログインするコマンド:

    docker exec -it -u root <コンテナID> /bin/bash
    • -it: ターミナルでやりとりできるようにするオプション

    • -u root: rootユーザーとしてログインする

    • /bin/bash: bashシェルを起動する

  3. Mavenをインストール:

    apt-get update
    apt-get install maven

    インストール中に「Y(はい)」を入力して進める。

⚠️ 注意:この Maven は Docker の中にインストールされるので、コンテナを停止・削除したら消えてしまう。本番運用するなら 自分専用のDockerイメージを作った方がよいです。


🛠 Jenkins Pipelineの作成(本編)

ここからが本番の Jenkins Pipeline を書いていくパートです。

🎯 Jenkins Pipelineってなに?

  • Jenkinsで使う 「自動化スクリプト」 のこと。

  • たとえば、以下を自動でやってくれる:

    • コードのクローン(ダウンロード)

    • ビルド(jarファイル作る)

    • テスト

    • デプロイ


📝 Jenkinsfileの書き方(ステップバイステップ)

VS Code を使って書いて、それを Jenkins に貼り付ける。


① 最低限必要な構造:

pipeline {
agent any stages { // ここに各ステージを書く } }
  • pipeline {}: Jenkins Pipelineのスタート

  • agent any: どのノード(マシン)でも動かせるようにする

  • stages {}: 各ステージをこの中に追加する


② ステージ1:Clean Up(お掃除)

stage('Clean Up') {
steps { deleteDir() } }
  • Jenkinsが前のビルドのファイルを残していてエラーになるのを防ぐため。

  • deleteDir(): 作業フォルダを丸ごと削除してくれる便利な関数。


③ ステージ2:Gitリポジトリをクローン

stage('Clone Repo') {
steps { sh "git clone https://github.com/jenkins-docs/simple-java-maven-app.git" } }
  • sh: シェルコマンドを実行する命令。

  • git clone: GitHubからコードをダウンロードする。

💡このリポジトリには Maven でビルドできる Javaアプリのサンプルが入ってる。


④ ステージ3:ビルド

stage('Build') {
steps { dir('simple-java-maven-app') { sh 'mvn -B -DskipTests clean package' } } }
  • 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ステージの構築

stage('Build') {
steps { dir('simple-java-maven-app') { sh 'mvn clean install' } } }
  • mvn clean install: Javaアプリケーションをビルドするコマンド。

  • cleanは、古いビルドのゴミ(キャッシュやバイナリ)を削除する処理。


🧪 Testステージの構築

stage('Test') {
steps { dir('simple-java-maven-app') { sh 'mvn test' } } }
  • mvn testは、アプリの動作確認(テスト)を行う。

  • このアプリでは「Hello World」が正しく出力されるかをチェックするテストが入っている。


🧩 全体の流れ(Pipeline構成)

pipeline {
agent any stages { stage('Clean Up') { steps { deleteDir() } } stage('Clone Repo') { steps { sh 'git clone https://github.com/example/simple-java-maven-app.git' } } stage('Build') { steps { dir('simple-java-maven-app') { sh 'mvn clean install' } } } stage('Test') { steps { dir('simple-java-maven-app') { sh 'mvn test' } } } } }

📦 Jenkins上での操作手順(おさらい)

  1. Jenkins画面で Pipelineジョブを作成

  2. スクロールして、Pipeline Scriptの欄に上記スクリプトを貼り付け。

  3. 保存して「Build Now」をクリック。

  4. 結果が出たら、ステージ(緑のブロック)を確認。


📋 各ステージの意味(まとめ)

ステージ内容
Clean Up古いフォルダやデータを削除して、クリーンな状態からスタート
Clone RepoGitHubからソースコードをダウンロード(git clone
BuildJavaアプリをビルド(mvn clean install
Test単体テストを実行(mvn test

🐞 Jenkinsの便利機能「Replay」

  • Jenkinsでは、ジョブが失敗したとき、毎回Gitにコミットして再実行するのは面倒。

  • そこで「Replay」機能を使うと、Jenkinsの画面上で直接スクリプトを修正・再実行できる。

  • 修正して成功したら、その内容をGitに反映(コミット)すればOK!

⚠️ 会社などのセキュリティポリシーでReplayが無効化されていることもあるので注意。



前の記事:Jenkins:最初のジョブ作成

次の記事:GitHub リポジトリを Jenkins に連携する