ポイント: Jenkinsを使用してCI/CDパイプラインを構築することで、ソフトウェア開発を自動化し、効率と品質を向上させます。主なステップには、Jenkinsのインストール、パイプラインの構成、さまざまなプラグインを使用してビルドを実行することが含まれます。
- Jenkinsはパイプラインステージの可視化と複数のツールとの統合を可能にします。
- Azure DevOpsなどのクラウドベースのCI/CDパイプラインの例は、効率化された操作を示しています。
効果的な継続的インテグレーション(CI)および継続的デリバリー(CD)パイプラインは、急速に進化する技術環境に対応するために現代のDevOpsチームにとって不可欠です。アジャイルの概念と組み合わせることで、優れたCI/CDパイプラインはソフトウェア開発ライフサイクルを合理化し、高品質のソフトウェアを迅速に提供することができます。
この記事では、次のことについて説明します:
CI/CDパイプラインを構築する前に知っておくべきこと
CI/CDパイプラインとは何か?
CI/CDパイプラインの主な目的は、ソフトウェア開発ライフサイクル(SDLC)を自動化することです。
パイプラインは、コードの記述やテストの実行から、デリバリーやデプロイメントまで、ソフトウェア開発プロセスの多くの側面をカバーします。簡潔に言うと、CI/CDパイプラインは開発ライフサイクルに自動化と継続的監視を統合します。この種のパイプラインは、ソフトウェア開発ライフサイクルのすべてのステージを包含し、各ステージを接続するものを総称してCI/CDパイプラインと呼びます。
これにより、開発チームの手作業を減らし、その結果、迅速な結果を提供しながらヒューマンエラーの数を減少させます。これらすべてが、デリバリーチームの生産性の向上に寄与します。
(CI/CDパイプラインのステージについての詳細を学ぶには、CI/CDパイプラインのステージ、デプロイメントパイプラインとCI/CDの役割を参照してください。)
Jenkinsとは?
Jenkinsは、継続的インテグレーションおよび継続的デプロイメント(CI/CD)のためのオープンソースサーバーであり、ソフトウェア開発のビルド、テスト、デプロイフェーズを自動化します。多数のプラグインを簡単に統合できるため、ツール、プログラミング言語、クラウド環境の選択肢が豊富で、Jenkinsは非常に柔軟で信頼性の高いアプリを効率的に開発するための手助けをします。
なぜJenkinsをCI/CDに使用するのか
なぜJenkinsがCI/CDパイプラインを構築するための良い選択肢であるのか疑問に思うかもしれません。以下は、その人気の理由のいくつかです:
- 広範なプラグインサポート:やりたいことがあれば、すでにそのためのプラグインが存在する可能性が高く、作業が迅速かつ簡素化されます。
- 活発なオープンソースコミュニティ:ライセンスコストが無料であることは始まりに過ぎません。活発なコミュニティによってサポートされ、ソリューション、アドバイス、アイデア、チュートリアルが提供されています。
- プラットフォーム非依存:特定のオペレーティングシステムに縛られません。
- スケーラブル:必要に応じてノードを追加したり、異なるオペレーティングシステムを持つ異なるマシンでビルドを実行したりできます。
- 統合可能:使用しているツールとJenkinsを簡単に統合できます。
- 実績のある:Jenkinsは最初のCI/CDツールの1つであり、信頼性があります。
Jenkins CI/CDパイプラインの例
Jenkinsを使用して構築されたCI/CDパイプラインはどのようなものか、アクションで見てみましょう。以下はシンプルなウェブアプリケーションの開発プロセスです。
- 開発者がコードを書き、変更を中央のコードリポジトリにコミットします。
- リポジトリが変更を検出すると、Jenkinsサーバーがトリガーされます。
- Jenkinsは新しいコードを取得し、自動ビルドとテストを実行します。ビルドまたはテスト中に問題が検出された場合、Jenkinsは事前に設定された方法(メールやSlackなど)で開発チームに自動的に通知します。
- 最終パッケージは、AWS Elastic Beanstalk、アプリケーションオーケストレーションサービスにアップロードされ、製品デプロイメントに使用されます。
- Elastic Beanstalkは、インフラストラクチャのプロビジョニング、負荷分散、およびEC2、RDSなどの必要なリソースタイプのスケーリングを管理します。
CI/CDパイプラインのツール、プロセス、複雑さはこの例から異なる場合があります。多くは開発要件や組織のビジネスニーズに依存します。典型的なオプションには、シンプルな4ステージパイプラインや、複数のビルド、異なるテストステージ(スモークテスト、回帰テスト、ユーザー受け入れテスト)を含むマルチステージ並列パイプライン、ウェブやモバイルなどのマルチチャネルデプロイメントが含まれます。
Jenkinsを使用したCI/CDパイプラインを構築するための8つのステップ
このセクションでは、Jenkinsを使用してシンプルなCI/CDパイプラインを構成する方法を示します。
始める前に、Jenkinsが必要な依存関係で正しく構成されていることを確認してください。また、Jenkinsの基本的な概念を理解していることも重要です。この例では、JenkinsはWindows環境で構成されています。
ステップ1:Jenkinsをインストール
公式ウェブサイトからJenkinsをダウンロードしてインストールします。次のDockerコマンドを使用してJenkinsをインストールします:
docker run -d -p 8080:8080 jenkins/jenkins:lts
ステップ2:Jenkinsを構成し、必要なプラグインを追加
Jenkinsの構成は、必要なプラグインを選択することです。GitやPipelineは最初から追加したい一般的に使用されるツールです。
ステップ3:Jenkinsを開く
Jenkinsにログインし、「新しいアイテム」をクリックします。
ステップ4:パイプラインに名前を付ける
メニューから「パイプライン」オプションを選択し、パイプラインの名前を入力して「OK」をクリックします。
ステップ5:パイプラインを構成
パイプライン構成画面でCI/CDパイプラインを構成できます。そこでは、ビルドトリガーやパイプラインの他のオプションを設定できます。最も重要なセクションは「パイプライン定義」セクションで、ここでパイプラインのステージを定義できます。パイプラインは、宣言的およびスクリプト構文の両方をサポートしています。
(詳細は公式のJenkinsドキュメントを参照してください。)
サンプルの「Hello World」パイプラインスクリプトを使用します:
pipeline {
agent any
stages {
stage('Hello') {
steps {
echo 'Hello World'
}
}
}
}
適用をクリックして保存します。シンプルなパイプラインが構成されました!
ステップ6:パイプラインを実行
「今すぐビルド」をクリックしてパイプラインを実行します。
これにより、パイプラインステージが実行され、その結果が「ステージビュー」セクションに表示されます。ここには、単一のパイプラインステージしか構成していないことが示されています。
ビルドプロセスのコンソール出力を確認することで、パイプラインが正常に実行されたことを確認できます。
ステップ7: パイプライン定義を拡張する
パイプラインにさらに2つのステージを追加して拡張しましょう。そのためには、「設定」オプションをクリックし、次のコードブロックに従ってパイプライン定義を変更します。
pipeline {
agent any
stages {
stage('Stage #1') {
steps {
echo 'Hello World'
sleep 10
echo 'This is the First Stage'
}
}
stage('Stage #2') {
steps {
echo 'This is the Second Stage'
}
}
stage('Stage #3') {
steps {
echo 'This is the Third Stage'
}
}
}
}
変更を保存して「今すぐビルド」をクリックして新しいパイプラインを実行します。成功裏に実行された後、ステージビューに各新しいステージが表示されます。
以下のコンソールログは、コードが期待通りに実行されたことを確認します:
ステップ8:パイプラインを視覚化
パイプラインステージの視覚化を向上させるために「パイプラインタイムライン」プラグインを使用できます。プラグインをインストールすると、ビルドステージ内に「ビルドタイムライン」と呼ばれるオプションがあります。
そのオプションをクリックすると、以下に示すパイプラインイベントのタイムラインが表示されます。
これで完了です!JenkinsでCI/CDパイプラインを正常に構成しました。
Jenkinsパイプラインを構成した後の次のステップは、Control-MでJenkinsパイプラインをオーケストレーションすることです。エンタープライズスケジューリング、SLA管理、Jenkinsデプロイメントがトリガーする製品データとアプリケーションワークフローの依存関係の調整を追加します。
- 外部コードリポジトリ
- テストフレームワーク
- デプロイメント戦略
頑張ってください!
クラウドベースのAzure CI/CDパイプラインの例
クラウド技術の普及が進む中、DevOpsタスクをクラウドに移行する傾向が高まっています。AzureやAWSのようなクラウドサービスプロバイダーは、それぞれのプラットフォームを使用して必要なDevOpsタスクを管理するためのフルスイートのサービスを提供しています。
以下は、完全にAzure(Azure DevOps Services)ツールに基づくシンプルなクラウドベースのDevOps CI/CDパイプラインです。
- 開発者が既存のソースコードを変更するか、新しいソースコードを作成し、変更をAzure Reposにコミットします。
- これらのリポジトリの変更がAzure Pipelineをトリガーします。
- Azure Test PlansとAzure Pipelinesの組み合わせにより、新しいコード変更がビルドおよびテストされます。(これが継続的インテグレーションプロセスです。)
- Azure Pipelinesは、必要な依存関係と環境変数を持つ、正常にテストされビルドされたアーティファクトのデプロイをトリガーします。(これが継続的デプロイメントプロセスです。)
- アーティファクトは、ユニバーサルリポジトリとして機能するAzure Artifactsサービスに保存されます。
- Azureアプリケーション監視サービスは、デプロイされたアプリケーションに対して、健康レポートや使用情報などのリアルタイムの洞察を開発者に提供します。
CI/CDパイプラインに加えて、AzureはAzure Boardsを使用してSDLCを管理することも可能にします。ここでは、次の2つのオプションがあります:
- 完全なCI/CDパイプラインを手動で構成する
- Azure DevOpsやAWSのDevOpsツールのようなSaaSソリューションを選択する
CI/CDパイプラインは手作業を最小限に抑える
適切に構成されたパイプラインは、手動作業を減らすことによってデリバリーチームの生産性を向上させ、ほとんどの手動エラーを排除し、全体の製品品質を向上させます。これは最終的に、エンドユーザー、開発者、ビジネス全体に利益をもたらす、より迅速でアジャイルな開発ライフサイクルをもたらします。
Humanaが、速度、品質、効率を改善するためにコードの編集とデバッグのために現代的なメインフレーム開発環境を選択した際に行った選択から学びましょう。
関連リーディング
DevOpsガイド
- DevOpsとは?包括的な紹介
- DevOpsの簡単な歴史
- DevOpsアーキテクチャの紹介
- DevOpsにおける自動化:なぜ自動化するのか、どのようにするのか
- CI/CDとは?継続的インテグレーションと継続的デリバリーの説明
- Jenkinsを使用したCI/CDパイプラインの構築方法
- CI/CDパイプラインを最適化するためのDevOpsメトリクス
- 継続的デリバリーメトリクス
- 継続的インテグレーションから継続的デプロイメントへの進行は進行形か、さもなくばそうでないのか?
- 継続的インテグレーション(CI)、デリバリー(CD)、およびデプロイメントの違い
- DevOpsにおけるソースとバージョン管理
- 継続的テストとは何か?
- テスト自動化フレームワーク:究極のガイド
- DevOpsにおけるリリース管理
- 説明:DevOpsにおける監視とテレメトリー
- DevOpsにおけるアプリケーションパフォーマンス管理
- SDLCにおけるDevOpsオーケストレーション
- データベースDevOpsの紹介
- DevOpsにおけるマイクロサービスの役割
- DevOpsにおける仮想化の役割
- コンテナとDevOps:コンテナがDevOpsデリバリーパイプラインにどのように適合するか
- コンテナパイプラインとは?
- DevOpsツールチェーンとは何か?
- DevOpsのためのコンテナとコードの管理
- DevOpsにおけるアジャイルの役割
- DevOpsにおけるクラウドの役割
- FinDevOpsとは何か?
- 2022年のトップDevOpsトレンド
- DevOpsの価値と原則
- DevOpsメトリクスとKPI
- 小規模、中規模、大規模組織向けのDevOpsアドバイス
- DevOpsチーム構造
- 今日読むべきトップDevOps書籍
- 『The Phoenix Project: DevOps For Everyone』の書評
- DevOpsの影響力のある人々:Twitterでフォローすべき11人のDevOps専門家
- GitHub、GitLab、Bitbucket、Azure DevOps:何が違うのか?
- ベストプラクティス:Kubernetes用のアプリケーションを設計する方法
- DevOpsにおける構成管理
- DevOpsのブランチ戦略の説明
- DevOpsの職務名、役割、責任
- DevOpsにおけるテスト:概念、ベストプラクティス、その他
- 2022年の完全なDevOps認証ガイド
- Kubernetesオペレーターパターンとは何か?
これらの投稿は私自身の見解であり、必ずしもBMCの立場、戦略、または意見を表しているわけではありません。