View a markdown version of this page

CodeBuild 託管的 GitHub Actions Runner 支援標籤覆寫 - AWS CodeBuild

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

CodeBuild 託管的 GitHub Actions Runner 支援標籤覆寫

在 GitHub Actions 工作流程 YAML 中,您可以提供各種標籤覆寫,以修改您的自我託管執行器建置。CodeBuild 無法辨識的任何建置都會遭到忽略,但不會讓您的 Webhook 請求失敗。下列工作流程 YAML 定義兩個任務: 會針對映像、執行個體大小、機群和 buildspec job2 job1使用覆寫,並僅使用映像覆寫。為每個任務提供一個唯一的標籤 (job1job2),以便 GitHub 將每個任務路由到為其建立的執行器:

name: Hello World on: [push] jobs: job1: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} - image:arm-3.0 - instance-size:small - fleet:myFleet - buildspec-override:true - job1 steps: - run: echo "Hello from Job 1!" job2: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} - image:linux-5.0 - job2 steps: - run: echo "Hello from Job 2!"

您也可以使用矩陣策略跨多個組態執行單一任務。單一矩陣任務的擴展始終具有相同數量的標籤,因此執行器比對問題不會影響它們。不過,如果工作流程執行包含多個矩陣任務,請將自己的唯一自訂標籤 (例如 matrix-job-1matrix-job-2) 提供給每個矩陣任務,讓 GitHub 不會將任務與為不同矩陣任務建立的執行器比對:

name: Hello World on: [push] jobs: Hello-World-Job: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} - image:${{ matrix.os }} - instance-size:${{ matrix.size }} - fleet:myFleet - buildspec-override:true - matrix-job-1 strategy: matrix: include: - os: arm-3.0 size: small - os: linux-5.0 size: large steps: - run: echo "Hello World!"
注意

如果您的工作流程任務在 GitHub 上懸置,請參閱Webhook 故障診斷使用自訂標籤來路由任務

codebuild-<project-name>-${{github.run_id}}-${{github.run_attempt}} (必要)

  • 範例:codebuild-fake-project-${{ github.run_id }}-${{ github.run_attempt }}

  • 所有 GitHub Actions 工作流程 YAMLs都需要。<project name> 應等於設定自我託管執行器 Webhook 的專案名稱。

image:<environment-type>-<image-identifier>

instance-size:<instance-size>

fleet:<fleet-name>

buildspec-override:<boolean>

  • 範例:buildspec-override:true

  • 如果設為 PRE_BUILD,允許組建在 INSTALL、 和 POST_BUILD階段中執行 buildspec 命令true

<unique-label> (當工作流程執行有多個任務時建議使用)

  • 範例:job1

  • 您定義且相同工作流程執行中沒有其他任務使用的自訂標籤。為每個任務指派唯一的標籤,可確保 GitHub 只會將每個任務路由至為其建立的執行器。如果沒有它,當相同工作流程執行中的任務具有不同數量的標籤覆寫時,為具有更多標籤的任務建立的執行器可以拾取具有較少標籤的任務,這會離開沒有執行器的第二個任務。如需詳細資訊,請參閱Webhook 故障診斷

單一標籤覆寫

CodeBuild 可讓您使用下列項目,在單一標籤中提供多個覆寫:

注意

由於所有覆寫都會合併為單一標籤,因此每個任務的執行器只會註冊一個標籤。這表示 中所述的多工作執行器比對問題Webhook 故障診斷無法使用此格式發生,即使每個工作上沒有唯一的標籤也一樣。如果您偏好此行為,且您的任務只需要覆寫其支援的 ,請使用單一標籤格式。當您需要其不支援的覆寫時,請勿使用它。例如,自訂映像 (包括私有登錄檔中的映像) 只能使用image:custom-<environment-type>-<custom-image-identifier>標籤格式來指定。對於這些覆寫,請使用本主題先前所述的個別標籤格式。

  • 若要覆寫 Amazon EC2/Lambda 運算組建的環境設定,請使用下列語法:

    runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}-<environment-type>-<image-identifier>-<instance-size>
  • 若要覆寫 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>
  • 若要在建置期間執行 buildspec 命令, -with-buildspec 可以新增為標籤的尾碼:

    runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}-<image>-<image-version>-<instance-size>-with-buildspec
  • 或者,您可以提供執行個體大小覆寫,而無需覆寫映像。對於 Amazon EC2 組建,您可以排除環境類型和映像識別符。對於 Lambda 組建,您可以排除影像識別符。