在中设置自托管的 GitHub 操作运行器 AWS CodeBuild - AWS CodeBuild

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在中设置自托管的 GitHub 操作运行器 AWS CodeBuild

您可以将项目配置为在 CodeBuild 容器中设置自托管的 Action GitHub s 运行器来处理您的 Actions 工作流程 GitHub 作业。这可以通过使用您的 CodeBuild 项目设置 webhook,然后更新 GitHub 操作工作流程 YAML 以使用托管在计算机上的自托管运行器来完成。 CodeBuild 有关更多信息,请参阅关于自托管运行器

配置 CodeBuild 项目以运行 GitHub 操作作业的高级步骤如下:

  1. 如果您还没有这样做,请创建个人访问令牌或连接 OAuth 应用程序以将您的项目与之关联。 GitHub

  2. 导航到 CodeBuild 控制台并使用 webhook 创建 CodeBuild 项目,然后设置 webhook 过滤器。

  3. 更新您的 GitHub 操作工作流程 YAML GitHub 以配置您的构建环境。

有关更详细的过程,请参阅教程:配置 CodeBuild 自托管 GitHub 操作运行器

此功能允许您的 A GitHub ctions 工作流程任务与之进行原生集成 AWS,从而通过 IAM AWS CloudTrail、 AWS Secrets Manager 集成和 Amazon VPC 等功能提供安全性和便利性。您可以访问最新的实例类型,包括基于 ARM 的实例。

教程:配置 CodeBuild 自托管 GitHub 操作运行器

本教程向您展示如何配置 CodeBuild 项目以运行 Action GitHub s 作业。

先决条件

要完成本教程,您首先必须:

  • 连接 OAuth 应用程序或创建个人访问令牌。如果您想连接 OAuth 应用程序,则必须使用 CodeBuild 控制台进行连接。如果您想创建个人访问令牌,则可以使用 CodeBuild 控制台或使用 ImportSourceCredentials API。有关更多说明,请参阅GitHub 和 GitHub 企业服务器访问令牌

  • Connect CodeBuild 到您的 GitHub 账户。为此,您可以执行以下操作之一:

    注意

    只有当你的账户还没有连接时, GitHub 才需要这样做。

第 1 步:使用 webhook 创建 CodeBuild 项目

在此步骤中,您将创建一个带有 webhook 的 CodeBuild 项目,并在 GitHub 控制台中对其进行审核。

使用 webhook 创建 CodeBuild 项目
  1. 打开 AWS CodeBuild 控制台,网址为 https://console.aws.amazon.com/codesuite/codebuild/home

  2. 创建构建项目。有关信息,请参阅创建构建项目(控制台)运行构建(控制台)

    • 中:

      • 对于源提供商,请选择GitHub

      • 在 “存储库” 中,选择 “我的 GitHub 账户中的存储库”。

      • 对于存储库 URL,输入 https://github.com/user-name/repository-name

    • 主要来源 webhook 事件中:

      • 对于 Webhook(可选),选择 “每次将代码更改推送到此存储库时重建”。

      • 对于事件类型,选择 WORKF LOW_JOB_QUEUED。启用此功能后,构建将仅由 Actions GitHub 工作流程作业事件触发。

        注意

        CodeBuild 仅当 Webhook 具有包含 WORKFLOW_JOB _QUEUED 事件过滤器的筛选器组时,才会处理 GitHub 操作工作流作业事件。

    • 环境中:

    • Buildspec (构建规范) 中:

      • 请注意,你的 Buildspec 将被忽略。相反, CodeBuild 将覆盖它以使用设置自托管运行器的命令。该项目的主要职责是在中设置一个自托管的运行器 CodeBuild 来运行 Actions 工作流程 GitHub 作业。

  3. 继续使用默认值,然后选择 “创建构建项目”。

  4. 打开 GitHub 控制台,验证是否已创建一个 webhook 并已启用 webhook 来传送工作流作业事件。https://github.com/user-name/repository-name/settings/hooks

第 2 步:更新您的 GitHub 操作工作流程 YAML

在此步骤中,您将更新 GitHub 操作工作流程 YAML 文件GitHub以配置您的构建环境并在中使用 GitHub Actions 自托管运行器。 CodeBuild有关更多信息,请参阅对自托管运行器使用标签

更新你的 GitHub 操作工作流程 YAML

导航到 GitHub 操作工作流程 YAML 中的runs-on设置GitHub并进行更新,以配置您的构建环境。为此,您可以执行以下操作之一:

  • 您可以指定项目名称和运行 ID,在这种情况下,构建将使用您现有的项目配置来计算计算、映像、映像版本和实例大小。需要项目名称才能将 Actions 作业的 AWS相关设置链接到特定 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操作为您的构建环境安装 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/standard/4.0

linux

5.0

Amazon Linux 2023 aws/codebuild/amazonlinux2-x86_64-standard:5.0 al2/standard/5.0

arm

2.0

small

large

Amazon Linux 2 aws/codebuild/amazonlinux2-aarch64-standard:2.0 al2/aarch64/standard/2.0

arm

3.0

Amazon Linux 2023 aws/codebuild/amazonlinux2-aarch64-standard:3.0 al2/aarch64/standard/3.0

ubuntu

5.0

small

medium

large

xlarge

2xlarge

gpu_small

gpu_large

Ubuntu 20.04 aws/codebuild/standard:5.0 ubuntu/standard/5.0

ubuntu

6.0

Ubuntu 22.04 aws/codebuild/standard:6.0 ubuntu/standard/6.0

ubuntu

7.0

Ubuntu 22.04 aws/codebuild/standard:7.0 ubuntu/standard/7.0

windows

1.0

medium

large

Windows Server Core 2019 aws/codebuild/windows-base:2019-1.0 不适用

windows

2.0

Windows Server Core 2019 aws/codebuild/windows-base:2019-2.0 不适用

windows

3.0

Windows Server Core 2019 aws/codebuild/windows-base:2019-3.0 不适用

此外,您还可以使用以下值来覆盖您的 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

有关更多信息,请参阅 构建环境计算模式和类型提供的 Docker 镜像 CodeBuild

第 3 步:查看您的结果

每当 GitHub 操作工作流程运行时, CodeBuild 都会通过 webhook 接收工作流程作业事件。对于工作流程中的每个作业, CodeBuild 启动构建以运行临时的 Actions GitHub 运行器。运行器负责执行单个工作流程作业。作业完成后,运行器和相关的构建过程将立即终止。

要查看您的工作流程作业日志,请导航到中的 GitHub存储库,选择操作,选择所需的工作流程,然后选择要查看日志的特定作业

当任务等待中的自托管运行器接管时,您可以在日志中 CodeBuild查看请求的标签。

任务完成后,您将能够查看该任务的日志。

关于 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 操作上下文的标签,则可能需要使用引号。

我可以 AWS CloudFormation 用这个功能吗?

是的,您可以在 AWS CloudFormation 模板中包含一个筛选器组,用于在项目 webhook 中指定 GitHub 操作工作流程作业事件过滤器。

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

有关更多信息,请参阅 筛选 GitHub webhook 事件 ()AWS CloudFormation

如果您在 AWS CloudFormation 模板中设置项目凭证时需要帮助,请参阅AWS CloudFormation 用户指南AWS::CodeBuild::SourceCredential中的了解更多信息。

哪些区域支持使用 CodeBuild托管的 GitHub 操作运行器?

CodeBuild所有 CodeBuild 区域都支持托管的 GitHub 操作运行器。有关 AWS 区域 何处 CodeBuild 可用的更多信息,请参阅按地区划分的AWS 服务

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

CodeBuildAmazon EC2 和AWS Lambda计算均支持托管的 GitHub 操作运行器。你可以使用以下平台:亚马逊 Linux 2、亚马逊 Linux 2023、Ubuntu 和 Windows Server Core 2019。有关更多信息,请参阅 EC2 计算映像Lambda 计算映像

疑难解答:如果 webhook 无法正常工作,我该如何排除故障?

问题:您的 webhook 无法正常工作或您的工作流程暂停。 GitHub

可能的原因:您的 webhook 工作流程作业事件可能无法触发构建。查看响应日志以查看响应或错误消息。

推荐的解决方案:要调试此错误,请使用以下说明。

  1. 打开 GitHub 控制台,查看存储库的 webhook 设置。https://github.com/user-name/repository-name/settings/hooks在此页面上,您将看到为您的存储库创建的 webhook。

  2. 选择 “编辑” 并确认已启用 webhook 来传送 Workflow 作业事件。

  3. 导航至 “最近配送” 选项卡,找到相应workflow_job.queued的事件,然后展开该事件。

  4. 查看 P ay load 中的标签字段,并确保其符合预期。

  5. 最后,查看 “响应” 选项卡,因为其中包含返回的响应或错误消息 CodeBuild。