CI/CD パイプライン: 例で学ぶ
CI/CD パイプラインとは何ですか?
CI/CD パイプラインは、ソフトウェア配信のプロセスを自動化します。 コードを構築し、テストを実行し、ソフトウェアの新しいバージョンを安全に展開するのに役立ちます。 CI/CD パイプラインは手動エラーを削減し、開発者にフィードバックを提供し、製品の迅速な反復を可能にします。
CI/CD パイプラインは、ソフトウェア製品のライフサイクル全体にわたって自動化と継続的な監視を導入します。 これには、統合とテストの段階から配信と展開までが含まれます。 これらの接続されたプラクティスは、CI/CD パイプラインと呼ばれます。
継続的インテグレーション、継続的デリバリー、継続的デプロイメントとは何ですか?
- 継続的インテグレーション は、チームのメンバーが少なくとも XNUMX 日に XNUMX 回自分の作業を統合できるソフトウェア開発方法です。 この方法では、すべての統合が自動ビルドによってチェックされ、エラーが検索されます。
- 継続的な配達 チームが短いサイクルでソフトウェア製品を開発するソフトウェアエンジニアリング手法です。 これにより、ソフトウェアをいつでも簡単にリリースできるようになります。
- 継続的な展開 は、自動展開を使用して製品機能を提供するソフトウェア エンジニアリング プロセスです。 これは、テスターがコードベースの変更が正しいかどうか、安定しているかどうかを検証するのに役立ちます。
CI/CD パイプラインのステージ
CI/CDパイプラインは、開発者がソフトウェアの新バージョンを提供するために実行すべき手順の実行可能な仕様です。各段階で失敗すると、電子メールで通知が送信されます。 Slack、または他の通信プラットフォーム。これにより、責任ある開発者は重要な問題について知ることができます。
CI/CD パイプラインの重要なステージは次のとおりです。

ソースステージ
ソース段階では、CI/CD パイプラインはコード リポジトリによってトリガーされます。 プログラムに変更があると、同等のパイプラインを実行する CI/CD ツールへの通知がトリガーされます。 その他の一般的なトリガーには、ユーザーが開始したワークフロー、自動スケジュール、他のパイプラインの結果などがあります。
ビルドステージ
これは、ソース コードとその依存関係をマージする CI/CD パイプラインの第 XNUMX 段階です。 これは主に、エンドユーザーに配布できる可能性のあるソフトウェアの実行可能なインスタンスを構築するために行われます。
次のような言語で書かれたプログラム C++, Java、C、Go言語をコンパイルする必要があります。一方、 Javaスクリプト, Python、Ruby プログラムはビルド ステージなしでも動作します。
ビルド段階を通過できないということは、プロジェクトの基本的な構成に誤りがあることを意味するため、そのような問題にはすぐに対処することをお勧めします。
テストステージ
テスト ステージには、コードの正確さとソフトウェアの動作を検証するための自動テストの実行が含まれます。 この段階では、簡単に再現できるバグがクライアントに到達するのを防ぎます。 自動テストを作成するのは開発者の責任です。
デプロイステージ
これは、製品が公開される最後の段階です。 ビルドが必要なすべてのテスト シナリオを正常に通過すると、ライブ サーバーにデプロイする準備が整います。
CI/CD パイプラインの例
CI/CD パイプラインの例を次に示します。
- ソースコード管理: コードをプライベート リポジトリとして GitHub にホストします。 これは、アプリケーションを主要なサービスやソフトウェアと統合するのに役立ちます。
- 継続的インテグレーション: 継続的インテグレーションとデリバリープラットフォームを使用する CircleCI すべてのコードをコミットします。変更が通知されると、このツールは GitHub で利用可能なコードをプルし、テストをビルドして実行します。
- コードを UAT にデプロイします。 構成 CircleCI コードを AWS UAT サーバーにデプロイします。
- 実稼働環境にデプロイします。 コードを UAT にデプロイするには、継続的統合手順を再利用する必要があります。
CI/CD パイプラインのベスト プラクティス
CI/CD パイプラインのベスト プラクティスは次のとおりです。
- したがって、現在の開発プロセスを書き留めておくと、変更が必要な手順と簡単に自動化できる手順を知ることができます。
- 開発プロセス全体を一度に完了する前に、プロジェクトの小さな証明から始めてください。
- 複数のステージでパイプラインをセットアップし、最初に高速の基本テストを実行します。
- 各ワークフローは、同じ、クリーンで隔離された環境から開始します。
- コード スタイルからセキュリティ スキャンまですべてをカバーするオープン ソース ツールを実行します。
- すべてのブランチに対して標準のテスト セットを実行することで、コードの品質を継続的にチェックできるように、より優れたコード ハブをセットアップします。
- ピアコードは各プルリクエストをレビューして、協力して問題を解決します。
- CD 自動化への移行を開始する前に、成功指標を定義する必要があります。 これにより、ソフトウェアを一貫して分析し、開発の進捗状況を必要に応じて改良することができます。
CI/CD パイプラインの利点
CI/CD パイプラインの長所/利点は次のとおりです。
- ビルドとテストは手動で簡単に実行できます。
- コードの一貫性と品質を向上させることができます。
- 柔軟性が向上し、新しい機能を提供できるようになります。
- CI/CD パイプラインにより通信を効率化できます。
- ソフトウェア配信のプロセスを自動化できます。
- 顧客からのフィードバックを迅速に得ることができます。
- CI/CD パイプラインは、製品の認知度を高めるのに役立ちます。
- これにより、手動エラーを取り除くことができます。
- コストと労力を削減します。
- CI/CD パイプラインにより、ソフトウェア開発ライフサイクルを短縮できます。
- 自動化されたパイプライン デプロイメントを備えています。
- CD パイプラインは、開発者からクライアントへの迅速なフィードバック ループを提供します。
- 組織の従業員間のコミュニケーションを改善します。
- これにより、開発者は、ビルド内のどの変更が仲介業者に影響を与える可能性があるかを把握し、将来的に変更を回避することができます。
- 自動テストといくつかの手動テストの実行は、発生する可能性のある問題の修正に役立ちます。
重要な CI/CD ツール
重要な CI/CD ツールは次のとおりです。
1) ジェンキンス
Jenkins は、自動化された方法で継続的インテグレーション プロセス (だけではありません) を実現するのに役立つオープンソースの継続的インテグレーション サーバーです。 Jenkins は無料で、完全に次の言語で書かれています。 JavaJenkins は世界中で広く使用されているアプリケーションで、インストール数は約 300 万件あり、日々増加しています。
機能と特徴:
- Jenkin は XNUMX 日に何度もコードをビルドしてテストします。
- ビルドとテストのプロセスを自動化し、タイミングを節約し、欠陥を削減します。
- ビルドとテストが成功するたびに、コードがデプロイされます。
- 開発サイクルは速いです。
リンク: https://www.jenkins.io/download/
2) Bamboo
Bamboo は、自動ビルド、テスト、リリースを 1 か所で実行する継続的インテグレーション ビルド サーバーです。JIRA ソフトウェアおよび Bitbucket とシームレスに連携します。
機能と特徴:
- 並列バッチテストを実行する
- セットアップ Bamboo とてもシンプルです
- 環境ごとの権限機能により、開発者と QA は自分の環境に展開できます。
- 組み込みの Git ブランチとワークフロー。 ブランチを自動的にマージします。
リンク: https://www.atlassian.com/software/bamboo
3) サークルシ
サークルCi クロスプラットフォームのモバイルアプリなど、あらゆる環境で実行できる柔軟なCIツールです。 Python API サーバー、または Docker クラスター。このツールはバグを減らし、アプリケーションの品質を向上させます。
機能と特徴:
- ビルド環境を選択できるようにします
- 多くの言語をサポート C++, Javaスクリプト、NET、PHP、 Python、そしてルビー
- Docker のサポートにより、カスタマイズされた環境を構成できます。
- 新しいビルドがトリガーされると、キューに入れられたビルドまたは実行中のビルドが自動的にキャンセルされます。
IT リーダーにとって CI/CD パイプラインが重要なのはなぜですか?
- CI/CD パイプラインにより信頼性が向上します。
- それにより、開発者にとって IT チームはさらに魅力的になります。
- CI/CD パイプラインは、IT リーダーがバージョン管理からコードを取得してソフトウェア ビルドを実行するのに役立ちます。
- コードをターゲットのコンピューティング環境に移動するのに役立ちます。
- プロジェクト リーダーが環境変数を簡単に管理し、ターゲット環境に合わせて構成できるようにします。
- プロジェクト マネージャーは、プッシュ アプリケーション コンポーネントを Web サービス、データベース サービス、API サービスなどのサービスに公開できます。
- 配送状況に関するログデータとアラートを提供します。
- これにより、プログラマーは作業を進める前にコードの変更を検証できるため、本番環境で欠陥が発生する可能性が低くなります。
Ci/CD パイプライン KPI
- サイクルまたは展開時間: サイクル タイムは、構築段階から実稼働までにかかる時間です。 開発プロセスのフェーズを測定することで、平均ライフサイクル時間を取得できます。 このメトリクスは、プロセスのボトルネックと開発時間の全体的な速度を洞察します。
- 開発頻度: 開発頻度により、自動化中に見つかったボトルネックを分析できます。 小規模なリリースをより頻繁に行うことで、欠陥のリスクが軽減され、欠陥が見つかった場合には修正されます。 このような指標は、チームの効率性の全体的な尺度です。
- 変更リードタイム: 開発フェーズの開始から展開までの時間を測定します。この指標は、開発プロセス全体と、チームがどの程度うまく連携しているかを示す指標です。
- 故障率の変更: 開発が成功した回数と失敗した回数に焦点を当てます。
- MTTR 対 MTTF: MTTR (平均復旧時間) は、チームが障害から復旧するために必要な時間です。 MTTF (平均故障時間) は、修正から停止までの時間を測定します。 これらの指標は、問題に対応して修正するチームの能力を反映しています。
製品概要
- CI/CD パイプラインは、ソフトウェア配信のプロセスを自動化します。
- CI/CD パイプラインは、ソフトウェア製品のライフサイクル全体にわたって自動化と継続的な監視を導入します。
- 継続的インテグレーションは、チームのメンバーが少なくとも XNUMX 日に XNUMX 回は作業を統合できるソフトウェア開発方法です。
- 継続的デリバリは、チームが短いサイクルでソフトウェア製品を開発するソフトウェア エンジニアリング手法です。
- 継続的展開は、自動展開を使用して製品の機能を提供するソフトウェア エンジニアリング プロセスです。
- CI/CD パイプラインには、1) ソース ステージ、2) ビルド ステージ、3) テスト ステージ、4) デプロイ ステージの XNUMX つのステージがあります。
- 重要 CI / CDツール ジェンキンス、バンボ、サークル CI です。
- CI/CD パイプラインにより信頼性が向上します。
- CI/CD パイプラインは、開発者にとって IT チームをさらに魅力的なものにします。
- サイクル タイムは、構築段階から実稼働までにかかる時間です。
- 開発頻度により、自動化中に見つかったボトルネックを分析できます。
- 変更リードタイムは、開発フェーズの開始から展開までの時間を測定します。
- 変更失敗率は、開発が成功した回数と失敗した回数に焦点を当てています。
- MTTR (平均復旧時間) は、チームが障害から復旧するために必要な時間です。
- MTTF (平均故障時間) は、修正から停止までの時間を測定します。



