Jenkins情報
Jenkinsとは
Jenkins(ジェンキンス)は開発プロセスの自動化を目的としてJavaで実装されたオープンソースのソフトウェア開発パイプライン自動化ツールです。
主に以下の2つの技術的実現に役立ちます。
- 継続的インテグレーション(CI): ソフトウェア開発プロセス全体の単純作業を自動化します。
- 継続的デリバリー(CD): 継続的インテグレーションによって作成されたソフトウェアをテスト環境や本番環境に自動的にリリースします。
Jenkinsはwarファイルとして提供されており、Apache Tomcatのようなサーブレットコンテナにデプロイすることによって起動できます。このwarファイルは実行可能な形式でビルドされているため、単体のコマンド java -jar jenkins.war での実行も可能です。
また、AccuRev、CVS、Subversion、Git、Mercurial、Perforce、ClearCase、RTCなどのSCM(Software Configuration Management:ソフトウェア構成管理)ツールをサポートしており、Apache AntやApache Mavenに加えて、任意のシェルスクリプトやWindowsバッチコマンドを実行できます。
ビルドはバージョン管理システムへのコミット、スケジューリング、特定のURLへのリクエストなど、さまざまなトリガーによって実行可能です。
Jenkinsの技術的強みの一つは拡張性であり、コミュニティからの要望に応じて1800以上のプラグインが存在します。新しいプラグインは定期的に開発されており、公式アップデートセンターで入手可能です。
2004年、JenkinsはSun Microsystems (現 Oracle) のJava開発者が自身のチームのビルドが頻繁に失敗することを改善するためのツール開発から始まりました。この社内プロジェクトは当時「Hudson」と名付けられ、使いやすさと拡張性の高さからSun Microsystems 内で急速に普及しました。
2005年、Hudsonはオープンソースプロジェクトとして公開され、継続的インテグレーション (CI) を行うための自動化ツールとしてJavaコミュニティを中心に広く利用されるようになりました。
2010年、OracleがSun Microsystemsを買収し、Hudsonの名称を商標登録しました。これを受けてコミュニティはプロジェクトの独立性確保のため2011年1月に「Jenkins」と改称して分岐し、それ以降、独立したオープンソースプロジェクトとして開発が続けられています。
2016年にはバージョン2がリリースされ、継続的デリバリーのためのパイプライン機能が標準搭載されました。また、Jenkinsはセキュリティとパフォーマンス向上のため、Javaのサポートバージョンを段階的に引き上げてきました。2022年にはJava 11が必須となり、その後Java 17、Java 21のサポートも追加されています。
主な特徴
継続的インテグレーション(CI)と継続的デリバリー(CD):
単純なCIサーバとして使用したり、任意のプロジェクトのための継続的デリバリのハブとしても活用できます。
簡単なインストール:
Jenkinsは自己完結型のJavaベースのプログラムで、主要なオペレーティングシステム用のパッケージが提供されています。また、Dockerイメージも利用可能です。
設定が容易:
内蔵のヘルプと即時実行のエラーチェックを含むWebインターフェースを通じて簡単にセットアップできます。
豊富なプラグイン:
アップデートセンターには1800以上のプラグインがあり、CI/CD機能の統合が可能です。
拡張可能性:
プラグインアーキテクチャによりJenkinsの機能を無限に拡張することができます。
分散型ビルド:
複数のプラットフォームでのビルド、テスト、デプロイを迅速に行うために作業を複数のマシンに分散させることができます。
メリット・デメリット
メリット・必要性
- 開発の効率化:
自動化により開発者は手作業のタスクから解放され、より重要な作業に集中できます。
- バグの早期発見:
継続的なテストによりバグを早期に発見し、ソフトウェアの品質を向上させることができます。
- 迅速なリリース:
自動化されたデプロイプロセスによりリリースサイクルを短縮できます。
- 可視化と追跡:
ビルドやテストの進捗状況を可視化し、問題を迅速に把握できます。
- 柔軟性と拡張性:
小規模から大規模なプロジェクトまで様々な規模の開発チームで使用できます。
デメリット・注意点・課題
- 複雑な初期設定:
機能が豊富なため多くのプラグインを使用する場合や複雑なパイプラインを構築する場合は設定に時間を要することがあります。
- Jenkinsfileの習得:
Jenkinsfile(Groovyベースのスクリプト言語)を扱う場合、初心者には習得に時間がかかることがあります。
類似プロダクト
Jenkinsと類似の機能を持つ製品には以下のようなものがあります。
- GitLab CI/CD
- GitHub Actions
- CircleCI
- Travis CI
- Azure DevOps
- Bamboo
- Jenkins X
GitLabとの統合性に優れ、GitLabユーザにとってスムーズなワークフロー構築が可能です。
Jenkinsの場合、GitHubとの統合にプラグインが必要となりますが、GitHub ActionsはGitHubとの統合性に優れ、GitHubユーザにとってスムーズなワークフロー構築が可能です。
Jenkinsはオンプレミス環境で利用する場合サーバの管理が必要になりますが、CircleCIはクラウドベースサービスのためサーバ管理不要で、需要に合わせたスケールアップ・スケールダウンが可能です。
Travis CIはGitHubとの統合に特化しており、GitHubリポジトリの変更を検知して自動的にビルド・テストを実行します。
Microsoft製のCI/CDツールで、プロジェクト管理、コードリポジトリ、テスト管理などの機能を提供しています。Azureとの統合性に優れ、スケーラビリティを発揮します。
Atlassian製のCI/CDツールで、Jira、BitbucketなどのAtlassian製品との統合性に優れ、リリース管理、レポート生成などの機能も提供しています。Bambooは商用製品であり、有料での利用となります。
Jenkins XはJenkinsプロジェクトから派生し、Kubernetes環境におけるCI/CDの課題をより簡単に解決するために開発されました。内部的にJenkinsやTektonなどの技術を利用していますが、ユーザインターフェースやワークフローは大きく異なります。
動作環境
Javaランタイム環境(JRE)がインストールされたOSで動作するクロスプラットフォーム対応です。サポートされているOSとハードウェア要件について以下に示します。
OS / System
- Docker
- Kubernetes
- Linux(Ubuntu/Debian, RHEL/CentOS/Rocky Linux/Fedora, Amazon Linux等)
- Windows
- macOS(10.14以降)
- Unix系(FreeBSD, OpenBSD等)
ハードウェアの最小構成
- RAM: 256MB
- ストレージ: 1GB以上(Dockerコンテナとして実行時は、10GB以上)
ミドルウェアの要件
- OpenJDK JDK / JRE 8 - 64 bits
- OpenJDK JDK / JRE 11 - 64 bits
動作対象ブラウザ
- Google Chrome
- Mozilla Firefox
- Microsoft Edge
- Apple Safari
Jenkinsのライセンス
JenkinsはMITライセンスのオープンソース・ソフトウエアです。
MITライセンスのソフトウェアは無償で再配布、商用利用などが可能となっており、他のオープンソースライセンスに比べ制限が極めて緩いライセンスになります。
オープンソース年間サポートサービス
OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。