jenkins触ったことがないのでメモしておきます。
Jenkinsとは? 〜 なぜ必要なのか? 〜
背景:ソフトウェア開発の自動化ニーズ
ソフトウェア開発では、開発者が各自のマシンでビルド・テストを行い、手動で成果物を共有・リリースする流れが一般的でした。しかし、以下のような問題が起こりやすいのです。
- ビルドやテストの漏れ
新しいコードが追加されても、テストを実行し忘れたり、ビルド環境が整っていなかったりすることでエラーを見逃す可能性がある。 - 開発者間の連携不足
マージして初めて衝突や不具合が発覚してしまい、後戻りコストが増大する。 - リリース作業の手間とミス
手動のリリースは作業手順が複雑な場合もあり、ヒューマンエラーや時間的コストがかかる。
このような課題を解決するために「継続的インテグレーション(CI)」や「継続的デリバリー/デプロイ(CD)」といった考え方が生まれました。
- 継続的インテグレーション(CI): 開発者が頻繁にコードをマージし、ビルドとテストを自動で行うことで、バグやコンフリクトを早期に発見する手法。
- 継続的デリバリー/デプロイ(CD): CIでテストを通過したコードを自動的に本番環境へデリバリー(リリース準備)もしくはデプロイする手法。
Jenkins誕生の経緯
Jenkinsは、こうした自動化ニーズに応えるために誕生しました。もともとは「Hudson」という名前で開発されていたオープンソースプロジェクトで、「ビルド・テストなどの繰り返し作業を自動化し、誰でも無料で使えるプラットフォームを作りたい」 という理念からスタートしています。
開発者がソースコードをプッシュ(push)したタイミングで自動的にビルドとテストを行い、問題があればすぐに通知する。これによって、手戻りを最小化し、開発速度と品質を同時に向上させる ことが狙いです。現在では世界中の企業・組織がJenkinsを活用しており、コミュニティ主導で活発に開発・拡張が続けられています。
Jenkinsのメリット
- 無料でオープンソース
個人から大規模企業まで、ライセンスコストを気にせず利用可能。 - プラグインが豊富
GitHubなどのバージョン管理システムやクラウドサービス、ビルドツールと連携しやすい。必要な拡張機能を自由に組み合わせられる。 - パイプライン管理
Jenkinsfileを使うと、ビルドやテスト、デプロイのプロセスをコード化して一元管理できる(”Pipeline as Code”)。 - 大規模コミュニティ・豊富なドキュメント
エラーや不具合にぶつかっても情報を探しやすく、公式ドキュメントやフォーラム、ブログ記事が非常に充実している。 - 導入が簡単で試しやすい
Dockerなどを用いれば、手軽に環境を立ち上げられる。比較的軽量でローカルでもサーバーでも使いやすい。
Jenkinsの特徴
(※背景を補強するために、本章では1章で触れなかったJenkinsの概要をさらに簡単にまとめています。)
- CI/CDツールの代表格
JenkinsはCI/CDを実現する代表的なツールで、導入実績が多く、成功事例も豊富。 - 幅広い言語・環境に対応
Java、Node.js、Python、Goなど、さまざまな言語やフレームワークで活用できる。 - 豊富な設定オプション
フリースタイル・ジョブからパイプラインまで、段階的に高度な使い方を学んでいける。 - チーム開発への応用
ユーザー管理やジョブ権限設定などを組み合わせることで、複数人での利用がスムーズに行える。
環境構築:Jenkinsをセットアップしてみよう
必要なもの
- Java(JenkinsはJavaで動作するため、Java 11 または Java 17 が推奨)
- Jenkins本体(公式サイトよりダウンロード。あるいはDockerイメージなどを使用)
インストール手順(例:Dockerイメージを使う場合)
- Dockerのインストール
- Mac:
brew install --cask docker
- Windows:Docker Desktopをインストール
- Linux:各ディストリビューションのパッケージマネージャーを利用
- Mac:
Jenkins公式イメージを使ってコンテナ起動
docker run -d -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home --name jenkins jenkins/jenkins:lts
Jenkins初期設定
- ブラウザで http://localhost:8080 にアクセスするとセットアップ画面が表示される。
- 表示されるパスワードの場所(例:
/var/jenkins_home/secrets/initialAdminPassword
)を確認して入力。


- 推奨プラグインをインストールし、管理者アカウントを作成。




ジョブの作成準備~プロジェクトを用意する
まずは、Jenkinsに登録するためのサンプルプロジェクトを用意します。
今回はJavaのビルドツールとしてGradleを使った例を示します。(Mavenでも考え方は同じです)


Gradleとは?
- Gradle: JavaやAndroidなどのプロジェクトでよく使われるビルド自動化ツールです。
- 依存ライブラリの管理・コンパイル・テスト実行・アーカイブ作成など、開発に必要な作業を自動化する設定を「
build.gradle
」というスクリプトファイルに定義します。
Gradleでビルドするためのサンプルプロジェクト
次に、Jenkinsでビルド・テストを試すためのJavaプロジェクトを用意します。ここでは Gradle Wrapper を使ったサンプル構成を紹介します。
Gradle Wrapperとは?
- プロジェクト内に
gradlew
/gradlew.bat
を置いておくことで、Jenkinsのコンテナ上に事前にGradleをインストールせずに 同じバージョンのGradleを使ってビルドできる仕組み。 - ソース管理に
gradlew
やgradle-wrapper.properties
を含めておけば、他の開発環境やCI上でも同じ結果が得られる。
サンプルのファイル構成例
jenkins-test/
├── src
│ ├── main
│ │ └── java
│ │ └── example
│ │ └── App.java
│ └── test
│ └── java
│ └── example
│ └── AppTest.java
├── build.gradle
├── gradlew
├── gradlew.bat
└── gradle
└── wrapper
├── gradle-wrapper.jar
└── gradle-wrapper.properties
- App.java: 「Hello World」を出力するメインクラス、加えてテスト用のメソッドをひとつ用意
- AppTest.java: JUnit で
App
のメソッドをテスト - build.gradle: Javaプラグインの適用、JUnit依存の設定
- gradlew / gradlew.bat: Gradle Wrapperの起動スクリプト
- gradle-wrapper.properties: 使用するGradleのバージョン(例:8.5)の指定
リポジトリへコミット
この一式を、GitHubなど任意のGitリポジトリにプッシュします。
※最近はGitのデフォルトブランチが main
になっていることが多いので、Jenkinsでビルドする際も main
を指定 しましょう。
フリースタイル・ジョブを作成する
ここでは最もシンプルな「フリースタイル・ジョブ」を例に解説します。
新規ジョブの作成
- Jenkinsダッシュボードで「新規ジョブ作成」をクリック
- 「ジョブ名」を入力(例:
test
)し、「フリースタイル・プロジェクトの作成」を選択して「OK」
ソースコード管理の設定
- 「ソースコード管理」セクションで「Git」を選択
- 「リポジトリURL」に https://github.com/ユーザ名/jenkins-test.git のように入力
- 「Branches to build」は
*/main
に設定(デフォルトで*/master
になっているとエラーになる場合がある)
ビルドの設定
- 「ビルド手順の追加」→「シェルの実行」を選択
- 以下のように記述(Gradle Wrapperを利用)
./gradlew clean build
これで「クリーン→ビルド&テスト」がすべて動きます。
ビルド後の処理(JUnitテストレポートの集計)
- 「ビルド後の処理の追加」→「JUnitテスト結果の集計」を選択
- 「テスト結果XML」に
**/build/test-results/test/*.xml
と入力 - これでJenkins上でテスト結果を可視化できる
ビルド実行
- 設定画面で「保存」をクリックして確定
- ジョブ画面左側の「ビルド実行」で、すぐにビルドを走らせることができる

ビルドに成功すればチェックマークがつきます。×になればエラーが発生しています。
トラブルシューティング:よくあるハマりどころ
- ブランチ名の不一致
- GitHubのデフォルトが
main
なのに、Jenkinsがmaster
を探してエラーになるケース。 - 対処:ジョブ設定の「Branches to build」を
*/main
に修正。
- GitHubのデフォルトが
./gradlew: not found
エラー- Gradle WrapperファイルをGitにコミットし忘れている、または実行権限が付いていない。
- 対処:
gradle wrapper
実行後、gradlew
,gradlew.bat
,gradle/wrapper
をGitに追加&プッシュ。chmod +x gradlew
も忘れずに。
- JavaバージョンとGradleの非互換
- 例えば、Gradleが古くてJava 17を認識できない (
Could not determine java version
)。 - 対処:
gradle-wrapper.properties
を修正して、distributionUrl
を新しいGradleに差し替える(例:8.5以上)。
- 例えば、Gradleが古くてJava 17を認識できない (
- Jenkinsでテスト結果が表示されない
- 「ビルド後の処理」でJUnitのレポートパスを正しく設定していない。
- 対処:Gradleのテストレポート出力先(例:
build/test-results/test/*.xml
)を指定。

まとめと次のステップ
- Jenkins+Dockerの組み合わせなら、CI環境を手軽にセットアップ可能。
- Gradle Wrapperを使えば、わざわざコンテナにGradleをインストールする手間がなくなり、バージョンの互換性も保ちやすい。
- フリースタイル・ジョブを動かしてみることで、ビルドとテストの自動化の基本を体験できる。
次のステップ
- パイプライン(Jenkinsfile)の活用
- 「Pipeline」ジョブに切り替え、ビルドフローをスクリプトとして管理する
- デプロイの自動化
- テストが成功した成果物をステージング環境や本番環境へ自動でリリースする
- プラグイン活用・通知機能
- GitHub連携、Slack通知、Blue Oceanなど豊富なプラグインを使いこなす
おわりに
本記事では、Docker上で稼働するJenkinsを用い、Gradle WrapperでJavaプロジェクトをビルド・テストする最初の一歩を解説しました。
実際の現場で使うには、認証やアクセス制御、ビルドの並列化など多くの機能を活用する必要がありますが、まずは**「リポジトリを指定して、自動でビルドとテストを回せる」という成功体験**が重要とのことです。
Jenkinsの様々な使い方もまた記事にしようと思います。