2022年4月18日

Continuous Integration

最高のオープンソースCIツール

新しい継続的インテグレーションツールをお探しですか?私たちは、オープンソースのCIツールのリストをまとめましたので、意思決定にお役立てください。

Design tekton blog

Harnessがオープンソースコミュニティーを愛していることは、周知の通りです。多くの企業、チーム、そして人々がオープンソースへのコミットメントを遵守していることを私たちは理解し、敬意を表します。そこで今回は、オープンソースの継続的インテグレーションツールに焦点を当てたいと思います。もし新たなオープンソースのCIツールをお探しであれば、この記事がお役に立てれば幸いです。  

継続的インテグレーション(CI)とCIツールの紹介

継続的インテグレーションプロセスは、ビルドをデプロイ可能なアーティファクトに変えます。少なくとも、これが現代の定義です。CIは90年代から存在し、Kent Beck氏のエクストリームプログラミングモデルから有名になりました。定義は年を経るごとに変わりましたが、そこには興味深い歴史があります。もっと詳しく知りたい方は、信頼できる定番のWikipediaをご覧ください。 

Martin Fowler氏の定義によれば、CIシステムは以下の4つのことを行います。

  • 全てのソースコードが存在し、誰でも現在のソース(および以前のバージョン)を入手できる単一の場所を維持すること。
  • ビルドプロセスを自動化し、誰でも1つのコマンドでソースからシステムをビルドできるようにすること。
  • テストを自動化し、いつでも1つのコマンドでシステム上の優れたテストスイートを実行できるようにすること。
  • 誰でも最新で最も正確な実行ファイルを入手できるようにすること。

要するに、CIを実践することで、開発者はコードを1つの中央リポジトリーにマージして統合し、その後、自動ビルドとテストを実行することができます。これらの自動ビルドは、コードのチェックインやマージなどのイベント、または単に定期的なスケジュールで起動されます。継続的インテグレーションの最終目標は、デプロイメント用のアーティファクトをビルドして公開することです。

市場には多くの継続的インテグレーションツールがあり、自分の環境やユースケースに合ったものを選ぶのは簡単ではありません。以下では、ソフトウェア開発プロジェクトを円滑に進めるためのオープンソースのCIツールをいくつかご紹介します。 

レガシーな継続的インテグレーションツール

CruiseControl

CCはThoughtworksに端を発し、大規模なコミュニティーによってメンテナンスされ、広く利用される継続的インテグレーションサーバーとなりました。残念ながら現在はアバンダンウェアとなっていますが、2010年のリリース以来、この分野のパイオニア的な製品となっています。当初はJavaプログラミング言語用に設計されましたが、やがて他の言語にも対応するように拡張されました。CCは継続的インテグレーションツールの草分け的存在ですが、当時は本当に人気があったんですよ。以下は、人気絶頂期のコントリビューションの頻度を表すグラフです。

chart for data

出典:http://gitgear.com/why_jenkins/CI_Ranking_2013Q3_F1.pdf(リンク切れ)

Jenkins

オープンソースのCIといえば、すぐにJenkinsが思い浮かぶのではないでしょうか。Jenkinsは、継続的インテグレーションと継続的デリバリーの両方に使用される、最も有名なオープンソースの自動化ツールです。巨大で活発なコミュニティーが存在し、それが追加のサポート、ドキュメント、機能につながっています。Jenkinsは、このコミュニティーのおかげで1800以上のプラグインを利用することができ、ツールの柔軟性を高めていますが、そのメンテナンスは面倒で時間とリソースを消費するようになっています。プラグインの膨大な数によってカスタマイズが容易になり、Jenkinsは開発に必要なほぼ全てのツールと統合できるようになります。 

Jenkinsには確かに多くの良い点がありますが(主に前述の「柔軟なCIツール」が理由)、現実には10年前のツールであり、クラウドネイティブになるように作られていません。アジャイルチーム向けではないのは明らかです。また、拡張性は非常に優れていますが、スクリプトやプラグインに頼らなければならないこと自体、良いことではありません。まず、プラグインの作成者がしばしば開発を投げ出してしまいます(ユーザーは新しいプラグインを探すか、自分で書くか、奔走することになります)。これらのプラグインは依存関係の連鎖を生み出し、セキュリティー上の脆弱性をもたらす可能性があり、プラグインのアップグレードやアップデートがそれなりの労力を要するなど、さまざまな問題があります。外部から追加される拡張性に大きく依存するような開発環境では、安心して製品をお勧めすることはできません。実際、私たちの顧客の中にも、Jenkinsを「悪夢」や「怪物」と呼ぶ人がいます。

リストは続く…

レガシーなCIシステムのリストは延々と続き、既に成熟したCIソフトウェア開発の風景を増やしています。これらは全て、多くの理由からCI導入のロングテールに属しています。中でも、複雑なワークフロー、煩雑な開発プロセス、バージョン管理システムからの分離、メンテナンス不能なCIサーバー、緊密な統合の欠如などが挙げられます。墓石にはApache Continuum、Apache Gump、BuildBot、CDash...といった名前が刻まれています。もしここに挙げたソフトウェアプロジェクトが実際は活発に進められているにも関わらず終わったものと見なしていたらすみません。

最新の継続的インテグレーションツール 

GitLab

GitLabは、ソースコード管理、CI/CD、セキュリティー、バリューストリーム管理、GitOpsなどを提供する、完全なDevOpsプラットフォームです。そのルーツはソースコード管理ツールとGitリポジトリーであり、そのカテゴリーでは間違いなく業界リーダーです。同社の継続的インテグレーションと継続的デリバリープラットフォームは、ソフトウェアのリリースプロセスを加速し、効率的に改善するのに役立ちます。 

GitLabのCI機能(GitLabにはモジュラーオファーはなく、CIに使うかどうかに関わらずプラットフォームは1つ)は、SaaSまたはセルフマネジメントとして提供されます。SaaSの場合、CIは400分まで無料で利用できます。この分数を消費すると、有償プランが開始されます。GitLabは包括的なユーザーインターフェイスを備えています。GitLabの全ての機能(CIの問題を解決するために設計されたものと、それ以外の目的のために設計されたもの)が同じインターフェイス内にあり、CIユースケースとしてはやや乱雑な印象です。このプラットフォームを利用するには、間違いなく学習曲線があります。 

エンタープライズグレードのサポートが受けられるCI/CDツールを探している大規模な組織にとっては、適切なソリューションとなりえます。GitLabは大きな製品なので、ディスカッションフォーラムやドキュメント、ビデオチュートリアルなど、多くのコミュニティーによるサポートがあり、問題が発生したときに利用できます。 

GitLabは完全に無料というわけではありませんが(はるかに多くの機能が利用できる有料版もあります)、オープンなコア版は無料です。大企業にとっては十分ではないかもしれませんが、オープンソースプロジェクトや小規模な企業、慈善団体にとっては良い選択肢です。

Tekton

Tektonは、CI/CDシステムを構築するためのオープンソースフレームワークです。Kubernetesネイティブであり、既存のクラスターに宣言的にデプロイおよび設定することができます。Tektonは拡張機能としてインストール、実行され、パイプラインを作成、再利用するためにユーザーが使用できるビルディングブロックを定義するKubernetes Custom Resourcesのセットで構成されています。Kubernetesに限定されますが、ビルトインのベストプラクティスによる標準化、複数のクラウドプロバイダーやロケーション間での移植性、基盤となる実装の抽象化による柔軟性を実現します。 

Tektonのパイプライン、リリース、ワークフロー、その他のCI/CDコンポーネントに関する業界仕様は、他の既存のCI/CDツールともうまく連動しています。Tektonを使用することで、開発チームは、不変のイメージの作成とデプロイ、インフラのバージョン管理、容易なロールバック、ブルーグリーンやカナリアなどの高度なデプロイメントパターンを活用することができます。

 

harness logo

Harness CI 

Harnessの自己管理型継続的インテグレーション(通称Drone.io)は、常にオープンソースかつ無償で提供されます。Drone CIは、ソフトウェア開発ライフサイクルを強化したい多忙なチームのための、コンテナネイティブ、イベントベース、マルチアーキテクチャー、マルチOSのプラットフォームです。 

オンプレミスのHarness CIはコンテナネイティブなので、全てのビルドが分離され、全ての拡張機能が標準化されています。また、約150のコンテナ型プラグインを搭載しています。これにより、カスタマイズが容易になり、ツールに拡張性を持たせることができます。ユーザーが探しているプラグインが存在しなければ、bashやシェルスクリプトを書くように簡単に作成することができます。ユーザーはプルリクエストを送ることによってプラグインレジストリーのウェブサイトにそれを追加し、他の人が使えるようにできます。これがオープンソースの力です。 

harness ui

私たちのエバンジェリストであるJim Sheldonは、Harness CIをオンプレミスで使い始めるための粋なガイドを作成しました。基本的には、テストとスキャナーの並列実行、選択したバージョン管理システム(この場合はGitHub)、そして最後に、仮想マシンや構内でホストされている全てのCIパイプラインを制御するためのフレンドリーなユーザーインターフェイスについて、製品の感触を得ることができるでしょう。

結論

オープンソースのCIツールに関するこの記事が、ツール決定に必要な洞察を提供することを願っています。しかし、より多くの情報を必要とし、有償の製品も検討されているなら、私たちは最高の継続的インテグレーションツールの短いリストを用意していますので、そちらをお読みください。また、完全なCI/CDプラットフォームをお探しの場合は、当社の無料eBook「CI/CDバイヤーズガイド」で、市場にある多くのツールに関する詳細な洞察をご覧ください。


この記事はHarness社のウェブサイトで公開されているものをDigital Stacksが日本語に訳したものです。無断複製を禁じます。原文はこちらです。

Harnessに関するお問い合わせはお気軽にお寄せください。

お問い合わせ