代表的な CI/CD ツール ― Jenkins

はじめに

これまでの記事では、CI/CD の基本概念や動作の仕組みについて説明しました。今回は、実際の現場でよく利用されている CI/CD ツールの一つ、Jenkins を紹介します。

Jenkinsとは?

Jenkinsは、オープンソースの CI/CD ツールです。ビルド、テスト、デプロイなどの作業を 自動化 することができます。

ビルドテストデプロイについては、前回の記事で詳しく説明しています。

Java で作られており、多くのプロジェクトで利用されています。

Jenkinsでできること

Jenkinsでは、以下のようなことが可能です。

  • 開発者がプロジェクトのソースコードを変更し、それを Git にプッシュすると、Jenkins が自動的に処理を開始します。
  • プロジェクトのビルド
  • 自動テストの実行
  • サーバーへのデプロイ

これらの操作を 毎回同じ手順で自動実行 できます。

Jenkins でできること と、 Job / Pipeline の関係

ここまでで、Jenkinsでできること(ビルド・テスト・デプロイなど)を紹介しました。では、Jenkinsは どのようにして これらの作業を実行しているのでしょうか。答えはジョブ(Job) と パイプライン(Pipeline) です。

ジョブ(Job)とは?

Jenkinsでは、1 つの処理のまとまりをジョブ と呼びます。

ジョブには、以下のような内容を設定します。

  • 実行するコマンド
  • Git リポジトリ
  • ビルドやテストの手順
  • 実行するタイミング

つまり、「Jenkins に何をさせたいか」 を定義したものが ジョブ です。

例:以下のようなジョブがあります。

  • Jenkins のジョブでは、どの Git リポジトリのコードを使うか を設定します。
  • Java プロジェクトをビルドするジョブ
  • テストのみ実行するジョブ
  • サーバーにデプロイするジョブ

各ジョブは、1 つの目的を持っています。

パイプライン(Pipeline)とは? パイプラインとは、複数のジョブや処理が順番に連なって実行される流れです。パイプラインを使うと、

  • ビルド
  • テスト
  • デプロイ

といった処理をひとつの流れとして管理することができます。パイプラインの特徴は、 処理の流れをJenkinsfileで記述できる点にあります。

Jenkinsfileの簡単な例

pipeline {
agent any

stages {

    stage('Build') {
        steps {
            echo 'アプリをビルドします'
            ./gradlew build
        }
    }

    stage('Test') {
        steps {
            echo '自動テストを実行します'
            ./gradlew test
        }
    }

    stage('Deploy') {
        steps {
            echo 'サーバーにデプロイします'
            ./deploy.sh
        }
    }
}

}

まとめ

今回は、CI/CD ツールの一つである Jenkins をご紹介しました。次回の記事では、GitHub ActionsやGitLab CIなど、より最近の CI/CD ツールについて紹介する予定です。

注釈

CI/CDはソフトウェア開発における自動化の重要なプラクティスです。

CI(Continuous Integration:継続的インテグレーション)

  • 開発者がコードを頻繁に共有リポジトリに統合。
  • 自動ビルドとテストを実行し、品質を担保。
  • 目的:早期にバグを発見し、統合の問題を減らす。

CD(Continuous Delivery/Deployment:継続的デリバリー/デプロイメント)

  • デリバリー:テスト済みコードを本番環境にデプロイ可能な状態に自動化。
  • デプロイメント:本番環境への自動デプロイまで含む。
  • 目的:リリースの迅速化と信頼性向上。

Git リポジトリ:ソースコードを保存し、変更を管理する場所

参考資料: 

Jenkins User Documentation