CodePipeline でパイプラインを編集する - AWS CodePipeline

CodePipeline でパイプラインを編集する

パイプラインは、実行する必要があるステージやアクションなど、AWS CodePipeline が従うリリースプロセスを記述します。パイプラインを編集して、要素を追加または削除することができます。ただし、パイプラインを編集するときには、パイプライン名またはパイプラインメタデータなどの値を変更することはできません。

パイプラインを作成する場合とは異なり、パイプラインを編集しても、パイプラインを通して最新のリビジョンが実行されることはありません。編集後のパイプラインを通して、最新のリビジョンを実行する場合は、手動で再実行する必要があります。それ以外の場合、編集後のパイプラインはソースステージで設定されているソースの場所の次回変更時に実行されます。詳細については、AWS CodePipeline でパイプラインを手動で開始する を参照してください。

パイプラインとは異なる AWS リージョン内にあるアクションをパイプラインに追加できます。AWS のサービスがアクションプロバイダーであり、このアクションタイプ/プロバイダータイプがパイプラインとは異なる AWS リージョンにある場合、これはクロスリージョンアクションです。クロスリージョンアクションの詳細については、「CodePipeline でクロスリージョンアクションを追加する」を参照してください。

CodePipeline は、ソースコードの変更がプッシュされたときに変更検出方法を使用してパイプラインを開始します。この検出方法はソースタイプに基づいています。

  • CodePipeline は Amazon CloudWatch Events を使用して、CodeCommit ソースリポジトリや Amazon S3 ソースバケットの変更を検出します。

  • CodePipeline はウェブフックを使用して、GitHub ソースリポジトリとブランチの変更を検出します。

注記

変更検出リソースは、コンソールを使用するときに自動的に作成されます。コンソールを使用してパイプラインを作成または編集すると、追加のリソースが作成されます。AWS CLI を使用してパイプラインを作成するときは、追加のリソースを各自で作成する必要があります。CodeCommit パイプラインの作成または更新の詳細については、「CodeCommit ソースの CloudWatch イベント ルールを作成する (CLI)」を参照してください。CLI を使用した Amazon S3 パイプラインの作成または更新の詳細については、「Amazon S3 ソースの CloudWatch イベント ルールを作成する (CLI)」を参照してください。GitHub パイプラインの作成あるいは更新についての詳細は、「ウェブフックを使用してパイプラインを開始する (GitHub ソース)」を参照してください。

パイプラインを編集する (コンソール)

CodePipeline コンソールを使用して、パイプラインのステージやステージ内のアクションを追加、編集、または削除できます。

パイプラインを編集するには

  1. AWS マネジメントコンソール にサインインし、CodePipeline コンソール (http://console.aws.amazon.com/codesuite/codepipeline/home) を開きます。

    AWS アカウントに関連付けられているすべてのパイプラインの名前が表示されます。

  2. [Name] で、編集するパイプラインの名前を選択します。これにより、パイプラインの詳細ビューが開いて、パイプラインの各ステージの各アクションの状態などがわかります。

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

  4. [編集] ページで、以下のいずれかを行います。

    • ステージを編集するには、[ステージを編集] を選択します。アクションは既存のアクションに対して直列にも並列にも追加できます。

      これらのアクションの編集アイコンを選択して、このビューでアクションを編集することもできます。アクションを削除するには、そのアクションの削除アイコンを選択します。

    • アクションを編集するには、そのアクションの編集アイコンを選択し、[アクションの編集] で値を変更します。アスタリスク (*) の付いた項目は必須です。

      • CodeCommit リポジトリ名およびブランチでは、このパイプラインに対して作成される Amazon CloudWatch Events ルールを示すメッセージが表示されます。CodeCommit ソースを削除すると、Amazon CloudWatch Events ルールが削除されることを示すメッセージが表示されます。

      • Amazon S3 ソースバケットに対して、Amazon CloudWatch Events ルールおよび AWS CloudTrail 証跡がこのパイプラインに作成されることを示すメッセージが表示されます。Amazon S3 ソースを削除すると、Amazon CloudWatch Events ルールと AWS CloudTrail 証跡が削除されることを示すメッセージが表示されます。AWS CloudTrail 証跡が他のパイプラインで使用されている場合には、この証跡は削除されませんが、データイベントは削除されます。

      • GitHub ソースの場合、パイプラインに以下のものが追加されます。

        • CodePipeline は OAuth トークンを使用して CodePipeline で管理される承認済みアプリケーションを作成します。

          注記

          GitHub では、CodePipeline などのアプリケーションに対して使用できる OAuth トークンの数は制限されています。この制限を超えた場合は、CodePipeline が既存のトークンを再利用して再接続できるように接続を再試行します。詳細については、「パイプラインのエラー : 「GitHub リポジトリにアクセスできませんでした」または「GitHub リポジトリに接続できませんでした」というパイプラインのエラーが表示されます。」を参照してください。

        • CodePipeline では、ソースの変更を検出するためのウェブフックが GitHub に作成され、変更が発生したときにパイプラインが開始されます。CodePipeline では、ウェブフックと共に以下のものが作成されます。

          • シークレットはランダムに生成され、GitHub への接続を承認するために使用されます。

          • ウェブフック URL は、リージョンのパブリックエンドポイントを使用して生成されます。

          • ウェブフックは GitHub に登録されます。これにより、レポジトリのイベントを受信するための URL がサブスクライブされます。

      GitHub ソースアクションを削除すると、ウェブフックは登録解除されて削除されます。

    • ステージを追加するには、ステージを追加するパイプラインのポイントで [+ Add stage (+ ステージを追加)] を選択します。ステージの名前を入力し、少なくとも 1 つのアクションをそのステージに追加します。アスタリスク (*) の付いた項目は必須です。

    • ステージを削除するには、そのステージの削除アイコンを選択します。ステージとそのすべてのアクションが削除されます。

    たとえば、パイプラインのステージにシリアルアクションを追加する場合は、以下のようにします。

    1. アクションを追加するステージで、[Edit stage (ステージを編集)] を選択し、[+ Add action group (+ アクショングループの追加)] を選択します。

    2. [アクションを編集] の、[アクション名] でアクションの名前を入力します。[Action provider (アクションプロバイダー)] リストには、プロバイダーのオプションがカテゴリ別に表示されます。[デプロイ] などのカテゴリを探します。カテゴリで、[AWS CodeDeploy] などのプロバイダーを選択します。[リージョン] で、リソースの作成先または作成予定先の AWS リージョンを選択します。[リージョン] フィールドは、このアクションタイプとプロバイダータイプに対して作成済みの AWS リソースの場所を示します。このフィールドには、アクションプロバイダーが AWS のサービスであるアクションのみが表示されます。[リージョン] フィールドは、デフォルトで、パイプラインと同じ AWS リージョンになります。

      入力および出力アーティファクトの名前や使用方法など、CodePipeline でのアクションの要件の詳細については、「CodePipeline でのアクション構造の要件」を参照してください。アクションプロバイダーの追加例と各プロバイダーのデフォルトフィールドの使用例については、「パイプラインを作成する (コンソール)」を参照してください。

      CodeBuild をビルドアクションまたはテストアクションとしてステージに追加するには、CodeBuild ユーザーガイドの「CodeBuild で CodePipeline を使用してコードをテストし、ビルドを実行する」を参照してください。

      注記

      GitHub などの一部のアクションプロバイダーでは、アクションの設定を完了するために、プロバイダーのウェブサイトに接続する必要があります。プロバイダーのウェブサイトに接続するときは、そのウェブサイトの認証情報を使用していることを確認します。AWS の認証情報を使用しないでください。

    3. アクションの設定が完了したら、[保存] を選択します。

    注記

    コンソールビューでステージの名前を変更することはできません。新しいステージを変更後の名前で追加し、その後に古いステージを削除できます。古いステージを削除する前に、必要なすべてのアクションを新しいステージに追加したことを確認してください。

  5. パイプラインの編集が終わったら、[保存] を選択して概要ページに戻ります。

    重要

    変更を保存したら、元に戻すことはできません。パイプラインを再度編集する必要があります。変更を保存するときにパイプラインによりリビジョンが実行されている場合、その実行は完了しません。編集したパイプラインにより特定のコミットまたは変更を実行する場合は、パイプラインから手動で実行する必要があります。それ以外の場合、次のコミットまたは変更はパイプラインにより自動的に実行されます。

  6. アクションをテストするには、[変更のリリース] を選択して、パイプラインによりそのコミットを処理し、パイプラインのソースステージで指定したソースに変更をコミットします。または AWS CLI を使用して手動で変更をリリースする場合、AWS CodePipeline でパイプラインを手動で開始する で次の手順に従います。

パイプラインを編集する (AWS CLI)

パイプラインを編集するには、update-pipeline コマンドを使用します。

重要

パートナーアクションを含むパイプラインの編集に AWS CLI を使用することはできますが、パートナーアクションの JSON を手動で編集することはできません。これを行った場合、パートナーアクションはパイプライン更新後に失敗します。

パイプラインを編集するには

  1. ターミナルセッション (Linux, macOS, or Unix) またはコマンドプロンプト (Windows) を開き、get-pipeline コマンドを実行して、パイプライン構造を JSON ファイルにコピーします。たとえば、MyFirstPipeline という名前のパイプラインに対して、以下のコマンドを入力します。

    aws codepipeline get-pipeline --name MyFirstPipeline >pipeline.json

    このコマンドは何も返しませんが、作成したファイルは、コマンドを実行したディレクトリにあります。

  2. 任意のプレーンテキストエディタで JSON ファイルを開き、パイプラインに加える変更を反映するようにファイルの構造を変更します。たとえば、ステージを追加または削除すること、または、既存のステージに別のアクションを追加することができます。

    以下の例では、pipeline.json ファイルに別のデプロイステージを追加する方法を示しています。このステージは、Staging という名前の最初のデプロイステージの後に実行されます。

    注記

    ここで示しているのは、そのファイルの一部であり、構造全体ではありません。詳細については、「CodePipeline パイプライン構造リファレンス」を参照してください。

    , { "name": "Staging", "actions": [ { "inputArtifacts": [ { "name": "MyApp" } ], "name": "Deploy-CodeDeploy-Application", "actionTypeId": { "category": "Deploy", "owner": "AWS", "version": "1", "provider": "CodeDeploy" }, "outputArtifacts": [], "configuration": { "ApplicationName": "CodePipelineDemoApplication", "DeploymentGroupName": "CodePipelineDemoFleet" }, "runOrder": 1 } ] }, { "name": "Production", "actions": [ { "inputArtifacts": [ { "name": "MyApp" } ], "name": "Deploy-Second-Deployment", "actionTypeId": { "category": "Deploy", "owner": "AWS", "version": "1", "provider": "CodeDeploy" }, "outputArtifacts": [], "configuration": { "ApplicationName": "CodePipelineDemoApplication", "DeploymentGroupName": "CodePipelineProductionFleet" }, "runOrder": 1 } ] } ] }

    以下の例では、ソースアクションとして GitHub リポジトリを使用するソースステージを追加する方法を示しています。CodePipeline が GitHub とどのように統合されるかの詳細については、「ソースアクションの統合」を参照してください。

    注記

    ここで示しているのは、そのファイルの一部であり、構造全体ではありません。詳細については、「CodePipeline パイプライン構造リファレンス」を参照してください。

    { "name": "Source", "actions": [ { "inputArtifacts": [], "name": "Source", "actionTypeId": { "category": "Source", "owner": "ThirdParty", "provider": "GitHub", "version": "1" }, "outputArtifacts": [ { "name": "MyApp" } ], "configuration": { "Owner": "MyGitHubAccountName", "Repo": "MyGitHubRepositoryName", "PollForSourceChanges": "false", "Branch": "master", "OAuthToken": "****" }, "runOrder": 1 } ] },

    CodePipeline による GitHub リポジトリへのアクセスに使用するため、OAuthToken の値はマークされたままになります。この値には個人用のアクセストークンを使用できます。個人用のアクセストークンを作成するには、「個人用のアクセストークンを使用するようにパイプラインを設定する (GitHub と CLI)」を参照してください。

    注記

    アクションを 1 つのステージから別のステージに移動するなど、一部の編集では、アクションについて最新の既知の状態履歴が削除されます。パイプラインにアクションの OAuth トークンなどの 1 つ以上の秘密パラメーターが含まれている場合、そのトークンは一連のアスタリスク (****) でマスクされます。これらの秘密パラメータは、パイプラインのその部分を編集する場合 (OAuth トークンを含むアクションの名前または OAuth トークンを使用するアクションを含むステージの名前を変更した場合など) を除き、変更されません。OAuth トークンを含むアクションに影響を与える変更を行う場合は、編集した JSON にトークンの値を含める必要があります。詳細については、「個人用のアクセストークンを使用するようにパイプラインを設定する (GitHub と CLI)」を参照してください。セキュリティのベストプラクティスは、個人アクセストークンを定期的に更新することです。詳細については、「GitHub と CodePipeline CLI を使用して、GitHub 個人用のアクセストークンを作成し、定期的に更新する」を参照してください。

    CLI を使用して承認アクションをパイプラインに追加する方法については、「CodePipeline でパイプラインに手動の承認アクションを追加する 」を参照してください。

    JSON ファイルの PollForSourceChanges パラメータが次のように設定されていることを確認します。

    "PollForSourceChanges": "false",

    CodePipeline は Amazon CloudWatch Events を使用して、CodeCommit ソースリポジトリとブランチの変更または Amazon S3 ソースバケットの変更を検出します。CodePipeline はウェブフックを使用して、GitHub ソースリポジトリとブランチの変更を検出します。次のステップには、手動でこれらのリソースを作成する手順が含まれています。フラグを false に設定すると、定期的なチェックが無効になります。これは、推奨される変更検出メソッドを使用する場合には必須ではありません。

  3. パイプラインとは異なるリージョンにビルド、テスト、またはデプロイアクションを追加するには、パイプライン構造に以下を追加する必要があります。詳細な手順については、「CodePipeline でクロスリージョンアクションを追加する」を参照してください。

    • Region パラメータをアクションのパイプライン構造に追加します。

    • アクションの作成先のリージョンごとにアーティファクトバケットを指定するには、artifactStores パラメータを使用します。

  4. get-pipeline コマンドを使用して取得したパイプライン構造を使用している場合、JSON ファイルの構造を変更する必要があります。update-pipeline コマンドが使用できるように、ファイルから metadata 行を削除する必要があります。JSON ファイルのパイプライン構造からセクションを削除します ("metadata": { } 行と、"created""pipelineARN"、および "updated" フィールド)。

    たとえば、構造から以下の行を削除します。

    "metadata": { "pipelineArn": "arn:aws:codepipeline:region:account-ID:pipeline-name", "created": "date", "updated": "date" }

    ファイルを保存します。

  5. パイプラインの編集に CLI を使用する場合には、推奨される変更検出リソースを手動でパイプライン用に管理する必要があります。

  6. 変更を適用するには、パイプライン JSON ファイルを指定して、update-pipeline コマンドを実行します。

    重要

    ファイル名の前に必ず file:// を含めてください。このコマンドでは必須です。

    aws codepipeline update-pipeline --cli-input-json file://pipeline.json

    このコマンドは、編集したパイプラインの構造全体を返します。

    注記

    update-pipeline コマンドは、パイプラインを停止します。update-pipeline コマンドを実行したときにパイプラインによりリビジョンが実行されている場合、その実行は停止します。更新されたパイプラインによりそのリビジョンを実行するには、パイプラインを手動で開始する必要があります。

  7. CodePipeline コンソールを開き、編集したパイプラインを選択します。

    そのパイプラインには、行った変更が示されます。ソース場所を次に変更すると、修正した構造のパイプラインによりそのリビジョンが実行されます。

  8. 修正した構造のパイプラインによりその最新のリビジョンを手動で実行するには、start-pipeline-execution コマンドを実行します。詳細については、「AWS CodePipeline でパイプラインを手動で開始する」を参照してください。

パイプラインの構造および想定値の詳細については、「CodePipeline パイプライン構造リファレンス」および AWS CodePipeline API リファレンス を参照してください。