ジェンキンスとは何ですか? 継続的インテグレーション (CI) ツールを使用する理由

ジェンキンスとは何ですか?

ジェンキンズ オープンソースの継続的インテグレーションサーバーで、 Java 継続的な統合プロセスを自動的に実現するための一連のアクションを調整します。Jenkins は、ソフトウェアの構築、テスト、ドキュメント化、展開、およびソフトウェア開発ライフサイクルのその他の段階から、ソフトウェアの開発ライフサイクル全体をサポートします。

Jenkins は世界中で広く使用されているアプリケーションで、インストール数は約 300 万件に上り、日々増加しています。Jenkins を使用すると、ビルドとテストを迅速に自動化できるため、ソフトウェア企業はソフトウェア開発プロセスを加速できます。

これはサーバーベースのアプリケーションであり、Apache Tomcat などの Web サーバーが必要です。 Jenkins ソフ​​トウェアがこれほど普及した理由は、プロジェクトの開発中に発生する繰り返しタスクを監視するためです。 たとえば、チームがプロジェクトを開発している場合、Jenkins はプロジェクトのビルドを継続的にテストし、開発の初期段階でのエラーを表示します。

継続的インテグレーションとは何ですか?

継続的インテグレーション 複数の開発者によるコードの変更を XNUMX つのプロジェクトに何度も統合するプロセスです。 ソフトウェアはコードのコミット直後にテストされます。 コードがコミットされるたびに、コードがビルドされ、テストされます。 テストに合格すると、ビルドのデプロイメントがテストされます。 デプロイメントが成功すると、コードが実稼働環境にプッシュされます。

このコミット、ビルド、テスト、デプロイは継続的なプロセスであるため、継続的インテグレーション/デプロイメントと呼ばれます。

Jenkinsはどのように機能しますか?

Jenkins はサーバーベースのアプリケーションであり、次のようなさまざまなプラットフォームで実行するには、Apache Tomcat などの Web サーバーが必要です。 Windows、Linux、 macOS、Unix など。Jenkins を使用するには、Jenkins サーバーが実行する一連のステップであるパイプラインを作成する必要があります。 Jenkins Continuous Integration Pipeline は、次の目的で設計された一連のツールで構成される強力な手段です。 host, モニター, コンパイル および test 次のようなコード、またはコードの変更:

  • 継続的統合サーバー (ジェンキンス、 Bamboo, CruiseControl, TeamCity、 その他)
  • ソース管理ツール (例: CVS、SVN、GIT、Mercurial、Perforce、ClearCase など)
  • ビルドツール (Make、ANT、Maven、Ivy、 Gradle、 その他)
  • 自動テストフレームワーク (Selenium, Appium、TestComplete、UFT など)

ジェンキンの歴史

  • 川口 幸介 Java SUN Microsystems で働く開発者は、コードの構築とエラーの修正を繰り返すことに疲れていました。2004 年に、ビルドとテストのタスクを自動化する Hudson という自動化サーバーを作成しました。
  • 2011年には、 Oracle Sun Microsystems を所有していた会社は Hudson オープンソース コミュニティと論争を起こし、Hudson をフォークして Jenkins に名前を変更しました。
  • Hudson と Jenkins はどちらも独立して動作し続けました。しかし、短期間で Jenkins は多くのプロジェクトと貢献者を獲得しましたが、Hudson は 32 のプロジェクトしか残っていませんでした。時間が経つにつれて、Jenkins の人気が高まり、Hudson はメンテナンスされなくなりました。

Jenkins との継続的インテグレーションを使用する理由は何ですか?

昔ながらのソフトウェア開発方法の方が良いと考える人もいるかもしれません。次の例でJenkinsを使用したCIの利点を理解しましょう。

10 人ほどの開発者が、 共有リポジトリ。 25 日でタスクを完了する開発者もいれば、完了までに 30 日かかる開発者もいます。

ジェンキンス以前 ジェンキンスのその後
すべての開発者が割り当てられたコーディング タスクを完了すると、全員が同時にコードをコミットしていました。 Laterビルドはテストされ、デプロイされます。

コードコミットはビルドされ、テストサイクルは非常にまれで、単一のビルドは数日後に完了しました。

開発者がコードをコミットするとすぐにコードがビルドされ、テストされます。 Jenkin は XNUMX 日に何度もコードをビルドしてテストします

ビルドが成功すると、Jenkins はソースをテスト サーバーにデプロイし、デプロイメント チームに通知します。

ビルドが失敗した場合、Jenkins は開発者チームにエラーを通知します。

コードは一度にビルドされるため、一部の開発者は、他の開発者がコーディングを完了するまでビルドを確認するまで待つ必要があります。 コードは、開発者がコミットした直後にビルドされます。
複数のコミットのエラーを切り分け、検出し、修正するのは簡単な作業ではありません。 コードは XNUMX 人の開発者がコミットするたびにビルドされるため、ビルドの失敗の原因となったコードを簡単に検出できます。
コードのビルドと 試験工程 完全に手作業なので、失敗する可能性が非常に高いです。 自動化されたビルドとテストのプロセスにより、タイミングが節約され、欠陥が減少します。
すべてのエラーが修正されテストされると、コードがデプロイされます。 ビルドとテストが成功するたびに、コードがデプロイされます。
開発サイクルが遅い 開発サイクルは速いです。 ユーザーは新機能をより簡単に利用できるようになります。 利益が増加します。

継続的インテグレーションの実世界のケーススタディ

皆さんは古い携帯電話 Nokia をご存知だと思います。 Nokia は以前、夜間ビルドと呼ばれる手順を実装していました。 日中にさまざまな開発者が複数のコミットを行った後、ソフトウェアは毎晩ビルドされました。 ソフトウェアは XNUMX 日に XNUMX 回しかビルドされないため、大規模なコード ベースのエラーを切り分け、特定し、修正するのは非常に骨が折れます。

Later、彼らは継続的インテグレーションアプローチを採用しました。ソフトウェアは、開発者がコードをコミットするとすぐに構築され、テストされました。エラーが検出された場合、各開発者は欠陥を迅速に修正できます。

継続的インテグレーションの実世界のケーススタディ

Jenkins プラグイン

デフォルトでは、Jenkins には限られた機能セットが付属しています。 Jenkins インストールを Git などのバージョン管理ツールと統合する場合は、Git に関連するプラグインをインストールする必要があります。実際、Maven などのツールとの統合では、 Amazon EC2 では、Jenkins にそれぞれのプラグインをインストールする必要があります。

Jenkins プラグイン
Jenkins でのプラグインの統合

Jenkins を使用する利点

  • Jenkins は非常にオープンなコミュニティによって管理されています。毎月、公開会議が開催され、Jenkins プロジェクトの開発のために一般の人々からの意見が取り入れられています。
  • これまでに約 280 件のチケットがクローズされており、プロジェクトは XNUMX か月ごとに安定版リリースを発行しています。
  • テクノロジーが成長するにつれて、Jenkins も成長します。 これまでのところ、Jenkins のプラグイン データベースには約 320 のプラグインが公開されています。 プラグインを使用すると、Jenkins はさらに強力になり、機能が豊富になります。
  • Jenkins ツールはクラウドベースのアーキテクチャもサポートしているため、クラウドベースのプラットフォームに Jenkins をデプロイできます。
  • Jenkins が人気になった理由は、開発者によって開発者のために作成されたからです。

Jenkins を使用するデメリット

Jenkins は非常に強力なツールですが、欠点もあります。

  • そのインターフェイスは時代遅れで、現在の UI トレンドと比較するとユーザーフレンドリーではありません。
  • Jenkins は多くの開発者に愛されていますが、Jenkins はサーバー上で実行され、そのアクティビティを監視するにはサーバー管理者としてのスキルが必要なため、維持するのはそれほど簡単ではありません。
  • 多くの人が Jenkins を導入しない理由の XNUMX つは、Jenkins のインストールと構成が難しいことです。
  • 継続的インテグレーションは、小さな設定変更が原因で定期的に中断します。 継続的統合は一時停止されるため、開発者の注意が必要です。

まとめ:

  • 継続的インテグレーションでは、コードのコミット後、ソフトウェアがすぐに構築され、テストされます。
  • ソフトウェア プロジェクトにおける継続的インテグレーションの一連のアクションを調整するために使用される Jenkins
  • Jenkins が登場する前は、開発者全員が割り当てられたコーディング タスクを完了すると、全員が同時にコードをコミットしていました。 Laterビルドはテストされ、デプロイされます。
  • Jenkins の後、開発者がコードをコミットするとすぐにコードがビルドされ、テストされます。 Jenkin は XNUMX 日に何度もコードをビルドしてテストします
  • デフォルトでは、Jenkins には限られた機能セットが付属しています。 Jenkins インストールを Git などのバージョン管理ツールと統合する場合は、Git に関連するプラグインをインストールする必要があります。 こちらもチェック 最高の Jenkins 代替ツール
  • Jenkinsの最大の利点は、公開会議を開催し、Jenkinsプロジェクトの開発のために一般の人々からの意見を取り入れるコミュニティによって管理されていることです。
  • Jenkins の最大の欠点は、そのインターフェイスが時代遅れで、現在の UI トレンドと比較してユーザーフレンドリーではないことです。 よりモダンなユーザー エクスペリエンスを提供する可能性のある他のオプションを検討している場合は、以下のいくつかを検討してみるとよいでしょう。 主要な継続的統合ツール にアクセスできるようにしています。