チュートリアル: ホストされた GitHub Actions CodeBuildランナーを設定する - AWS CodeBuild

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

チュートリアル: ホストされた GitHub Actions CodeBuildランナーを設定する

このチュートリアルでは、 GitHub Actions ジョブを実行するように CodeBuild プロジェクトを設定する方法を示します。で GitHub アクションを使用する方法の詳細については、 CodeBuild 「」を参照してくださいでセルフホストアクション GitHub ランナーを使用する AWS CodeBuild

このチュートリアルを完了するには、まず以下を行う必要があります。

  • 個人用アクセストークン、Secrets Manager シークレット、OAuthアプリ、または GitHub アプリで接続します。OAuth アプリに接続する場合は、 CodeBuild コンソールを使用して接続する必要があります。個人用アクセストークンを作成する場合は、 CodeBuild コンソールを使用するか、 を使用できますImportSourceCredentials API。詳細については、「」を参照してくださいGitHub での および GitHub Enterprise Server アクセス CodeBuild

  • GitHub アカウント CodeBuild に接続します。これを行うには、次のいずれかで実行できます。

    注記

    これは、 GitHub アカウントの に接続していない場合にのみ実行する必要があります。

ステップ 1: ウェブフックを使用してプロジェクトを作成する CodeBuild

このステップでは、ウェブフックを使用して CodeBuild プロジェクトを作成し、 GitHub コンソールで確認します。ソースプロバイダーとして GitHub Enterprise を選択することもできます。 GitHub Enterprise 内でのウェブフックの作成の詳細については、「」を参照してくださいGitHub 手動ウェブフック

ウェブフックを使用して CodeBuild プロジェクトを作成するには
  1. https://console.aws.amazon.com/codesuite/codebuild/home で AWS CodeBuild コンソールを開きます。

  2. ビルドプロジェクトを作成します。詳細については、「ビルドプロジェクトの作成 (コンソール)」および「ビルドの実行 (コンソール)」を参照してください。

    • [Source (ソース)] で、次のようにします。

      • ソースプロバイダー で、 を選択しますGitHub

      • リポジトリ で、 GitHub アカウント のリポジトリ を選択します。

      • リポジトリ にはURL、 と入力しますhttps://github.com/user-name/repository-name

      注記

      デフォルトでは、プロジェクトは 1 つのリポジトリのWORKFLOW_JOB_QUEUEDイベントのみを受信します。組織またはエンタープライズ内のすべてのリポジトリのイベントを受信する場合は、「」を参照してくださいGitHub グローバルおよび組織のウェブフック

    • プライマリソースのウェブフックイベント:

      • Webhook - オプション では、コード変更がこのリポジトリ にプッシュされるたびに再構築を選択します。

      • イベントタイプ でWORKFLOW_JOB_QUEUED を選択します。これを有効にすると、ビルドは GitHub Actions ワークフロージョブイベントによってのみトリガーされます。

        注記

        CodeBuild は、ウェブフックに WORKFLOW_JOB_QUEUED イベントフィルターを含むフィルターグループがある場合にのみ、 GitHub アクションワークフロージョブイベントを処理します。

        GitHub Actions ワークフロージョブイベントによってのみトリガーされるように設定を構築します。
    • [環境] で以下の操作を行います。

      • サポートされている環境イメージを選択し、 をコンピューティングします。 GitHub アクションワークフロー のラベルを使用して、イメージとインスタンスの設定を上書きするオプションがあることに注意してくださいYAML。詳細については、「ステップ 2: Actions ワークフローを更新する GitHub YAML」を参照してください

    • [Buildspec (Buildspec)] で、次のようにします。

      • サフィックスがラベルに追加されない限り、buildspec -with-buildspec は無視されることに注意してください。代わりに、セルフホストランナーをセットアップするコマンドを使用するように が上書き CodeBuild します。

  3. デフォルト値を続行し、ビルドプロジェクトの作成 を選択します。

  4. で GitHub コンソールを開き、ウェブフックが作成され、ワークフロージョブイベントを配信できるhttps://github.com/user-name/repository-name/settings/hooksことを確認します。

ステップ 2: Actions ワークフローを更新する GitHub YAML

このステップでは、 の GitHub アクションワークフローYAMLファイルを更新GitHubしてビルド環境を設定し、 の GitHub アクションセルフホストランナーを使用します CodeBuild。詳細については、「セルフホストランナーでのラベルの使用」を参照してください。

Actions ワークフローを更新する GitHub YAML

GitHub アクションワークフローの runs-on設定に移動GitHubして更新しYAML、ビルド環境を設定します。これを行うには、次のいずれかで実行できます。

  • プロジェクト名と実行 ID を指定できます。その場合、ビルドはコンピューティング、イメージ、イメージバージョン、インスタンスサイズに既存のプロジェクト設定を使用します。Actions GitHub ジョブの AWS関連の設定を特定の CodeBuildプロジェクトにリンクするには、プロジェクト名が必要です。にプロジェクト名を含めることでYAML、 CodeBuild は正しいプロジェクト設定でジョブを呼び出すことができます。実行 ID を指定することで、 CodeBuild はビルドを特定のワークフロー実行にマッピングし、ワークフロー実行がキャンセルされたときにビルドを停止します。詳細については、「 githubコンテキスト」を参照してください。

    runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}
    注記

    次のことを確認してください。<project-name> は、前のステップで作成したプロジェクトの名前と一致します。一致しない場合、 はウェブフックを処理し CodeBuild ず、アクションワークフローが GitHubハングする可能性があります。

    以下は、 GitHub アクションワークフロー の例ですYAML。

    name: Hello World on: [push] jobs: Hello-World-Job: runs-on: codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} steps: - run: echo "Hello World!"
  • ラベルでイメージとコンピューティングタイプを上書きすることもできます。使用可能なイメージのリストがホストする GitHub Actions CodeBuildランナーでサポートされているイメージをコンピューティングするについては、「」を参照してください。ラベル内のコンピューティングタイプとイメージは、プロジェクトの環境設定を上書きします。Amazon EC2コンピューティングビルドの環境設定を上書きするには、次の構文を使用します。

    runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}-<image>-<image-version>-<instance-size>

    Lambda コンピューティングビルドの環境設定を上書きするには、次の構文を使用します。

    runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}-<environment-type>-<runtime-version>-<instance-size>

    以下は、 GitHub アクションワークフロー の例ですYAML。

    name: Hello World on: [push] jobs: Hello-World-Job: runs-on: codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }}-arm-3.0-small steps: - run: echo "Hello World!"
  • ラベルでビルドに使用されるフリートを上書きできます。これにより、指定したフリートを使用するようにプロジェクトで設定されたフリート設定が上書きされます。詳細については、「リザーブドキャパシティフリートでビルドを実行する」を参照してください。Amazon EC2コンピューティングビルドのフリート設定を上書きするには、次の構文を使用します。

    runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}-fleet-<fleet-name>

    ビルドに使用されるフリートとイメージの両方を上書きするには、次の構文を使用します。

    runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}-<image>-<image-version>-fleet-<fleet-name>

    以下は、 GitHub アクションワークフロー の例ですYAML。

    name: Hello World on: [push] jobs: Hello-World-Job: runs-on: codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }}-arm-3.0-fleet-myFleet steps: - run: echo "Hello World!"
  • オプションで、イメージを上書きせずにインスタンスサイズの上書きを指定できます。Amazon EC2ビルドでは、イメージとイメージバージョンの両方を除外できます。Lambda ビルドでは、環境タイプとランタイムバージョンの両方を除外できます。

注記

GitHubホストされたランナーによって提供される依存関係が環境で使用 CodeBuildできない場合は、ワークフロー実行の GitHub アクションを使用して依存関係をインストールできます。例えば、 setup-pythonアクションを使用してビルド環境に Python をインストールできます。

buildspec コマンドを INSTALL、PRE_BUILD、POST_BUILD フェーズで実行する

デフォルトでは、セルフホストの GitHub Actions ビルドを実行すると、 は buildspec コマンド CodeBuild を無視します。ビルド中に buildspec コマンドを実行するには、ラベルにサフィックスとして -with-buildspecを追加できます。

runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}-<image>-<image-version>-<instance-size>-with-buildspec

このコマンドを使用すると、 はコンテナのプライマリソースフォルダactions-runnerに という名前のフォルダ CodeBuild を作成します。 GitHub Actions ランナーが BUILDフェーズ中に起動すると、ランナーは actions-runner ディレクトリで実行されます。

セルフホストの GitHub Actions ビルドで buildspec オーバーライドを使用する場合、いくつかの制限があります。

  • CodeBuild は、セルフホストランナーが BUILDフェーズで実行されるため、 BUILDフェーズ中に buildspec コマンドを実行しません。

  • CodeBuild は、 DOWNLOAD_SOURCEフェーズ中にプライマリソースまたはセカンダリソースをダウンロードしません。buildspec ファイルが設定されている場合、そのファイルのみがプロジェクトのプライマリソースからダウンロードされます。

  • ビルドコマンドが PRE_BUILDまたは INSTALLフェーズで失敗した場合、 はセルフホストランナーを起動 CodeBuild せず、 GitHub アクションワークフロージョブを手動でキャンセルする必要があります。

  • CodeBuild は、 DOWNLOAD_SOURCEフェーズ中にランナートークンを取得します。有効期限は 1 時間です。PRE_BUILD または INSTALLフェーズが 1 時間を超えると、 GitHub セルフホストランナーが起動する前にランナートークンの有効期限が切れる可能性があります。

ステップ 3: 結果を確認する

GitHub Actions ワークフローが実行されるたびに、 CodeBuild はウェブフックを介してワークフロージョブイベントを受信します。ワークフロー内のジョブごとに、 はビルド CodeBuild を開始して一時的な GitHub Actions ランナーを実行します。ランナーは、単一のワークフロージョブを実行する責任があります。ジョブが完了すると、ランナーと関連するビルドプロセスは直ちに終了します。

ワークフロージョブログを表示するには、 のリポジトリに移動し GitHub、アクション を選択し、目的のワークフローを選択し、ログを確認する特定のジョブを選択します。

ジョブが のセルフホストランナーによって取得されるのを待っている間、ログでリクエストされたラベルを確認できます CodeBuild。

ジョブのログをロードします。

ジョブが完了すると、ジョブのログを表示できます。

ジョブのログ。