本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在中設定自託管的 GitHub 動作跑步者 AWS CodeBuild
您可以將專案設定為在 CodeBuild 容器中設定自我託管的 GitHub Actions 執行程式,以處理動作工 GitHub 作流程作業。這可以通過使用您的 CodeBuild 項目設置一個 webhook,並更新 GitHub 操作工作流 YAML 以使用託管在機器上的自託管運行器來完成。 CodeBuild 若要取得更多資訊,請參閱〈關於自託管料道
將 CodeBuild 專案設定為執行 GitHub 動作工作的高階步驟如下:
-
如果您尚未這樣做,請創建個人訪問令牌或與 OAuth 應用程序連接以將項目連接到 GitHub。
-
導航到 CodeBuild 控制台並使用 webhook 創建一個 CodeBuild 項目並設置您的 webhook 過濾器。
-
在中更新 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 為來源提供者。您可以與 OAuth 應用程序或個人訪問令牌連接。如需說明,請參閱Connect GitHub 訪問令牌(控制台) 。
-
您可以通過 ImportSourceCredentials API 導入 GitHub 憑據。這只能使用個人訪問令牌來完成。如果您使用 OAuth 應用程式進行連線,則必須改為使用主控台進行連線。如需說明,請參閱 Connect GitHub 用存取權杖 (CLI) 連線 。
注意
只有在您尚未連接到您的帳戶時,才需要執 GitHub 行此操作。
-
第 1 步:使用網絡掛鉤創建 CodeBuild 項目
在此步驟中,您將使用 webhook 創建一個 CodeBuild 項目,並在 GitHub 控制台中查看它。
若要使用網路掛接建立 CodeBuild 專案
-
請在以下位置開啟 AWS CodeBuild 主控台。
https://console.aws.amazon.com/codesuite/codebuild/home -
建立建置專案。如需詳細資訊,請參閱 建立組建專案 (主控台) 及 執行建置 (主控台)。
-
在 Source (來源) 中:
-
對於來源提供者,請選擇GitHub。
-
對於存儲庫,選擇我的 GitHub 帳戶中的存儲庫。
-
針對 Repository URL (儲存庫 URL),輸入
https://github.com/
。user-name
/repository-name
-
-
在主要來源網路掛鉤事件中:
-
對於 Webhook-選擇性,請在每次將程式碼變更推送至此儲存庫時選取重建。
-
對於事件類型,選取工作流程 _ 工作佇列。啟用此選項後,組建只會由 GitHub 「動作」工作流程作業事件觸發。
注意
CodeBuild 只有在網路勾點具有包含 WORKFLOW_JO B_QUEUE 事件篩選器的篩選器群組時,才會處理 GitHub 「動作」工作流程作業事件。
-
-
在 Environment (環境) 中:
-
選擇支援的環境映像檔並運算。請注意,您可以選擇在 GitHub 動作工作流程 YAML 中使用標籤覆寫映像檔和執行個體設定。如需更多資訊,請參閱步驟 2:更新 GitHub 動作工作流程 YAML
-
-
在 Buildspec (建置規格) 中:
-
請注意,您的構建規格將被忽略。而是 CodeBuild 將取代它,以使用將設置自我主體料道的指令。此專案的主要職責是在 CodeBuild 中設定自我託管的執行者,以執行 GitHub 「動作」工作流程工作流程作業。
-
-
-
繼續使用預設值,然後選擇 [建立組建專案]。
-
在開啟 GitHub 主控台
https://github.com/
以確認 Webhook 已建立,且已啟用可傳遞工作流程作業事件。user-name
/repository-name
/settings/hooks
步驟 2:更新 GitHub 動作工作流程 YAML
在此步驟中,您將更新中的 GitHub 動作工作流程 YAML 檔案,GitHub
更新您的 GitHub 動作工作流程 YAML
瀏覽GitHub
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
支援的運算映像
在標籤中,您可以使用前三欄中的值覆寫 Amazon EC2 環境設定。 CodeBuild 提供下列 Amazon EC2 運算映像檔:
映像 | 影像版本 | 執行個體大小 | 平台 | 映像識別符 | 定義 |
---|---|---|---|---|---|
|
|
|
Amazon Linux 2 | aws/codebuild/amazonlinux2-x86_64-standard:4.0 |
AL2/標準/4.0 |
|
|
Amazon Linux 2023 | aws/codebuild/amazonlinux2-x86_64-standard:5.0 |
AL2/標準/5.0 |
|
|
|
|
Amazon Linux 2 | aws/codebuild/amazonlinux2-aarch64-standard:2.0 |
AL2/aarch64/標準/2.0 |
|
|
Amazon Linux 2023 | aws/codebuild/amazonlinux2-aarch64-standard:3.0 |
AL2/aarch64/標準/3.0 |
|
|
|
|
Ubuntu 20.04 | aws/codebuild/standard:5.0 |
支持/標準/5.0 |
|
|
Ubuntu | aws/codebuild/standard:6.0 |
支持/標準/6.0 |
|
|
|
Ubuntu | aws/codebuild/standard:7.0 |
支持/標準 /7.0 |
|
|
|
|
視窗伺服器核心 | aws/codebuild/windows-base:2019-1.0 |
N/A |
|
|
視窗伺服器核心 | aws/codebuild/windows-base:2019-2.0 |
N/A | |
|
|
視窗伺服器核心 | aws/codebuild/windows-base:2019-3.0 |
N/A |
此外,您可以使用下列值覆寫 Lambda 環境設定。如需 CodeBuild Lambda 運算的詳細資訊,請參閱使用在中使用 AWS Lambda 計算 AWS CodeBuild. CodeBuild 支援下列 Lambda 運算映像檔:
環境類型 | 執行時間版本 | 執行個體大小 |
---|---|---|
|
|
|
|
如需詳細資訊,請參閱 建置環境運算模式和類型 及 碼頭圖片提供 CodeBuild。
步驟 3:查看結果
每當 GitHub 「動作」工作流程執行發生時,都 CodeBuild 會透過 webhook 接收工作流程工作事件。對於工作流程中的每個工作, CodeBuild 啟動組建以執行暫時的動作執行程序 GitHub 。流道負責執行單一工作流程工作。工作完成後,流道和相關聯的構建過程將立即終止。
若要檢視您的 Job 流程工作記錄,請瀏覽至中 GitHub的存放庫,選擇 [動作],選擇您想要的工作流程,然後選擇要檢閱記錄的特定工作。
當工作正在等待自託管的跑道中拾取時,您可以在 CodeBuild日誌中查看請求的標籤。
![](images/hello-world-loading.png)
作業完成後,您將能夠檢視工作的記錄。
![](images/hello-world-log.png)
關於 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 工作流程作業事件可能無法觸發構建。檢閱回應記錄以檢視回應或錯誤訊息。
建議的解決方案:若要偵錯此錯誤,請使用下列指示。
-
在開啟 GitHub 主控台
https://github.com/
以檢視儲存庫的 webhook 設定。在此頁面上,您將看到為您的存儲庫創建的 webhook。user-name
/repository-name
/settings/hooks -
選擇編輯並確定 Webhook 已啟用以傳遞 Work 工作事件。
-
切換作業選項至「最近的交貨」頁標,搜尋對應的
workflow_job.queued
事件,然後展開事件。 -
檢閱裝載中的標籤欄位,並確定其符合預期。
-
最后,請查看「響應」標簽,因為它包含返回的響應或錯誤信息 CodeBuild。