チュートリアル: 4 ステージのパイプラインを作成する - AWS CodePipeline

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

チュートリアル: 4 ステージのパイプラインを作成する

これで、「チュートリアル: シンプルなパイプラインを作成する (S3 バケット)」または「チュートリアル: シンプルなパイプラインを作成する (CodeCommitrepository)」に最初のパイプラインが作成されたため、より複雑なパイプラインを作成できるようになりました。このチュートリアルでは、4 ステージパイプラインを作成する方法について説明します。このパイプラインでは、ソースとして GitHub リポジトリを使用し、プロジェクトをビルドするための Jenkins ビルドサーバーおよびビルドしたコードをステージングサーバーにデプロイするための CodeDeploy アプリケーションを使用します。パイプラインが作成されたら、これを編集して、テストアクションを含むステージを追加してコードをテストします。この際、Jenkins も使用します。

このパイプラインを作成する前に、必要なリソースを設定する必要があります。たとえば、 GitHub ソースコードのリポジトリでは、パイプラインに追加する前にリポジトリを作成する必要があります。このチュートリアルでは、セットアップの一部として EC2 インスタンスに Jenkins を設定する方法をデモ目的で示します。

重要

この手順でパイプラインに追加するアクションの多くは、AWS パイプラインを作成する前に作成する必要があるリソースを含んでいます。AWS ソースアクションのリソースは、パイプラインを作成するときは、常に同じ AWS リージョンに作成する必要があります。たとえば、米国東部 (オハイオ) リージョンでパイプラインを作成した場合、 CodeCommit リポジトリは米国東部 (オハイオ) リージョンにある必要があります。

パイプラインを作成するときにクロスリージョンアクションを追加できます。クロスリージョンアクションの AWS リソースはアクションを実行する予定の AWS リージョンと同じであることが必要です。詳細については、「CodePipeline にクロスリージョンアクションを追加する」を参照してください。

このチュートリアルを開始するには、「CodePipeline の使用開始」の一般的な前提条件を満たしている必要があります。

ステップ 1: 前提条件を完了します。

ジェンキンスと統合するにはAWS CodePipelineをインストールする必要があります CodePipeline CodePipeline で使用する Jenkins のインスタンスで Jenkins 用のプラグイン。また、専用の IAM ユーザーを設定して、Jenkins プロジェクトと CodePipeline の間でアクセス権限を使用する必要があります。Jenkins と CodePipeline Jenkins の統合用に作成した IAM インスタンスロールを使用する EC2 インスタンスに Jenkins をインストールします。Jenkins アクション用のパイプラインのリンクを正常に接続するには、Jenkins プロジェクトで使用するポートへのインバウンド接続を許可するように、サーバーまたは EC2 インスタンスのプロキシおよびファイアウォール設定を構成する必要があります。これらのポートに接続する前に、Jenkins でユーザーを認証してアクセス制御するように設定されていることを確認します (HTTPS 接続のみ使用できるように Jenkins のセキュリティを確保するには 443 および 8443、HTTP 接続できるようにするには 80 および 8080)。詳細については、「Jenkins のセキュリティ確保」を参照してください。

注記

このチュートリアルでは、コードサンプルを使用して、Haml から HTML に変換するビルドステップを設定します。オープンソースのサンプルコードは、 GitHub のリポジトリは、の手順に従います。サンプルを GitHub 倉庫。のサンプル全体が必要です GitHub リポジトリで、.zip ファイルだけではありません。

このチュートリアルでは、以下を前提としています。

  • Jenkins のインストールと管理および Jenkins プロジェクトの作成に慣れている

  • Ruby の Rake と Haml gem が、同一コンピュータ、または Jenkins プロジェクトをホストするインスタンス上にインストールされていること。

  • Rake コマンドを端末またはコマンドラインから実行できるように、必要なシステム環境変数が設定されていること (例えば、Windows システムで、Rake をインストールしたディレクトリが追加されるように PATH 変数を変更する)。

サンプルを GitHub 倉庫

サンプルを複製し、 GitHub 倉庫

  1. [] からサンプルコードをダウンロードします。 GitHub リポジトリを作成するか、リポジトリのクローンをローカルコンピュータに作成します。2 つのサンプルパッケージがあります。

  2. リポジトリから、[Fork] を選択してサンプルリポジトリを Github アカウントのレポジトリに複製します。詳細については、GitHub のドキュメントを参照してください。

Jenkins 統合に使用する IAM ロールを作成する

ベストプラクティスとして、EC2 インスタンスを起動して Jenkins サーバーをホストし、IAM ロールを使用して CodePipeline とのやり取りに必要なアクセス許可をインスタンスに付与することを検討します。

  1. AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. IAM コンソールのナビゲーションペインで、[ロール]、[ロールを作成する] の順に選択します。

  3. [Select type of trusted entity] (信頼されたエンティティの種類を選択) の下で、[AWS Service] を選択します。[Choose the service that will use this role (このロールを使用するサービスを選択)] で、[EC2] を選択します。[Select your use case (ユースケースを選択)] で、[EC2] を選択します。

  4. [Next: (次へ:)] を選択します アクセス許可. リポジトリの []許可ポリシーのアタッチ[] ページで [] を選択します。AWSCodePipelineCustomActionAccess管理ポリシーを選択し、次へ: タグ [Next: (次へ:)] を選択します 確認.

  5. [確認] ページの [ロール名] に、Jenkins の統合専用として作成するロールの名前 (JenkinsAccessなど) を入力し、[ロールの作成] を選択します。

Jenkins をインストールする EC2 インスタンスを作成する際には、ステップ 3: インスタンスの詳細の設定で、インスタンスロールを選択していることを確認します(たとえば、JenkinsAccess).

インスタンスロールおよび Amazon EC2 の詳細については、「Amazon EC2 の IAM ロール」、「Amazon EC2 インスタンスで実行されるアプリケーションに IAM ロールを使用してアクセス許可を付与する」、「AWS サービスにアクセス許可を委任するロールの作成」を参照してください。

Jenkins および をインストールして設定する CodePipeline Jenkins プラグイン

Jenkins と をインストールするには CodePipeline Jenkins プラグイン

  1. Jenkins をインストールするための EC2 インスタンスを作成します。ステップ 3: インスタンスの詳細の設定では、作成したインスタンスロール (など) を選択していることを確認します。JenkinsAccess). EC2 インスタンス作成の詳細については、「Amazon EC2 ユーザーガイド」の 「Amazon EC2 インスタンスの起動」を参照してください。

    注記

    使用する Jenkins リソースがすでにある場合は、特別な IAM ユーザーを作成し、そのユーザーに AWSCodePipelineCustomActionAccess 管理ポリシーを適用してから、Jenkins リソースに対してそのユーザーのアクセス認証情報を設定して使用する必要があります。Jenkins UI を使用して認証情報を指定する場合は、HTTPS のみを許可するように Jenkins を設定します。詳細については、「CodePipeline のトラブルシューティング」を参照してください。

  2. EC2 インスタンスに Jenkins をインストールします。詳細については、Jenkins のドキュメントの「Jenkins のインストール」と「Jenkins の開始とアクセス」のほか、「を製品やサービスと統合する CodePipeline」の「details of integration with Jenkins」を参照してください。

  3. Jenkins を起動し、ホーム ページで [Manage Jenkins] (Jenkins の管理) を選択します。

  4. [Jenkins の管理] ページで、[プラグインの管理] を選択します。

  5. [Available] タブを選択し、[Filter] 検索ボックスに「AWS CodePipeline」と入力します。リストから [CodePipeline Plugin for Jenkins] を選択し、次に [ダウンロードして再起動後にインストール] を選択します。

  6. [プラグイン/アップグレードのインストール] ページで、[インストール完了後、実行中のジョブがなければ Jenkins を再起動する] を選択します。

  7. [ダッシュボードに戻る] を選択します。

  8. メインページで、[New Item] (新しい項目) を選択します。

  9. [Item Name] に、Jenkins プロジェクトの名前 (MyDemoProject など) を入力します。[Freestyle project] (フリースタイルプロジェクト)、[OK] の順に選択します。

    注記

    プロジェクトの名前が CodePipeline の要件を満たしていることを確認します。詳細については、「AWS の CodePipeline 中のクォータ」を参照してください。

  10. プロジェクトの設定ページで、[Execute concurrent builds if necessary] (必要な場合に複数のビルドを並列実行する) チェックボックスをオンにします。[ソースコードの管理] で、[AWS CodePipeline] を選択します。EC2 インスタンスに Jenkins をインストールし、AWS CLI間の統合用に作成した IAM ユーザーのプロファイルを使用して CodePipeline そしてジェンキンス、その他のフィールドはすべて空のままにしておきます。

  11. 選択アドバンストであり、プロバイダーで、で表示されるアクションのプロバイダの名前を入力します。 CodePipeline (たとえば、MyJenkinsProviderName). この名前が一意で覚えやすいものであることを確認します。このチュートリアルの後半でパイプラインにビルドアクションを追加するときと、テストアクションを追加するときに使用します。

    注記

    このアクション名は、CodePipeline のアクションの命名要件を満たしている必要があります。詳細については、「AWS の CodePipeline 中のクォータ」を参照してください。

  12. [Build Triggers] (トリガーのビルド) で、チェックボックスをすべてオフにし、[Poll SCM] (SCM のポーリング) を選択します。[Schedule] に、以下のようにスペースで区切ってアスタリスクを 5 つ入力します。

    * * * * *

    このポーリング CodePipeline 毎分。

  13. [ビルド] で、[Add build step] (ビルドステップの追加) を選択します。[シェルの実行] (Amazon Linux、RHEL、または Ubuntu Server) [バッチコマンドの実行] (Windows Server) を選択し、次のように入力します。

    rake
    注記

    rake の実行に必要な変数と設定が環境で定義されていることを確認します。定義されていないと、ビルドは失敗します。

  14. 選択ポストビルドアクションを追加する[] を選択してから、AWS CodePipeline 発行。[Add] を選択し、[Build Output Locations] でこの場所は空白のままにします。この設定はデフォルトです。ビルドプロセスの最後に圧縮ファイルが作成されます。

  15. [保存] を選択して、Jenkins プロジェクトを保存します。

ステップ 2: CodePipeline でパイプラインを作成します。

チュートリアルのこの部分では、[Create Pipeline] ウィザードを使用してパイプラインを作成します。

を作成するには CodePipeline 自動リリースプロセス

  1. にサインインします。AWS Management Console[] を開き、 CodePipeline コンソールでhttp://console.aws.amazon.com/codesuite/codepipeline/home

  2. 必要に応じて、リージョンセレクターを使用し、パイプラインリソースの配置先のリージョンに切り替えます。例えば、前のチュートリアルでリソースを us-east-2 に作成した場合は、リージョンセレクターを必ず米国東部 (オハイオ) に設定します。

    CodePipeline で使用できるリージョンとエンドポイントの詳細については、「AWS CodePipeline エンドポイントとクォータ」を参照してください。

  3. [ようこそ] ページ、[Getting started (開始方法)] ページ、または [パイプライン] ページで、[パイプラインの作成] を選択します。

  4. リポジトリの []ステップ 1: パイプラインの設定の選択[()] ページパイプライン名[] に、パイプラインの名前を入力します。

  5. In (イン)サービスロールで、新しいサービスロール許可するには CodePipeline [] をクリックして、に IAM のサービスロールを作成します。

  6. [詳細設定] をデフォルト設定のままにし、[次へ] を選択します。

  7. In (イン)ステップ 2: ソースステージの追加、でソースプロバイダーで、GitHub[] を選択してから、GitHub Connect する。これにより、GitHub に接続するための新しいブラウザーウィンドウが開きます。サインインするように求められたら、 GitHub 認証情報。

    重要

    [()] を提供しないでくださいAWSの認証情報 GitHub ウェブサイト.

    GitHub を選択すると、次のことを知らせるメッセージが表示されます。 CodePipeline でウェブフックを作成します GitHub パイプライン用です。

    GitHub に接続したら、このチュートリアルで使用するサンプル (codepipeline-jenkins-aws-codedeploy_linux.zip または CodePipeline-Jenkins-AWSCodeDeploy_Windows.zip) をプッシュするリポジトリとブランチを選択してから、

    注記

    GitHub では、CodePipeline などのアプリケーションに使用できる OAuth トークンの数に制限があります。この制限を超えた場合は、接続を再試行して CodePipeline 既存のトークンを再利用して再接続します。

  8. In (イン)ステップ 3: ビルドステージの追加で、Jenkins を追加する。In (イン)Provider nameで、で指定したアクションの名前を入力します。 CodePipeline Jenkins のプラグイン (例:MyJenkinsProviderName). この名前は、 CodePipeline ジェンキンス用のプラグイン。[サーバー URL] に、Jenkins がインストールされている EC2 インスタンスの URL を入力します。[プロジェクト名] に、Jenkins で作成したプロジェクトの名前 (MyDemoProject など) を入力し、[次へ] を選択します。

  9. In (イン)ステップ 4: デプロイステージを追加する[] を選択してから、 CodeDeploy [] で作成したアプリケーションとデプロイグループチュートリアル: シンプルなパイプラインを作成する (S3 バケット)。[プロバイダをデプロイする]で、[CodeDeploy] を選択します。[アプリケーション名] に「CodePipelineDemoApplication」と入力するか、更新ボタンを選択してリストからアプリケーション名を選択します。[デプロイグループ] に「CodePipelineDemoFleet」と入力するか、リストからデプロイグループを選択して [次へ] を選択します。

    注記

    独自のものを使用できます CodeDeploy リソースを作成するか、新しいリソースを作成しますが、追加のコストが発生する場合があります。

  10. In (イン)ステップ 5: 確認[] を選択してから、[] を選択します。パイプラインの作成

  11. パイプラインが自動的に開始され、パイプラインによりサンプルが実行されます。パイプラインが Haml サンプルを HTML にビルドし、ウェブページを CodeDeploy デプロイの各 Amazon EC2 インスタンスにデプロイしている間、進行状況と成功/失敗メッセージを表示できます。

ステップ 3: パイプラインに別のステージを追加する

次に、テストステージ、テストアクションの順で、サンプルに含まれている Jenkins テストを使用するステージに追加し、ウェブページにコンテンツが含まれているかどうかを確認します。このテストは、デモンストレーションのみを目的としています。

注記

他のステージをパイプラインに追加しない場合は、パイプラインのステージ (Staging) へテストアクションを追加します。その前後にデプロイアクションを行います。

パイプラインにテストステージを追加する

インスタンスの IP アドレスを検索する

コードをデプロイしたインスタンスの IP アドレスを確認するには

  1. パイプラインのステータスが "Succeeded" と表示されたら、[Staging] ステージのステータス領域で [詳細] を選択します。

  2. [デプロイの詳細] (デプロイの詳細) セクションの [インスタンス ID] で、正常にデプロイされたいずれかのインスタンスの ID を選択します。

  3. インスタンスの IP アドレス (192.168.0.4 など) をコピーします。この IP アドレスは Jenkins テストで使用します。

デプロイのテスト用に Jenkins プロジェクトを作成する

Jenkins プロジェクトを作成するには

  1. Jenkins をインストールしたインスタンスで、Jenkins を開き、メインページから [New Item] (新しい項目) を選択します。

  2. [Item Name] に、Jenkins プロジェクトの名前 (MyTestProject など) を入力します。[Freestyle project] (フリースタイルプロジェクト)、[OK] の順に選択します。

    注記

    プロジェクトの名前が CodePipeline 要件。詳細については、「AWS の CodePipeline 中のクォータ」を参照してください。

  3. プロジェクトの設定ページで、[Execute concurrent builds if necessary] (必要な場合に複数のビルドを並列実行する) チェックボックスをオンにします。[ソースコードの管理] で、[AWS CodePipeline] を選択します。EC2 インスタンスに Jenkins をインストールし、AWS CLI間の統合用に作成した IAM ユーザーのプロファイルを使用して CodePipeline そしてジェンキンス、他のフィールドはすべて空のままにしておきます。

    重要

    Jenkins プロジェクトを設定していて、それが Amazon EC2 インスタンスにインストールされていないか、Windows オペレーティングシステムを実行している EC2 インスタンスにインストールされている場合は、プロキシホストとポートの設定に従ってフィールドに入力し、Jenkins と CodePipeline の統合用に設定した IAM ユーザーの認証情報を指定します。

  4. [詳細設定] を選択してから、[カテゴリ] で [テスト] を選択します。

  5. [プロバイダ] に、ビルドプロジェクトで使用したのと同じ名前 (MyJenkinsProviderName など) を入力します。この名前は、このチュートリアルの後半でパイプラインにテストアクションを追加するときに使用します。

    注記

    この名前は、 CodePipeline のアクションの命名要件。詳細については、「AWS の CodePipeline 中のクォータ」を参照してください。

  6. [Build Triggers] (トリガーのビルド) で、チェックボックスをすべてオフにし、[Poll SCM] (SCM のポーリング) を選択します。[Schedule] に、以下のようにスペースで区切ってアスタリスクを 5 つ入力します。

    * * * * *

    このポーリング CodePipeline 毎分。

  7. [ビルド] で、[Add build step] (ビルドステップの追加) を選択します。Amazon Linux、RHEL、または Ubuntu Server インスタンスにデプロイする場合は、[シェルの実行] を選択します。次に、以下のように入力します。IP アドレスは、先ほどコピーした EC2 インスタンスのアドレスです。

    TEST_IP_ADDRESS=192.168.0.4 rake test

    Windows Server インスタンスにデプロイする場合は、[Execute batch command (バッチコマンドの実行)] を選択し、以下のように入力します。ここで、IP アドレスは、先ほどコピーした EC2 インスタンスのアドレスです。

    set TEST_IP_ADDRESS=192.168.0.4 rake test
    注記

    このテストでは、デフォルトのポート 80 を想定しています。別のポートを指定する場合は、以下のように test port ステートメントを追加します。

    TEST_IP_ADDRESS=192.168.0.4 TEST_PORT=8000 rake test
  8. 選択ポストビルドアクションを追加する[] を選択してから、AWS CodePipeline 発行。[追加] は選択しないでください。

  9. [保存] を選択して、Jenkins プロジェクトを保存します。

4 番目のステージを作成する

Jenkins テストアクションを含むステージをパイプラインに追加するには

  1. にサインインします。AWS Management Console[] を開き、 CodePipeline コンソールでhttp://console.aws.amazon.com/codesuite/codepipeline/home

  2. [名前] で、作成したパイプラインの名前を選択します。

  3. パイプライン詳細ページで、[編集] を選択します。

  4. [編集] ページで [+ Stage (+ ステージの追加)] を選択して、ビルドステージの直後にステージを追加します。

  5. 新しいステージの名前フィールドに名前 (Testing など) を入力し、[+ Add action group (+ アクショングループの追加)] を選択します。

  6. [アクション名] に「MyJenkinsTest-Action」と入力します。[テストプロバイダ] で、Jenkins で指定したプロバイダ名 (MyJenkinsProviderName など) を選択します。[プロジェクト名] に、Jenkins で作成したプロジェクトの名前 (MyTestProject など) を入力します。[入力アーティファクト] で、デフォルト名が BuildArtifact の Jenkins ビルドからアーティファクトを選択し、[完了] を選択します。

    注記

    Jenkins テストアクションは Jenkins ビルドステップで構築されたアプリケーションで動作するため、テストアクションへの入力アーティファクトのビルドアーティファクトを使用します。

    入力アーティファクトと出力アーティファクト、およびパイプラインの構造の詳細については、「CodePipeline パイプライン構造リファレンス」を参照してください。

  7. [編集] ページで、[パイプラインの変更を保存] を選択します。[パイプラインの変更を保存] ダイアログボックスで、[保存して続行] を選択します。

  8. パイプラインに新しいステージが追加されましたが、パイプラインの別の実行をトリガーした変更がないため、そのステージのステータスは [まだ実行はありません] と表示されます。修正したパイプラインによりサンプルを実行するには、パイプラインの詳細ページで [リリースの変更] を選択します。

    パイプラインビューには、パイプラインのステージとアクション、それらの 4 つのステージを実行しているリビジョンの状態が表示されます。パイプラインがすべてのステージを実行するのにかかる時間は、アーティファクトのサイズ、ビルドとテストのアクションの複雑さ、その他の要因によって異なります。

ステップ 4: リソースをクリーンアップする

これらのチュートリアルが完了したら、使用したパイプラインおよびリソースを削除する必要があるため、このリソースに対する継続利用料金がかかることはありません。今後、CodePipeline を使用しない場合は、パイプラインを削除してから、 CodeDeploy アプリケーションおよびそれに関連付けられている Amazon EC2 インスタンス、アーティファクトの保存に使用した Amazon S3 バケット。また、などの他のリソースを削除するかどうかを検討することも必要です。 GitHub リポジトリを使用しない場合は、リポジトリを使用します。

このチュートリアルで使用されているリソースをクリーンアップするには

  1. ローカル Linux、macOS または Unix マシンでターミナルセッションを開くか、ローカル Windows マシンでコマンドプロンプトを開き、delete-pipeline コマンドを実行して、作成したパイプラインを削除します。MySecondPipeline の場合は、次のコマンドを入力します。

    aws codepipeline delete-pipeline --name "MySecondPipeline"

    このコマンドは何も返しません。

  2. をクリーンアップするには CodeDeploy リソースの場合は、「」の手順に従います。クリーンアップ

  3. インスタンスリソースをクリーンアップするには、Jenkins をインストールした EC2 インスタンスを削除します。詳細については、「インスタンスのクリーンアップ」を参照してください。

  4. 追加のパイプラインを作成したり、 CodePipeline 再度、パイプラインのアーティファクトの保存に使用した Amazon S3 バケットを削除します。バケットを削除するには、「バケットの削除」の手順に従います。

  5. このパイプラインに他のリソースを再利用しない場合は、それらのリソースを該当するガイダンスに従って削除することを検討してください。たとえば、 GitHub リポジトリの場合は、リポジトリの削除で GitHub ウェブサイト.