翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
の buildspec で GitHub Actions 構文を使用する AWS CodeBuild
CodeBuildマネージドアクションランナーを使用して、 内で GitHub アクションを実行できます CodeBuild。これを行うには、buildspec ファイルの任意のフェーズに steps
を追加します。
CodeBuild buildspecs は、 CodeBuild コマンドとは別のフェーズで実行されるシーケンシャル GitHub アクションステップのリストをサポートします。これらの GitHub アクションは、依存関係のキャッシュ、バッチビルド、 へのアクセスなど、 CodeBuildの既存の機能と統合されています AWS Secrets Manager。
トピック
- buildspec で GitHub アクションの使用を開始するにはどうすればよいですか?
- buildspec ではどの GitHub アクションを使用できますか?
- buildspec で GitHub アクション GitHub を使用する場合以外のソースプロバイダーを使用できますか?
- buildspec で GitHub アクションを使用するには、ソースプロバイダーとして に接続 GitHub する必要があるのはなぜですか?
- buildspec で GitHub アクションを使用するにはどのくらいのコストがかかりますか?
- buildspec での GitHub アクションの使用がサポートされているリージョン
- buildspec で GitHub アクションを使用するためのベストプラクティス
- で buildspec の GitHub アクションを使用する場合の制限 CodeBuild
- GitHub Action Runner buildspec リファレンス
- GitHub でのアクション構文の例 AWS CodeBuild
buildspec で GitHub アクションの使用を開始するにはどうすればよいですか?
buildspec で GitHub アクションを使用する大まかな手順は次のとおりです。
-
プロジェクトを に接続していない場合は、接続します GitHub。
これを行うには、次のいずれかで実行できます。
-
コンソールでソースプロバイダー GitHub として を追加できます。詳細については、「アクセストークン GitHub で接続する (コンソール) 」を参照してください。
-
API を介して GitHub 認証情報をインポートできますCodeBuild 。詳細については、「 アクセストークン GitHub で接続する (CLI) 」を参照してください。
注記
これは、別のプロジェクト GitHub で に接続していない場合にのみ行う必要があります。
-
-
プロジェクトの buildspec で、 を追加できます。
steps
各 は GitHub アクションを参照します。これは、 CodeBuild コンソールまたはソースリポジトリで編集できます。各ビルドフェーズは、コマンドのリストまたはステップのリストのどちらかをサポートしますが、両方を同じフェーズで使用することはできません。詳細については、「の buildspec で GitHub Actions 構文を使用する AWS CodeBuild」を参照してください。
buildspec ではどの GitHub アクションを使用できますか?
これらの制限と競合しない任意のアクションを GitHub Marketplace
buildspec で GitHub アクション GitHub を使用する場合以外のソースプロバイダーを使用できますか?
はい。ただし、 を使用して GitHub認証し、 GitHub アクションにアクセスするには、 への接続 GitHub が引き続き必要です。詳細については、「GitHub および GitHub Enterprise Server アクセストークン」を参照してください。
buildspec で GitHub アクションを使用するには、ソースプロバイダーとして に接続 GitHub する必要があるのはなぜですか?
buildspec で GitHub Actions を使用するには、ソースをビルドコンピューティングにダウンロードする必要があります。匿名ダウンロードはレート制限されるため、 に接続することで GitHub、一貫したアクセスを確保できます。
buildspec で GitHub アクションを使用するにはどのくらいのコストがかかりますか?
buildspec での GitHub アクションの使用は、追加料金なしでサポートされます。
buildspec での GitHub アクションの使用がサポートされているリージョン
buildspec での GitHub アクションの使用は、すべての CodeBuild リージョンでサポートされています。 CodeBuild が利用可能な の場所の詳細については AWS リージョン 、AWS 「リージョン別の のサービス
buildspec で GitHub アクションを使用するためのベストプラクティス
GitHub アクションはオープンソースであり、コミュニティによって構築され、管理されています。責任共有モデル
GitHub アクションのより具体的なガイダンスとセキュリティのベストプラクティス:
で buildspec の GitHub アクションを使用する場合の制限 CodeBuild
-
GitHub
github
コンテキストに内部的に依存する、またはプルリクエストや問題などの GitHub固有のリソースを参照する buildspec 内のアクションは、 ではサポートされていません CodeBuild。例えば、次のアクションは では機能しません CodeBuild。 -
GitHub プルリクエストを更新したり、 で問題を作成したりするアクションなど、リソースの追加、変更、更新 GitHubを試みるアクション GitHub。
注記
https://github.com/actions
に記載されているほとんどの公式 GitHub アクションは、 github
コンテキストに依存しています。代わりに、 GitHub Marketplaceで利用できるアクションを使用してください。 -
-
GitHub Docker コンテナアクションである buildspec のアクション
は機能しますが、ビルドプロジェクトで特権モードが有効になっていて、デフォルトの Docker ユーザー (ルート) によって実行する必要があります。 -
GitHub buildspec のアクションは、Windows で実行するように設定された CodeBuild プロジェクトではサポートされていません。
-
GitHub buildspec のアクションジョブ (ステップのグループ) と GitHub アクションジョブのプロパティはサポートされていません。
-
GitHub buildspec のアクションは、パブリック Git リポジトリのウェブフックによってトリガーされるように設定された CodeBuild プロジェクトではサポートされていません。詳細については、「」を参照してくださいgit-credential-helper。
-
パブリックインターネットアクセスのない VPC ビルドでは、buildspec で GitHub アクションを実行できません。
-
各ビルドフェーズはコマンドのリストまたはステップのリストのどちらかをサポートしますが、両方を同じフェーズで使用することはできません。例えば、次の例では、ビルド前のフェーズでステップを使用して GitHub アクションを一覧表示し、ビルドフェーズでコマンドを使用して CodeBuild コマンドを一覧表示します。
version: 0.2 phases: pre-build: steps: - name: Lint Code Base uses: github/super-linter@v4 env: VALIDATE_ALL_CODEBASE: 'true' DEFAULT_BRANCH: main build: commands: - echo "Building..." - npm run build
GitHub Action Runner buildspec リファレンス
このトピックには、 GitHub Action ランナープロパティの buildspec リファレンスが含まれています。
steps
オプションのシーケンス。ステップは、 でコマンドとアクションを実行するために使用されます CodeBuild。詳細については、「の buildspec で GitHub Actions 構文を使用する AWS CodeBuild」を参照してください。
注記
各ビルドフェーズは、commands
のリストまたは steps
のリストのどちらかをサポートしますが、両方を同じフェーズで使用することはできません。
各ビルドステップには、以下のプロパティが含まれます。
- id
-
オプション。他のコンテキスト
でステップを参照するために使用できるステップの識別子。 - if
オプション。条件が満たされない限り、ステップが実行されないようにするために使用できる条件付きステートメント。このステートメントでは、 からの環境変数の参照や式
https://docs.github.com/en/actions/learn-github-actions/contexts など CodeBuild、サポートされているコンテキスト を使用できます。 - name
-
オプション。ステップの名前。名前を指定しないと、名前はデフォルトで
run
コマンドで指定したテキストになります。 - uses
-
ステップで実行するアクション。一部のアクションでは、
with
を使用して入力を設定する必要があります。アクションの README を参照して、どの入力が必要かを判断してください。詳細については、「buildspec ではどの GitHub アクションを使用できますか?」を参照してください。ビルドフェーズで
uses
を指定した場合、run
を併用することはできません。注記
使用しているアクションのバージョンを含めることをお勧めします。これを行うには、Git ref、SHA、または Docker タグを指定します。詳細については、「steps.uses 構文
」を参照してください。 - run
-
コマンドラインプログラムを実行するコマンド。1 行のコマンドでも、複数行のコマンドでもかまいません。デフォルトでは、これらのコマンドは非ログインシェルを使用して実行されます。別のシェルを選択するには、
shell
を使用します。ビルドフェーズで
run
を指定した場合、uses
を併用することはできません。 - shell
-
オプション。このシーケンスで指定したシェル。サポートされているシェルパラメータについては、「steps.shell
」を参照してください。指定しない場合、使用されるシェルは bash です。bash が使用できない場合は、 sh が使用されます。 - with
-
オプション。アクションによって定義された入力パラメータのマップ。各パラメータはキーと値のペアです。
- with.args
-
オプション。Docker コンテナの入力を定義する文字列。
- with.entrypoint
-
オプション。Dockerfile に指定した Docker エントリポイント。
- env
-
オプション。環境で使用するためにステップに指定した変数。
- continue-on-error
-
オプション。このステップシーケンスの失敗を無視できるかどうかを示すブール値。
false
-
デフォルト値。このステップシーケンスが失敗すると、ビルドは失敗します。
true
-
このステップシーケンスが失敗しても、ビルドは成功する可能性があります。
- timeout-minutes
-
オプション。ステップが、終了するまでに実行できる最大分数。デフォルトでは、タイムアウトがありません。ステップのタイムアウトがビルドのタイムアウトを超えている場合、ビルドのタイムアウトに達すると、ステップは停止します。
Super-Linter
version: 0.2 phases: build: steps: - name: Lint Code Base uses: github/super-linter@v5 env: VALIDATE_ALL_CODEBASE: true USE_FIND_ALGORITHM: true FILTER_REGEX_INCLUDE: '/github/workspace/buildspec.yml'
GitHub でのアクション構文の例 AWS CodeBuild
これらのサンプルグループは、 の buildspec で GitHub アクションを試すために使用できます CodeBuild。
トピック
Super-Linter GitHub Action サンプル
このサンプルでは、 Super-Linter
buildspec ファイルの phase セクションを更新 CodeBuild することで、プロジェクトに Super-Linter GitHub アクションを追加できます。
version: 0.2 phases: build: steps: - name: Lint Code Base uses: github/super-linter@v5 env: VALIDATE_ALL_CODEBASE: true
Super-Linter ログは次のようになります。
/github/workspace/hello-world/app.js:3:13: Extra semicolon.
/github/workspace/hello-world/app.js:9:92: Trailing spaces not allowed.
/github/workspace/hello-world/app.js:21:7: Unnecessarily quoted property 'body' found.
/github/workspace/hello-world/app.js:31:1: Expected indentation of 2 spaces but found 4.
/github/workspace/hello-world/app.js:32:2: Newline required at end of file but not found.
バッチビルドグラフのサンプル
次の例では、依存関係チェーンを作成し、steps
を使用してコマンドを実行するビルドグラフを定義します。この例では、依存関係を持たない build1
が最初に実行されます。build2
は build1
への依存関係があるため、build1 の完了後に build2
が実行されます。詳細については、「ビルドグラフ」を参照してください。
version: 0.2 batch: fast-fail: false build-graph: - identifier: build1 env: variables: BUILD_ID: build1 ignore-failure: false - identifier: build2 env: variables: BUILD_ID: build2 depend-on: - build1 phases: build: steps: - run: echo $BUILD_ID
Amazon CodeGuru Reviewer サンプル
Amazon CodeGuru Reviewer は、Java および Python コードで問題を検出し、修正方法を推奨します。次の例では、 CodeGuru レビュー担当者を使用してリポジトリ分析コードの完全なレビューを提供します。これらのコードレビューは、指定されたブランチ内のすべてのコードをスキャンします。詳細については、「Amazon CodeGuru Reviewer ユーザーガイド」の GitHub 「アクションを使用してコードレビューを作成する」を参照してください。
version: 0.2 phases: build: steps: - name: Amazon CodeGuru Reviewer Scanner if: ${{ always() }} uses: aws-actions/codeguru-reviewer@v1.1 with: s3_bucket: codeguru-reviewer-user artifacts: files: - codeguru-results.sarif.json
注記
Amazon S3 バケットは codeguru-reviewer-
プレフィックスで始まる必要があります。
ログは、次のようになります。
INFO CodeReview created with arn=arn:aws:codeguru-reviewer:region
:account-id
:association:id
:code-review:RepositoryAnalysis-job
for job=job
INFO SARIF persisted to /github/workspace/codeguru-results.sarif.json
INFO Amazon CodeGuru Reviewer job execution completed
Amazon CodeGuru Reviewer ジョブが完了すると、sarif レポートが CodeBuild アーティファクトとして生成されます。詳細については、「Amazon CodeGuru Reviewer ユーザーガイド」の「完全なリポジトリ分析」を参照してください。
AWS Secrets Manager サンプル
AWS Secrets Manager は、データベース認証情報、アプリケーション認証情報、OAuth トークン、API キー、およびその他のシークレットをライフサイクルを通じて管理、取得、ローテーションするのに役立ちます。次の例では、Secrets Manager を使用してシークレットを定義し、steps
を使用してコマンドを実行します。詳細については、「 AWS Secrets Manager ユーザーガイド」の「 とは AWS Secrets Manager」を参照してください。
version: 0.2 env: secrets-manager: SECRET_VALUE: "arn:aws:secretsmanager:us-east-1:xxxx:secret:/secret-l3IJg9:my_super_secret_key" phases: build: steps: - run: echo $SECRET_VALUE
ログは、次のようになります。
echo $SECRET_VALUE
env:
SECRET_VALUE: ***
***
環境変数のサンプル
次の例では、env
シーケンスの下に環境変数を定義します。S3_BUCKET
変数は buildspec で定義され、その値として <bucket-name>
が割り当てられます。この変数は、ドル記号 ($) を使用して GitHub Action env コンテキストにアクセスすることにより、通常の環境変数と同様に if 条件で参照されます。詳細については、「env シーケンス」を参照してください。
version: 0.2 env: variables: S3_BUCKET: "
<bucket-name>
" phases: build: steps: - if: ${{ env.S3_BUCKET == '<bucket-name>
' }} run: echo "S3 bucket is $S3_BUCKET"
ログは、次のようになります。
echo "S3 bucket is $S3_BUCKET"
env:
S3_BUCKET: my-s3-bucket
S3 bucket is my-s3-bucket
エクスポートされた環境変数のサンプル
エクスポートされた環境変数は、 と組み合わせて使用され CodePipeline 、現在のビルドステージからパイプラインの後続のステージに環境変数をエクスポートします。次の例では、エクスポートされた環境変数を MY_VARIABLE
という名前の env
シーケンスで定義し、GITHUB_ENV
環境ファイルに書き込みます。
version: 0.2 env: exported-variables: - MY_VARIABLE phases: build: steps: - run: echo "MY_VARIABLE=my-value" >> $GITHUB_ENV
詳細については、 AWS CodeBuild API リファレンスの ExportedEnvironmentVariable「」を参照してください。