教程:配置 CodeBuild托管的 GitHub操作运行器 - Amazon CodeBuild
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

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

本教程向您展示如何配置 CodeBuild 项目以运行 Action GitHub s 作业。有关将 GitHub 操作与配合使用的更多信息, CodeBuild 请参阅在中使用自托管的 GitHub 操作运行器 Amazon CodeBuild

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

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

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

    注意

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

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

在此步骤中,您将创建一个带有 webhook 的 CodeBuild 项目,并在 GitHub 控制台中对其进行审核。您也可以选择 E GitHub nterprise 作为您的源提供商。要了解有关在 GitHub 企业版中创建 webhook 的更多信息,请参阅GitHub 手动 webhook

使用 webhook 创建 CodeBuild 项目
  1. https://console.aws.amazon.com/codesuite/codebuild /home 中打开 Amazon CodeBuild 控制台。

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

    • 中:

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

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

      • 在 “存储库” 中 URL,输入https://github.com/user-name/repository-name

      注意

      默认情况下,您的项目将仅接收单个存储库WORKFLOW_JOB_QUEUED的事件。如果您想接收组织或企业内所有存储库的事件,请参阅GitHub 全球和组织 webhook

    • 主要来源 webhook 事件中:

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

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

        注意

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

        将配置构建为仅由 Action GitHub s 工作流程作业事件触发。
    • 环境中:

    • Buildspec (构建规范) 中:

      • 请注意,除非在标签中添加-with-buildspec后缀,否则您的 buildspec 将被忽略。相反, CodeBuild 将覆盖它以使用设置自托管运行器的命令。

  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 操作工作流程中的runs-on设置GitHub并进行更新YAML,以配置您的构建环境。为此,您可以执行以下操作之一:

  • 您可以指定项目名称和运行 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!"
  • 您也可以在标签中覆盖图像和计算类型。计算 CodeBuild托管的 GitHub 操作运行器支持的图像有关可用图像的列表,请参阅。标签中的计算类型和图像将覆盖项目的环境设置。要替换 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!"
  • 您可以在标签中覆盖用于构建的队列。这将覆盖在您的项目中配置的队列设置以使用指定的队列。有关更多信息,请参阅 在预留容量队列上运行构建。要替换 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>

    以下是 GitHub 操作工作流程的示例YAML:

    name: Hello World on: [push] jobs: Hello-World-Job: runs-on: codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }}-arm-3.0-fleet-myFleet steps: - run: echo "Hello World!"
  • 或者,您也可以在不覆盖图像的情况下提供实例大小替换。对于 Amazon EC2 版本,您可以同时排除图像和图像版本。对于 Lambda 构建,您可以同时排除环境类型和运行时版本。

注意

如果 GitHub托管运行器提供的依赖项在 CodeBuild环境中不可用,则可以在工作流程运行中使用 Acti GitHub ons 安装依赖项。例如,您可以使用setup-python操作为您的构建环境安装 Python。

运行 buildspec 命令INSTALL,PRE即BUILD、_ 和 POST _ 阶段 BUILD

默认情况下,在运行自托管 GitHub 的 Actions 版本时 CodeBuild 会忽略所有 buildspec 命令。要在构建期间运行 buildspec 命令,-with-buildspec可以将其作为后缀添加到标签中:

runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}-<image>-<image-version>-<instance-size>-with-buildspec

通过使用此命令, CodeBuild 将在容器的主源文件夹actions-runner中创建一个名为的文件夹。当 GitHub 操作运行器在该BUILD阶段启动时,运行器将在actions-runner目录中运行。

在自托管的 Actions 版本中使用 buildspec 覆盖有几个限制 GitHub :

  • CodeBuild 在此BUILD阶段不会运行 buildspec 命令,因为自托管运行器将在该BUILD阶段运行。

  • CodeBuild 在此DOWNLOAD_SOURCE阶段不会下载任何主要或次要来源。如果您配置了 buildspec 文件,则只会从项目的主源下载该文件。

  • 如果构建命令在PRE_BUILDINSTALL阶段失败, CodeBuild 则无法启动自托管运行器,并且需要手动取消 GitHub 操作工作流程作业。

  • CodeBuild 在该阶段获取跑步者令牌,该DOWNLOAD_SOURCE阶段的到期时间为一小时。如果您的PRE_BUILDINSTALL阶段超过一小时,则运行器令牌可能会在 GitHub 自托管运行器启动之前过期。

第 3 步:查看您的结果

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

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

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

正在加载作业日志。

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

任务日志。