JenkinsとMavenでJakarta EEアプリを自動デプロイ!CI/CDパイプラインを構築する基本
生徒
「Jakarta EEのアプリを作ったんですが、手動でビルドしてデプロイするのが面倒なんです…」
先生
「その場合は、JenkinsとMavenを使ってCI/CDの仕組みを作ると便利ですよ。ビルドからデプロイまで自動化できます。」
生徒
「CI/CDって聞いたことありますけど、どうやってJakarta EEと連携するんですか?」
先生
「それでは、JenkinsとMavenでJakarta EEアプリケーションのCI/CDパイプラインを構築する方法を一緒に見ていきましょう。」
1. Jakarta EEとCI/CDの基礎を知ろう
Jakarta EEはエンタープライズ向けのJavaアプリケーションを開発するための標準仕様です。多くの場合、PayaraやWildFlyのようなアプリケーションサーバーにデプロイして運用します。
CI/CDとは、継続的インテグレーション(Continuous Integration)と継続的デリバリー(Continuous Delivery)の略で、ソースコードの変更を自動でビルド・テスト・デプロイまで繋げる仕組みのことです。Jakarta EEプロジェクトでも、これを導入することで開発の効率化が図れます。
2. Jenkinsとは?CI/CDに欠かせない自動化ツール
JenkinsはJavaで作られたオープンソースの自動化サーバーで、ビルド、テスト、デプロイといった一連の作業を自動化できます。Jakarta EEのプロジェクトでも、JenkinsとMavenを組み合わせて、WARファイルのビルドからアプリケーションサーバーへのデプロイまでを自動化することが可能です。
3. Jakarta EEのMavenプロジェクトを用意しよう
まずは、Jakarta EE対応のMavenプロジェクトを用意します。pom.xmlに以下のような依存関係を設定します。
<dependencies>
<dependency>
<groupId>jakarta.platform</groupId>
<artifactId>jakarta.jakartaee-api</artifactId>
<version>10.0.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
<packaging>war</packaging>
この構成により、Jenkins上でmvn packageを実行すればWARファイルが自動で生成されるようになります。
4. Jenkinsジョブの作成と設定
Jenkinsをインストールしたら、以下の手順でジョブ(パイプライン)を作成します。
- 「新規ジョブ作成」から「フリースタイル・プロジェクト」を選択
- ソースコード管理でGitリポジトリを指定
- ビルド手順で「Mavenのビルド」を追加
- ゴールとオプションに
clean packageを指定
この設定により、GitのリポジトリからJakarta EEのソースコードを取得し、Mavenでビルドできます。
5. Jenkinsでの自動デプロイ設定(Payara編)
Jenkinsのビルド後のステップで、生成されたWARファイルをPayaraのautodeployディレクトリにコピーすることで、自動デプロイが可能です。
ビルド後の操作で「シェルの実行」などを選び、以下のようなスクリプトを記述します。
cp target/*.war /opt/payara5/glassfish/domains/domain1/autodeploy/
この処理によって、WARファイルがPayaraに自動反映されます。
6. JenkinsとWildFlyでのデプロイ
WildFlyの場合は、jboss-cli.shを使ったコマンドで自動デプロイを行うことができます。以下はその一例です。
/opt/wildfly/bin/jboss-cli.sh --connect --command="deploy /var/lib/jenkins/workspace/myapp/target/myapp.war --force"
Jenkinsのビルド後のステップにこのコマンドを入れることで、WARファイルがWildFlyに即時デプロイされるようになります。
7. JenkinsパイプラインでCI/CDをコード管理
さらに発展的な方法として、Jenkinsfileというスクリプト形式でCI/CDの流れを管理する方法があります。以下は簡単な例です。
pipeline {
agent any
stages {
stage('Checkout') {
steps {
git 'https://github.com/your-repo/jakarta-ee-project.git'
}
}
stage('Build') {
steps {
sh 'mvn clean package'
}
}
stage('Deploy') {
steps {
sh 'cp target/*.war /opt/payara5/glassfish/domains/domain1/autodeploy/'
}
}
}
}
このようにコードでCI/CDパイプラインを定義しておくと、JenkinsのGUIに依存せずに、再利用性の高い構成が可能になります。
8. Jakarta EEでCI/CDを活用するメリット
Jakarta EEのようなエンタープライズ向けアプリケーションでは、CI/CDを導入することで次のようなメリットがあります。
- ビルド・テスト・デプロイの作業がすべて自動化され、ミスが減る
- コードの変更がすぐ反映され、テストや確認がスムーズ
- 開発チームの作業が標準化され、品質の維持がしやすくなる
JenkinsとMavenは、その構築を支える強力なツールです。