本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在中设置自托管的 GitHub 操作运行器 Amazon CodeBuild
您可以将项目配置为在 CodeBuild 容器中设置自托管的 Action GitHub s 运行器来处理您的 Actions 工作流程 GitHub 作业。这可以通过使用您的 CodeBuild 项目设置 webhook,然后更新 GitHub 操作工作流程 YAML 以使用托管在计算机上的自托管运行器来完成。 CodeBuild 有关更多信息,请参阅关于自托管运行器
配置 CodeBuild 项目以运行 GitHub 操作作业的高级步骤如下:
-
如果您还没有这样做,请创建个人访问令牌或连接 OAuth 应用程序以将您的项目与之关联。 GitHub
-
导航到 CodeBuild 控制台并使用 webhook 创建 CodeBuild 项目,然后设置 webhook 过滤器。
-
更新您的 GitHub 操作工作流程 YAML GitHub 以配置您的构建环境。
有关更详细的过程,请参阅教程:配置 CodeBuild 自托管 GitHub 操作运行器。
此功能允许您的 A GitHub ctions 工作流程任务与之进行原生集成 Amazon,从而通过 IAM Amazon CloudTrail、 Amazon Secrets Manager 集成和 Amazon VPC 等功能提供安全性和便利性。您可以访问最新的实例类型,包括基于 ARM 的实例。
教程:配置 CodeBuild 自托管 GitHub 操作运行器
本教程向您展示如何配置 CodeBuild 项目以运行 Action GitHub s 作业。
先决条件
要完成本教程,您首先必须:
-
连接 OAuth 应用程序或创建个人访问令牌。如果您想连接 OAuth 应用程序,则必须使用 CodeBuild 控制台进行连接。如果您想创建个人访问令牌,则可以使用 CodeBuild 控制台或使用 ImportSourceCredentials API。有关更多说明,请参阅GitHub 和 GitHub 企业服务器访问令牌。
-
Connect CodeBuild 到您的 GitHub 账户。为此,您可以执行以下操作之一:
-
您可以在控制台中添加 GitHub 为源提供商。您可以连接 OAuth 应用程序或个人访问令牌。有关说明,请参阅 GitHub 使用访问令牌(控制台)连接 。
-
您可以通过 ImportSourceCredentials API 导入您的 GitHub 证书。这只能使用个人访问令牌来完成。如果您使用 OAuth 应用程序进行连接,则必须改用控制台进行连接。有关说明,请参阅 GitHub 使用访问令牌 (CLI) 连接 。
注意
只有当你的账户还没有连接时, GitHub 才需要这样做。
-
第 1 步:使用 webhook 创建 CodeBuild 项目
在此步骤中,您将创建一个带有 webhook 的 CodeBuild 项目,并在 GitHub 控制台中对其进行审核。
使用 webhook 创建 CodeBuild 项目
-
打开 Amazon CodeBuild 控制台,网址为 https://console.aws.amazon.com/codesuite/codebuild/home
。 -
创建构建项目。有关信息,请参阅创建构建项目(控制台)和运行构建(控制台)。
-
在源中:
-
对于源提供商,请选择GitHub。
-
在 “存储库” 中,选择 “我的 GitHub 账户中的存储库”。
-
对于存储库 URL,输入
https://github.com/
。user-name
/repository-name
-
-
在主要来源 webhook 事件中:
-
对于 Webhook(可选),选择 “每次将代码更改推送到此存储库时重建”。
-
对于事件类型,选择 WORKF LOW_JOB_QUEUED。启用此功能后,构建将仅由 Actions GitHub 工作流程作业事件触发。
注意
CodeBuild 仅当 Webhook 具有包含 WORKFLOW_JOB _QUEUED 事件过滤器的筛选器组时,才会处理 GitHub 操作工作流作业事件。
-
-
在环境中:
-
选择支持的环境映像和计算。请注意,您可以选择在 GitHub 操作工作流程 YAML 中使用标签来覆盖图像和实例设置。有关更多信息,请参阅 第 2 步:更新您的 GitHub 操作工作流程 YAML。
-
-
在 Buildspec (构建规范) 中:
-
请注意,你的 Buildspec 将被忽略。相反, CodeBuild 将覆盖它以使用设置自托管运行器的命令。该项目的主要职责是在中设置一个自托管的运行器 CodeBuild 来运行 Actions 工作流程 GitHub 作业。
-
-
-
继续使用默认值,然后选择 “创建构建项目”。
-
打开 GitHub 控制台,验证是否已创建一个 webhook 并已启用 webhook 来传送工作流作业事件。
https://github.com/
user-name
/repository-name
/settings/hooks
第 2 步:更新您的 GitHub 操作工作流程 YAML
在此步骤中,您将更新 GitHub 操作工作流程 YAML 文件GitHub
更新你的 GitHub 操作工作流程 YAML
导航到 GitHub 操作工作流程 YAML 中的runs-on
GitHub
-
您可以指定项目名称和运行 ID,在这种情况下,构建将使用您现有的项目配置来计算计算、映像、映像版本和实例大小。需要项目名称才能将 Actions 作业的 Amazon相关设置链接到特定 CodeBuild 项目。 GitHub 通过在 YAML 中包含项目名称 CodeBuild ,可以调用具有正确项目设置的作业。通过提供运行 ID, CodeBuild 会将您的构建映射到特定的工作流程运行,并在取消工作流程运行时停止构建。有关更多信息,请参阅
github
上下文。 runs-on: codebuild-
<project-name>
-${{ github.run_id }}-${{ github.run_attempt }}注意
请确保您的<project-name>名称与您在上一步中创建的项目名称
相匹配。如果不匹配, CodeBuild 则不会处理 webhook, 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!"
-
您也可以在标签中覆盖图像和计算类型。这将覆盖您项目的环境设置。要替换 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!"
注意
如果 GitHub托管运行器提供的依赖项在 CodeBuild 环境中不可用,则可以在工作流程运行中使用 Acti GitHub ons 安装依赖项。例如,您可以使用setup-python
支持的计算映像
在标签中,您可以使用前三列中的值来覆盖您的 Amazon EC2 环境设置。 CodeBuild 提供了以下 Amazon EC2 计算映像:
图像 | 图像版本 | 实例大小 | 平台 | 映像标识符 | 定义 |
---|---|---|---|---|---|
|
|
|
Amazon Linux 2 | aws/codebuild/amazonlinux2-x86_64-standard:4.0 |
al2/standard/4.0 |
|
|
Amazon Linux 2023 | aws/codebuild/amazonlinux2-x86_64-standard:5.0 |
al2/standard/5.0 |
|
|
|
|
Amazon Linux 2 | aws/codebuild/amazonlinux2-aarch64-standard:2.0 |
al2/aarch64/standard/2.0 |
|
|
Amazon Linux 2023 | aws/codebuild/amazonlinux2-aarch64-standard:3.0 |
al2/aarch64/standard/3.0 |
|
|
|
|
Ubuntu 20.04 | aws/codebuild/standard:5.0 |
ubuntu/standard/5.0 |
|
|
Ubuntu 22.04 | aws/codebuild/standard:6.0 |
ubuntu/standard/6.0 |
|
|
|
Ubuntu 22.04 | aws/codebuild/standard:7.0 |
ubuntu/standard/7.0 |
|
|
|
|
Windows Server Core 2019 | aws/codebuild/windows-base:2019-1.0 |
不适用 |
|
|
Windows Server Core 2019 | aws/codebuild/windows-base:2019-2.0 |
不适用 | |
|
|
Windows Server Core 2019 | aws/codebuild/windows-base:2019-3.0 |
不适用 |
此外,您还可以使用以下值来覆盖您的 Lambda 环境设置。有关 CodeBuild Lambda 计算的更多信息,请参阅使用。在中使用 Amazon Lambda 计算 Amazon CodeBuild CodeBuild 支持以下 Lambda 计算映像:
环境类型 | 运行时版本 | 实例大小 |
---|---|---|
|
|
|
|
有关更多信息,请参阅 构建环境计算模式和类型 和 提供的 Docker 镜像 CodeBuild。
第 3 步:查看您的结果
每当 GitHub 操作工作流程运行时, CodeBuild 都会通过 webhook 接收工作流程作业事件。对于工作流程中的每个作业, CodeBuild 启动构建以运行临时的 Actions GitHub 运行器。运行器负责执行单个工作流程作业。作业完成后,运行器和相关的构建过程将立即终止。
要查看您的工作流程作业日志,请导航到中的 GitHub存储库,选择操作,选择所需的工作流程,然后选择要查看日志的特定作业。
当任务等待中的自托管运行器接管时,您可以在日志中 CodeBuild查看请求的标签。
![](images/hello-world-loading.png)
任务完成后,您将能够查看该任务的日志。
![](images/hello-world-log.png)
关于 CodeBuild托管的 GitHub 操作运行器
我应该何时在标签中包含图像和实例重写?
您可以在标签中包含图像和实例覆盖,以便为每个 Actions 工作流程任务指定不同的构建环境。 GitHub 无需创建多个 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 操作上下文的标签,则可能需要使用引号。
我可以 Amazon CloudFormation 用这个功能吗?
是的,您可以在 Amazon CloudFormation 模板中包含一个筛选器组,用于在项目 webhook 中指定 GitHub 操作工作流程作业事件过滤器。
Triggers: Webhook: true FilterGroups: - - Type: EVENT Pattern: WORKFLOW_JOB_QUEUED
有关更多信息,请参阅 筛选 GitHub webhook 事件 ()Amazon CloudFormation。
如果您在 Amazon CloudFormation 模板中设置项目凭证时需要帮助,请参阅Amazon CloudFormation 用户指南AWS::CodeBuild::SourceCredential中的了解更多信息。
哪些区域支持使用 CodeBuild托管的 GitHub 操作运行器?
CodeBuild所有 CodeBuild 区域都支持托管的 GitHub 操作运行器。有关 Amazon Web Services 区域 何处 CodeBuild 可用的更多信息,请参阅按地区划分的Amazon 服务
哪些平台支持使用 CodeBuild托管的 GitHub 操作运行器?
CodeBuildAmazon EC2 和Amazon Lambda计算均支持托管的 GitHub 操作运行器。你可以使用以下平台:亚马逊 Linux 2、亚马逊 Linux 2023、Ubuntu 和 Windows Server Core 2019。有关更多信息,请参阅 EC2 计算映像 和 Lambda 计算映像。
疑难解答:如果 webhook 无法正常工作,我该如何排除故障?
问题:您的 webhook 无法正常工作或您的工作流程暂停。 GitHub
可能的原因:您的 webhook 工作流程作业事件可能无法触发构建。查看响应日志以查看响应或错误消息。
推荐的解决方案:要调试此错误,请使用以下说明。
-
打开 GitHub 控制台,查看存储库的 webhook 设置。
https://github.com/
在此页面上,您将看到为您的存储库创建的 webhook。user-name
/repository-name
/settings/hooks -
选择 “编辑” 并确认已启用 webhook 来传送 Workflow 作业事件。
-
导航至 “最近配送” 选项卡,找到相应
workflow_job.queued
的事件,然后展开该事件。 -
查看 P ay load 中的标签字段,并确保其符合预期。
-
最后,查看 “响应” 选项卡,因为其中包含返回的响应或错误消息 CodeBuild。