Jenkinsについて調べてみた

# はじめに

エンジニアのみなさま、日々の学習お疲れ様です。
また本記事まで足を運んでいただき本当に感謝です。

案件でJenkinsを使うことになりました。
今回初めて触るので、公式のドキュメントやYouTubeの動画を見ながら雑多に整理してみます。
このアウトプットは『ざっくり理解する事』を目的としてます。


# Jenkinsとは？

>自己完結型のオープンソース自動化サーバーで、ソフトウェアのビルド、テスト、配信、デプロイに関連するあらゆる種類のタスクを自動化するために使用できる。 Jenkinsは、ネイティブ・システム・パッケージ、Docker、またはJava Runtime Environment（JRE）がインストールされたマシンからスタンドアロンでインストールすることができる。

ソフトウェアの変更を常にテストし、自動で本番環境へ適用できる状態にする開発手法である**継続的インテグレーション（Continuous Integration）** や、 検証済みコードのリポジトリへのリリースを自動化する **継続的デリバリー（Continuous Delivery）** を用途として使うみたいです。


# インストールからビルドする環境の設定まで

[Jenkinsの使い方と環境構築方法、定期的にビルドする環境を作ろう！](https://www.youtube.com/watch?v=kouoy97x7Mk)

Jenkinsのインストールから新しいジョブの作成、ビルドの実行までを紹介した動画で、Jenkins初心者にとって分かりやすい内容でした。使用するためにはJenkinsのインストールに加えて、Java（LTSは17もしくは21）のインストールも必要になります。
上記の動画は2年前にアップしたもの、他の動画も直近のものはなく2~6年前くらいのものが多かったです。

UIはこんな感じ

![スクリーンショット 2025-02-02 0.54.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3744730/a2f676e3-1a0f-bbb0-2f79-2ff4f99c9448.png)

とてもシンプルです。あとアイコンが個人的には好きです笑
この画像は、1つのジョブが作成された状態ですね。

作成されたジョブをクリックすると以下の画面に遷移します。
サイドバーの下段にビルド履歴があります。この場合はいずれも成功してますね。
失敗してる場合は、対象のビルドをクリックし、ログ出力を見る事で詳細も確認できます。

![スクリーンショット 2025-02-02 1.00.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3744730/435739db-ec08-b18f-ab50-b07e639eb2b8.png)

サイドバーの『設定』のリクックすると以下の画面に遷移します。

![スクリーンショット 2025-02-02 1.02.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3744730/702ad016-bd31-741b-7fa1-898360b64b39.png)

ビルド・トリガの項目で『定期的に実行』があります。
フォームを見るとH/2とあります。『2分ごとに定期的にビルドする』みたいです。
ジョブ作成時にSSH設定を行い、本画面のソースコード管理の項目を『Git』、ビルド・トリガの項目を『SCMをポーリング』に設定すると、ソースコードを定期的に監視し、差分があればビルドを実行する設定もできるみたいです。

詳細は以下の記事に書かれてます。感謝

https://tracpath.com/works/development/jenkins_and_git/

# Plugin

>あらゆるプロジェクトのビルド、デプロイ、自動化をサポートする、コミュニティから提供された1900以上のJenkins Pluginをご覧ください。

![スクリーンショット 2025-02-02 12.49.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3744730/7c40656c-3397-9a1f-39fe-273e0b91aa39.png)

他のCI/CDツールのPluginの総数は不明です。
JenkinsのPluginが多いか少ないかの判断は出来ませんが、拡張には困らなさそうですね。
どんなPluginがあるか？試しに『Slack』で検索してみました。

![スクリーンショット 2025-02-02 13.50.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3744730/a1e3c1fe-24be-4a03-83f8-0c3725e8c57a.png)

Slack関連だけでも22個ありました。
Health Scoreもあるので、どのPluginが安心・安全で利用できるか把握しやすいですね。
案件ではビルドの成功・失敗をSlackと連動して通知する仕組みを使っています。

# 公式ドキュメント

個人的には海外のドキュメントは見づらい多い印象ですが、Jenkinsのドキュメントはすごく丁寧に書かれている印象を受けました。
以下はDockerでJenkinsをダウンロードして実行する手順の一部になります。

![スクリーンショット 2025-02-02 0.45.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3744730/8506487e-276a-ae9f-2996-161e88ccab38.png)

これなら環境構築もスムーズに対応できそうです！

-----


# その他

### サーバー構成について
Jenkins用のサーバーPCを準備することが多いみたいです。
開発も同じPCで対応すると、シンプルに重くなるのが理由に挙げられます。
案件ではMasterのPCが1台、Controller（Master）から指示を受けてビルドやテストを実行するAgent（Slave）PCを3台準備し、並列ビルドを行う事でCI/CDの高速化を実現します。

### 他のCI/CDツールとの比較

https://note.com/brave_whale155/n/n5ff3ed26d3e6

この記事がとても分かりやすかったです。感謝。
以下の観点でJenkinsと AWS CodePipelineを比較してます。
Jenkinsは自由度が高いみたいですが、コストやドキュメントの多さ等々でCodePipelineが勝っている印象です。

- **IaC（Infrastructure as Code）**
    - 環境情報
    - パイプライン
- **管理**
    - サーバー管理
    - 権限管理
    - コスト
    - 可用性
- **ドキュメントの多様さ**
- **使用可能な言語**
- **使用可能なGitサービス**

あとは、以下サイトで会員登録すれば上記以外の主要ツールの機能・コスト比較もできそうです。便利ですね。

https://www.itreview.jp/compares/aws-codebuild_vs_jenkins


# さいごに

これからJenkinsに触る機会も増えてくると思うので、不明点は公式ドキュメントを見ながら理解を深めていきます。
また、良かった情報hこの記事にアップデートしていきます。


# おまけ

弊社のご紹介もさせてください！

### 「日本で一番エンジニアが成長できる会社を創る」

https://prum.jp/

### エンジニアリングの募集

https://www.wantedly.com/projects/1808638

### PM・Webディレクションの募集

https://www.wantedly.com/projects/1355235

### セールス・事業開発の募集

https://www.wantedly.com/projects/1792065

### コーポレート系の募集

https://www.wantedly.com/projects/1752874

### コンサルティングの募集

https://www.wantedly.com/projects/1794481

弊社メンバーは日々学習した内容をアウトプットしております！
少しでもご興味を持たれた方は求人を見てみてください！
ご応募もお待ちしております！

### 最後までご覧いただき、ありがとうございました！