Jenkins:DevOps時代の自動化基盤(テスト・デプロイ)

jenkins

DevOps時代の自動化基盤:Jenkinsの概要と基本コマンド

ソフトウェア開発において、 「コードを書いたら自動でテストし、自動でデプロイする」 という流れはもはや標準的な運用になっています。

その中心的な役割を担うのが Jenkins(ジェンキンス) です。

Jenkinsは、 継続的インテグレーション(CI)および継続的デリバリー(CD)を実現するための自動化サーバー です。

Gitへのpushをトリガーに、 ビルド・テスト・デプロイまでを自動化できるため、 DevOps環境では非常に重要な存在です。

Jenkinsとは何か

JenkinsはJavaで実装されたオープンソースの自動化サーバーです。

主な用途は以下の通りです。

  • アプリケーションの自動ビルド
  • ユニットテストの自動実行
  • 静的解析の自動実行
  • Dockerイメージのビルド
  • サーバーへの自動デプロイ

数百種類以上のプラグインが存在し、 GitHub・Docker・Kubernetesなど、 さまざまなツールと連携可能です。

Jenkinsの基本構成

Jenkinsは以下の構成で動作します。

  • Jenkinsサーバー(中央管理)
  • ジョブ(Job):実行単位
  • パイプライン(Pipeline):処理フロー定義
  • エージェント(Agent):実行ノード

近年では「Pipeline as Code」が主流で、 Jenkinsfile に処理内容を記述する形が一般的です。

Jenkinsが適している場面

  • Git push をトリガーに自動ビルドしたい
  • テストを自動実行したい
  • Dockerイメージを自動生成したい
  • 本番サーバーへ自動デプロイしたい
  • CI/CDパイプラインを構築したい

特にチーム開発や複数人開発環境では、 品質維持と作業効率向上に大きく貢献します。

Jenkinsのインストール(概要)

Debian / Ubuntu系

# apt update
# apt install openjdk-17-jdk
# apt install jenkins

Rocky / Fedora系

# dnf install java-17-openjdk
# dnf install jenkins

インストール後はサービスを起動します。

# systemctl enable jenkins
# systemctl start jenkins

状態確認:

$ systemctl status jenkins

初期アクセス

ブラウザで以下にアクセスします。

			

http://サーバーIP:8080

初回は管理者パスワードが必要です。 # cat /var/lib/jenkins/secrets/initialAdminPassword

ジョブの作成(概要)

Jenkinsでは「ジョブ」という単位で処理を定義します。

主なジョブタイプ:

  • Freestyle Project(簡易設定型)
  • Pipeline(コード定義型)

現在主流なのは Pipeline です。

Jenkinsfileの例

pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                sh 'echo Build started'
            }
        }

        stage('Test') {
            steps {
                sh 'echo Running tests'
            }
        }

        stage('Deploy') {
            steps {
                sh 'echo Deploying application'
            }
        }
    }
}

このように、 ビルド・テスト・デプロイを段階的に定義できます。

CLIからの基本操作

JenkinsにはCLIツールもあります。

$ wget http://localhost:8080/jnlpJars/jenkins-cli.jar

ジョブ一覧取得:

$ java -jar jenkins-cli.jar -s http://localhost:8080 list-jobs

ビルド実行:

$ java -jar jenkins-cli.jar -s http://localhost:8080 build JOB名

Jenkinsのメリット

  • CI/CDを簡単に構築できる
  • 豊富なプラグイン
  • Git連携が容易
  • パイプライン管理が可能
  • チーム開発に最適

Jenkinsの注意点

  • サーバー管理が必要
  • プラグイン管理が複雑になりがち
  • リソース消費が大きい
  • 定期的なアップデートが必要

小規模プロジェクトではGitHub Actionsなどの クラウドCIも選択肢になりますが、 オンプレ環境や独自CI基盤では Jenkinsは依然として有力な選択肢です。

cron・Celeryとの違い

  • cron: 単純な時間ベースの実行
  • Celery: 非同期タスク処理基盤
  • Jenkins: CI/CDパイプライン自動化

Jenkinsは単なるスケジューラーではなく、 開発ワークフロー自動化基盤として理解することが重要です。

まとめ

Jenkinsは、DevOps環境における中心的なCI/CDサーバーです。

ビルド・テスト・デプロイを自動化することで、 品質向上と作業効率化を同時に実現できます。

Linuxサーバー上で自前のCI環境を構築する場合、 Jenkinsは今なお有力な選択肢です。

自動化戦略を考える上で、 cron・systemd timer・Celeryとは役割が異なることを理解し、 適切に使い分けることが重要です。