在中設定自託管的 GitHub 動作跑步者 AWS CodeBuild - AWS CodeBuild

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

在中設定自託管的 GitHub 動作跑步者 AWS CodeBuild

您可以將專案設定為在 CodeBuild 容器中設定自我託管的 GitHub Actions 執行程式,以處理動作工 GitHub 作流程作業。這可以通過使用您的 CodeBuild 項目設置一個 webhook,並更新 GitHub 操作工作流 YAML 以使用託管在機器上的自託管運行器來完成。 CodeBuild 若要取得更多資訊,請參閱〈關於自託管料道

將 CodeBuild 專案設定為執行 GitHub 動作工作的高階步驟如下:

  1. 如果您尚未這樣做,請創建個人訪問令牌或與 OAuth 應用程序連接以將項目連接到 GitHub。

  2. 導航到 CodeBuild 控制台並使用 webhook 創建一個 CodeBuild 項目並設置您的 webhook 過濾器。

  3. 在中更新 YAML 中的 GitHub 動作工作流程, GitHub 以設定您的組建環境。

如需更詳細的程序,請參閱自學課程:設定 CodeBuild 自我託管的 GitHub 動作亞軍

此功能可讓您的 GitHub 動作工作流程任務與原生整合 AWS,透過 IAM、 AWS Secrets Manager 整合和 Amazon VPC 等功能提供安全性和便利性。 AWS CloudTrail您可以存取最新的執行個體類型,包括 ARM 型執行個體。

自學課程:設定 CodeBuild 自我託管的 GitHub 動作亞軍

本教學課程說明如何將 CodeBuild 專案設定為執行 GitHub 動作工作。

必要條件

若要完成此教學課程,您必須先:

  • 與 OAuth 應用程序 Connect 或創建個人訪問令牌。如果您想與 OAuth 應用程序連接,則必須使用 CodeBuild 控制台來執行此操作。如果您想創建個人訪問令牌,則可以使用 CodeBuild 控制台或使用 ImportSourceCredentials API。如需更多指示,請參閱GitHub 和 GitHub 企業服務器訪問令牌

  • Connect CodeBuild 到您的 GitHub 帳戶。若要這麼做,您可以執行下列其中一項作業:

    注意

    只有在您尚未連接到您的帳戶時,才需要執 GitHub 行此操作。

第 1 步:使用網絡掛鉤創建 CodeBuild 項目

在此步驟中,您將使用 webhook 創建一個 CodeBuild 項目,並在 GitHub 控制台中查看它。

若要使用網路掛接建立 CodeBuild 專案
  1. 請在以下位置開啟 AWS CodeBuild 主控台。 https://console.aws.amazon.com/codesuite/codebuild/home

  2. 建立建置專案。如需詳細資訊,請參閱 建立組建專案 (主控台)執行建置 (主控台)

    • Source (來源) 中:

      • 對於來源提供者,請選擇GitHub

      • 對於存儲庫,選擇我的 GitHub 帳戶中的存儲庫。

      • 針對 Repository URL (儲存庫 URL),輸入 https://github.com/user-name/repository-name

    • 主要來源網路掛鉤事件中:

      • 對於 Webhook-選擇性,請在每次將程式碼變更推送至此儲存庫時選取重建

      • 對於事件類型,選取工作流程 _ 工作佇列。啟用此選項後,組建只會由 GitHub 「動作」工作流程作業事件觸發。

        注意

        CodeBuild 只有在網路勾點具有包含 WORKFLOW_JO B_QUEUE 事件篩選器的篩選器群組時,才會處理 GitHub 「動作」工作流程作業事件。

    • Environment (環境) 中:

    • Buildspec (建置規格) 中:

      • 請注意,您的構建規格將被忽略。而是 CodeBuild 將取代它,以使用將設置自我主體料道的指令。此專案的主要職責是在 CodeBuild 中設定自我託管的執行者,以執行 GitHub 「動作」工作流程工作流程作業。

  3. 繼續使用預設值,然後選擇 [建立組建專案]。

  4. 在開啟 GitHub 主控台https://github.com/user-name/repository-name/settings/hooks以確認 Webhook 已建立,且已啟用可傳遞工作流程作業事件。

步驟 2:更新 GitHub 動作工作流程 YAML

在此步驟中,您將更新中的 GitHub 動作工作流程 YAML 檔案,GitHub以設定您的組建環境,並在中使用 GitHub 動作自託管執行程式。 CodeBuild若要取得更多資訊,請參閱〈將標示與自主體料道一起使

更新您的 GitHub 動作工作流程 YAML

瀏覽GitHub並更新 GitHub 動作工作流程 YAML 中的runs-on設定,以設定您的組建環境。若要這麼做,您可以執行下列其中一項作業:

  • 您可以指定專案名稱和執行 ID,在這種情況下,組建將使用您現有的專案組態來執行運算、映像檔、映像檔版本和執行個體大小。需要專案名稱,才能將 GitHub 「動作」工作的 AWS相關設定連結至特定 CodeBuild 專案。藉由在 YAML 中加入專案名稱, CodeBuild 就可以叫用具有正確專案設定的工作。藉由提供執行 ID, CodeBuild 將您的組建對應至特定的工作流程執行,並在取消工作流程執行時停止建置。如需詳細資訊,請參閱github前後關聯

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

    請確定您<project-name>的名稱與您在上一個步驟中建立的專案名稱相符。如果它不匹配, CodeBuild 將不會處理 webhook,並且 GitHub 操作工作流程可能會掛起。

    下列是 YAML GitHub 動作工作流程的範例:

    name: Hello World on: [push] jobs: Hello-World-Job: runs-on: codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} steps: - run: echo "Hello World!"
  • 您也可以覆寫標籤中的映像檔和運算類型。這將覆蓋項目上的環境設置。若要覆寫 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>

    下列是 YAML GitHub 動作工作流程的範例:

    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!"
注意

如果在 CodeBuild 環境中無法使用 GitHub-hosted runner 提供的相依性,您可以在工作流程執行中使用 GitHub 動作來安裝相依性。例如,您可以使用setup-python動作為建置環境安裝 Python。

支援的運算映像

在標籤中,您可以使用前三欄中的值覆寫 Amazon EC2 環境設定。 CodeBuild 提供下列 Amazon EC2 運算映像檔:

映像 影像版本 執行個體大小 平台 映像識別符 定義

linux

4.0

small

medium

large

xlarge

2xlarge

gpu_small

gpu_large

Amazon Linux 2 aws/codebuild/amazonlinux2-x86_64-standard:4.0 AL2/標準/4.0

linux

5.0

Amazon Linux 2023 aws/codebuild/amazonlinux2-x86_64-standard:5.0 AL2/標準/5.0

arm

2.0

small

large

Amazon Linux 2 aws/codebuild/amazonlinux2-aarch64-standard:2.0 AL2/aarch64/標準/2.0

arm

3.0

Amazon Linux 2023 aws/codebuild/amazonlinux2-aarch64-standard:3.0 AL2/aarch64/標準/3.0

ubuntu

5.0

small

medium

large

xlarge

2xlarge

gpu_small

gpu_large

Ubuntu 20.04 aws/codebuild/standard:5.0 支持/標準/5.0

ubuntu

6.0

Ubuntu aws/codebuild/standard:6.0 支持/標準/6.0

ubuntu

7.0

Ubuntu aws/codebuild/standard:7.0 支持/標準 /7.0

windows

1.0

medium

large

視窗伺服器核心 aws/codebuild/windows-base:2019-1.0 N/A

windows

2.0

視窗伺服器核心 aws/codebuild/windows-base:2019-2.0 N/A

windows

3.0

視窗伺服器核心 aws/codebuild/windows-base:2019-3.0 N/A

此外,您可以使用下列值覆寫 Lambda 環境設定。如需 CodeBuild Lambda 運算的詳細資訊,請參閱使用在中使用 AWS Lambda 計算 AWS CodeBuild. CodeBuild 支援下列 Lambda 運算映像檔:

環境類型 執行時間版本 執行個體大小

linux-lambda

dotnet6

go1.21

corretto11

corretto17

corretto21

nodejs18

nodejs20

python3.11

python3.12

ruby3.2

1GB

2GB

4GB

8GB

10GB

arm-lambda

如需詳細資訊,請參閱 建置環境運算模式和類型碼頭圖片提供 CodeBuild

步驟 3:查看結果

每當 GitHub 「動作」工作流程執行發生時,都 CodeBuild 會透過 webhook 接收工作流程工作事件。對於工作流程中的每個工作, CodeBuild 啟動組建以執行暫時的動作執行程序 GitHub 。流道負責執行單一工作流程工作。工作完成後,流道和相關聯的構建過程將立即終止。

若要檢視您的 Job 流程工作記錄,請瀏覽至中 GitHub的存放庫,選擇 [作],選擇您想要的工作流程,然後選擇要檢閱記錄的特定工作

當工作正在等待自託管的跑道中拾取時,您可以在 CodeBuild日誌中查看請求的標籤。

作業完成後,您將能夠檢視工作的記錄。

關於 CodeBuild主體 GitHub 動作流道

什麼時候應該在標籤中包含映像和實例覆蓋?

您可以在標籤中包含映像檔和執行個體覆寫,以便為每個 GitHub Actions 工作流程工作指定不同的建置環境。這可以在不需要創建多個 CodeBuild 項目或 Webhook 的情況下完成。例如,當您需要為工作流程工作使用矩陣時,這很有用。

name: Hello World on: [push] jobs: Hello-World-Job: runs-on: codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }}-${{ matrix.os }} strategy: matrix: os: [arm-3.0-small, al2-5.0-large] steps: - run: echo "Hello World!"
注意

如果runs-on有多個包含 GitHub 「動作」前後關聯的標籤,則可能需要引號。

我可以使 AWS CloudFormation 用此功能嗎?

是的,您可以在 AWS CloudFormation 模板中包含一個過濾器組,該過濾器組指定了項目 webhook 中的 GitHub 操作工作流程作業事件過濾器。

Triggers: Webhook: true FilterGroups: - - Type: EVENT Pattern: WORKFLOW_JOB_QUEUED

如需詳細資訊,請參閱 篩選 GitHub 網路掛鉤事件 ()AWS CloudFormation

如果您需要在 AWS CloudFormation 範本中設定專案認證的說明,請參閱AWS CloudFormation 使用者指南AWS::CodeBuild::SourceCredential中的以取得更多資訊。

哪些區域支援使用 CodeBuild託管的 GitHub 動作亞軍?

CodeBuild所有 CodeBuild 地區都支持託管的 GitHub 操作運行器。如需有關可用 AWS 區域 位置 CodeBuild 的詳細資訊,請參閱按地區分類的AWS 服務

哪些平台支持使用 CodeBuild託管的 GitHub 操作運行器?

CodeBuild-託管的 GitHub 動作執行器在 Amazon EC2 和AWS Lambda運算上都受到支援。您可以使用以下平台:Amazon Linux 2,Amazon Linux 2023,Ubuntu 和視窗服務器核心 2019 年。如需詳細資訊,請參閱 EC2 運算映像檔Lambda 運算映像

疑難排解:如果 webhook 無法正常工作,該如何進行疑難排解?

問題:您的 webhook 無法正常工作,或者您的工作流程工作掛起。 GitHub

可能的原因:您的 webhook 工作流程作業事件可能無法觸發構建。檢閱回應記錄以檢視回應或錯誤訊息。

建議的解決方案:若要偵錯此錯誤,請使用下列指示。

  1. 在開啟 GitHub 主控台https://github.com/user-name/repository-name/settings/hooks以檢視儲存庫的 webhook 設定。在此頁面上,您將看到為您的存儲庫創建的 webhook。

  2. 選擇編輯並確定 Webhook 已啟用以傳遞 Work 工作事件。

  3. 切換作業選項至「最近的交貨」頁標,搜尋對應的workflow_job.queued事件,然後展開事件。

  4. 檢閱裝載中的標籤欄位,並確定其符合預期。

  5. 最后,請查看「響應」標簽,因為它包含返回的響應或錯誤信息 CodeBuild。