継続的インテグレーションツール
ソフトウェア プロジェクトでコードの変更を自動化するツールです。
Max Rehkopf
寄稿ライター
継続的なインテグレーション (CI) は、複数の開発者が共通のコード ベースで迅速に貢献してコラボレーションできるようにする、アジャイルと DevOps のベスト プラクティスです。継続的なインテグレーションがなければ、開発者のコラボレーションはコードの更新とマージを調整するだけの退屈な手動プロセスになります。
継続的インテグレーションの柱
CI は、自動テスト、バージョン管理、ビルドの自動化、自動デプロイなど、アジャイルおよび DevOps ソフトウェア開発のベスト プラクティスに基づいて構築されています。継続的インテグレーションのこれらの柱には、それぞれ固有のツールと哲学のエコシステムがあります。ソフトウェア開発ツールのプロバイダーは、これらの柱を 1 つの包括的なパッケージにバンドルした、完全なサービスとしての CI 製品を提供し始めています。バンドル製品をより深く理解するために、基礎を確認しましょう。
ソース管理/バージョン管理
おそらく継続的なインテグレーションの最も重要な基礎的柱はソース管理/バージョン管理です。これは、同じコード ベースで作業している複数の開発者間で発生する編集の競合を伝達して解決するために使用されます。ソース管理/バージョン管理にはさまざまなツールがありますが、その中で最も有名なのは Git と Subversion です。サービスとしての CI 製品の中心は、バージョン管理システムです。
自動テスト
最も重要なソフトウェアプロジェクトには、ビジネス製品や機能には明示的に使用されない追加のコードベースが含まれます。このセカンダリコードベースはテストスイートで、プライマリコードベースがバグなしで正常に機能していることを確認する一連のアサーションとして機能します。開発中、これらのテストは、新しいコードによって既存の機能に不具合が生じていないことを検証するために開発者によって実行されます。これらのテストケースは、この検証プロセスを自動化するために外部ツールによって実行することもできます。CI サービス製品は、ユーザーが指定したイベントが発生したときにプロジェクトに対してテストケースを自動的に実行します。通常、開発者がバージョン管理システムを使用してコードをプッシュすると、イベントによって完全なテストスイートの自動実行がトリガーされます。
ソリューションを見る
Open DevOps によるソフトウェアの構築と運用
関連する製品
コードをコラボレーション、テスト、デプロイする
ビルド自動化
「ビルド」は、ソフトウェアプロジェクトの現在のリリースバージョンをスナップショットするために作成されるアーティファクトです。ビルドは、さまざまなネットワークを介してエンドユーザーに配布されます。通常、プロジェクトはスクリプト化されたステップのセットを受け取ってビルドアーティファクトを作成します。CI ツールは、バージョン管理システムの自動トリガーを使用してこのビルドプロセスを合理化します。たとえば、新しいコードがコードベースのプロダクションブランチにマージされると、ユーザーがダウンロードできるようにリモートサーバーにビルドをアップロードするトリガーがあります。
デプロイメントの自動化
ビルドは、配布準備が整うとデプロイされます。デプロイの結果はプロジェクトによって異なります。たとえば、ウェブプロジェクトは公的にアクセスできるウェブサーバーにデプロイされます。このデプロイ中に、ビルドフェーズで生成されたアーティファクトがウェブサーバーにコピーされます。デプロイプロセスはモバイルとデスクトップで異なり、ユーザーがアプリをダウンロードできるように「ストア」へのアップロードが行われる場合があります。
継続的インテグレーションツールの比較
1. Bitbucket Pipelines
要約: Bitbucket Pipelines は、Atlassian が提供するクラウド版のバージョン管理システムである Bitbucket に直接組み込まれている CI ツールです。すでに Bitbucket にプロジェクトがある場合、Bitbucket Pipelines は CI を有効にするための簡単な次のステップです。Bitbucket Pipelines はコードとして管理されるため、簡単にパイプライン定義をコミットしてビルドを開始できます。さらに、Bitbucket Pipelines は CD も提供します。つまり、Bitbucket Pipelines でビルドしたプロジェクトは本番インフラストラクチャにもデプロイできます。
特長:
- セットアップと構成が容易
- 統合された Bitbucket エクスペリエンス
- サード パーティによるクラウド
2. Jenkins
要約: Jenkins は長年にわたる実績がある CI ツールです。オープン ソースであり、コミュニティによってアップデートされます。Jenkins は主にオンプレミスにインストールされます。組織が HIPAA 準拠データなどの機密性の高い顧客を扱うためのオンプレミス サポートを必要としている場合、Jenkins は最適なオプションです。
特長:
- オンプレミス
- オープン ソース
- 堅牢なアドオン/プラグイン エコシステム
Web サイト: https://jenkins.io/
3. AWS CodePipeline
要約: Amazon Web Services (AWS) は、市場で最も支配的なクラウド インフラストラクチャ プロバイダーで、あらゆるタイプのインフラストラクチャとコード開発の各タスクに対応するツールとサービスを提供しています。CodePipeline は AWS の CI ツール製品で、その他の既存の AWS ツールと直接連携してシームレスな AWS エクスペリエンスを提供します。
特長:
- 完全なクラウド
- Amazon Web Service との統合
- カスタム プラグイン サポート
- 堅牢なアクセス制御
Web サイト: https://aws.amazon.com/codepipeline/
4. CircleCI
要約: CircleCI は、最も一般的なバージョン管理システムのクラウド ホスティング ツールである Github と円滑に連携する CI ツールです。CircleCI は、バージョン管理システム、コンテナー システム、デリバリー メカニズムのマトリックスをサポートするという点で、最も柔軟な CI ツールの 1 つです。CircleCI は、オンプレミスでホストすることもクラウド製品を介して使用することもできます。
特長:
- CI イベントからの通知トリガー
- クイック ビルド用に最適化されたパフォーマンス
- SSH とローカル ビルドによる容易なデバッグ
- ビルドのパフォーマンスを測定する分析
Web サイト: https://circleci.com/
5. Azure Pipelines
要約: Azure は Microsoft のクラウド インフラストラクチャ プラットフォームで、Amazon Web Services の Microsoft 版です。Azure は上記の AWS CodePipeline と同様に、Azure のホスティング ツール スイートに完全に統合されている CI ツールを提供します。
特長:
- Azure プラットフォームの統合
- Windows プラットフォームのサポート
- コンテナのサポート
- Github の統合
Web サイト: https://azure.microsoft.com
6. GitLab
要約: Gitlab は、完全な DevOps エクスペリエンスを提供する新しい CI ツールです。Gitlab は、Github の全体的なエクスペリエンスを改善するために作成されました。Gitlab は、コンテナーをサポートする最新の UX を提供します。
特長:
- オンプレミスまたはクラウド ホスティング
- 継続的セキュリティ テスト
- UX の学習が容易
Web サイト: https://about.gitlab.com
7. Atlassian Bamboo
要約: Atlassian が提供するもう 1 つの CI 製品です。Bitbucket Pipelines は純粋にクラウドでホストされるオプションであるのに対して、Bamboo はセルフホスト型の代替手段を提供します。
特長:
- Atlassian 製品スイートとの最良の統合
- アドオンとプラグインの豊富なマーケット プレイス
- Docker エージェントによるコンテナー サポート
- IFTTT 機能用のトリガー API
Web サイト: https://www.atlassian.com/software/bamboo
貴社に最適な CI ツールは何ですか?
チームの CI ツールを選択する際には、考慮すべき重要な意思決定要因がいくつかあります。
バージョン管理システムのサポート
CI/CD システムの中心的な柱は、基盤となるバージョン管理システム (VCS) のサポートと統合です。最も一般的な VCS は、Git、Subversion、Mercurial、Perforce です。クラウド CI ツールは、これらすべての VCS をサポートするものもあれば、その一部をサポートするものもあります。お客様のプロジェクトの VCS をサポートする CI ツールを選択することが重要です。
オンプレミスとクラウドの比較
Jenkins などの上記の CI ツールのいくつかは、オンプレミスにインストールできます。この場合は、お客様のチームがお客様のインフラストラクチャで CI システムの設定と管理を行うことになります。これはプライバシーとセキュリティ上の理由で役立ちます。たとえば、顧客のデータ プライバシーに関してコンプライアンス標準を満たすことに懸念がある場合は、オンプレミスが必要になることがあります。さらに、オンプレミス インスタンスでは、より詳細なカスタマイズと設定の各オプションを使用できる場合があります。
オンプレミスは、ビジネスの中心的なニーズとは異なる追加作業になる場合があります。クラウドオプションでは、CI ツールの管理をサードパーティーベンダーにアウトソーシングします。クラウドホスティング会社は、CI ツールのアップタイム、サポート、および拡張を管理し、お客様のチームが中心的なビジネスニーズに専念できるようにします。これは、予算が限られているチームや、製品を市場に適合させる目標に必死に取り組む必要がある小規模企業にとって非常に大きなメリットになり得ます。
コンテナのサポート
コンテナー化は、最新のソフトウェア開発のトレンドです。コンテナー化によって、アプリケーションの変更不能で繰り返し可能な分離されたコピーを配布できます。コンテナー化は、Docker や Kubernetes などのツールを使用して実行できます。最新の CI ツールでは、コンテナーの CI/CD プロセスへの統合がサポートされます。コンテナーは「自分のマシンでの作業」の問題を解決して、アプリケーション コードがシステム レベルの依存関係の凍結スナップショットにパッケージ化されるようにします。これによって、チームのコードが CI ツールで実行されたときにローカル環境にレプリケートされることが保証されて、コンテナーがない場合に発生する環境パリティのトラブルシューティングの課題がすべて排除されます。
プラグインとサードパーティーとの統合
CI ツールは、その他のテクノロジースタックと統合するとさらに便利になります。CI ツールからエンジニアリングチームの効率性とパフォーマンスに関する分析を収集できます。スプリントプランニングアプリケーションと CI ツールを組み合わせると、コードが配信されたときにスプリントステータスが自動的に更新されます。これらの統合を使用すると、エンジニアリングチームの KPI とロードマップの指針を示すことできます。
CI で始める
パフォーマンスの高いエンジニアリング チームを実現するには、最新の CI ツールが不可欠です。エンジニアリング チームは、CI ツールを使用してコミュニケーションとデリバリー速度を最適化できます。市場には、人気のある CI ツールが多数あります。CI ツールを選ぶときに考慮する必要がある柱となる概念は、バージョン管理システムのサポート、オンプレミスとクラウド ホスティングの比較、デプロイ パイプライン、外部アプリケーションとの統合です。
ガイドを読む
これらのプラクティスを始めるのに役立つ詳細を説明したガイドとチュートリアルを用意しました。
この記事を共有する
次のトピック
おすすめコンテンツ
次のリソースをブックマークして、DevOps チームのタイプに関する詳細や、アトラシアンの DevOps についての継続的な更新をご覧ください。