本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
CodeBuild-hosted GitHub 操作运行器支持的标签覆盖
在你的 A GitHub ctions 工作流程 YAML 中,你可以提供各种标签覆盖来修改你的自托管运行器构建。任何未被识别的版本都 CodeBuild 将被忽略,但不会使您的 webhook 请求失败。以下工作流程 YAML 定义了两个任务:对图像、实例大小、队列和 buildspec job1 使用替代,并且仅job2使用图像覆盖。为每个作业指定一个唯一的标签(job1和job2),以便将每个作业 GitHub 路由到为其创建的运行器:
name: Hello World on: [push] jobs: job1: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} - image:arm-3.0 - instance-size:small - fleet:myFleet - buildspec-override:true - job1 steps: - run: echo "Hello from Job 1!" job2: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} - image:linux-5.0 - job2 steps: - run: echo "Hello from Job 2!"
您也可以使用矩阵策略在多个配置中运行单个作业。单个矩阵作业的扩展总是有相同数量的标签,因此运行器匹配问题不会影响它们。但是,如果工作流程运行包含多个矩阵作业,请为每个矩阵作业指定其唯一的自定义标签(例如matrix-job-1和matrix-job-2),这样作业就 GitHub 不会与为其他矩阵作业创建的运行器相匹配:
name: Hello World on: [push] jobs: Hello-World-Job: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} - image:${{ matrix.os }} - instance-size:${{ matrix.size }} - fleet:myFleet - buildspec-override:true - matrix-job-1 strategy: matrix: include: - os: arm-3.0 size: small - os: linux-5.0 size: large steps: - run: echo "Hello World!"
注意
如果您的工作流程任务处于暂停 GitHub状态,请参阅排查 webhook 的问题和使用自定义标签路由作业
codebuild-(必需)<project-name>-${{github.run_id}}-${{github.run_attempt}}
示例:
codebuild-fake-project-${{ github.run_id }}-${{ github.run_attempt }}-
所有 GitHub 操作工作流程 YAML 均为必填项。
<project name>应等于为其配置自托管运行器 webhook 的项目的名称。
image:<environment-type>-<image-identifier>
示例:
image:arm-3.0-
覆盖在通过精选映像启动自托管运行程序构建时使用的映像和环境类型。要了解支持的值,请参阅计算 CodeBuild-hosted GitHub 动作运行器支持的图像。
要覆盖与自定义映像结合使用的映像和环境类型,请使用
image:custom-<environment-type>-<custom-image-identifier>示例:
image:custom-arm-public.ecr.aws/codebuild/amazonlinux-aarch64-standard:3.0注意
如果自定义映像位于私有注册表中,请参阅为自托管运行程序配置私有注册表凭证。
instance-size:<instance-size>
示例:
instance-size:medium-
覆盖在启动自托管运行器构建时使用的实例类型。要了解支持的值,请参阅计算 CodeBuild-hosted GitHub 动作运行器支持的图像。
fleet:<fleet-name>
示例:
fleet:myFleet-
覆盖在您的项目中配置的实例集设置,以便使用指定的实例集。有关更多信息,请参阅 在预留容量实例集上运行构建。
buildspec-override:<boolean>
示例:
buildspec-override:true-
如果设置为
true,则允许构建以在INSTALL、PRE_BUILD和POST_BUILD阶段运行 buildspec 命令。
(当工作流程运行有多个作业时,建议使用)<unique-label>
示例:
job1-
您定义的自定义标签,并且在同一工作流程中运行的其他作业都不使用该标签。为每个作业分配一个唯一的标签可确保仅将每个作业 GitHub 路由到为其创建的运行器。如果没有它,当同一工作流程运行中的作业具有不同数量的标签覆盖时,为标签较多的作业创建的运行器可以选择标签较少的作业,从而使第二个作业没有运行器。有关更多信息,请参阅 排查 webhook 的问题。
单标签覆盖
CodeBuild 允许您使用以下方法在单个标签中提供多个覆盖:
注意
由于所有重写都合并到一个标签中,因此每个作业的运行器只注册一个标签。这意味着,即使每个作业都没有唯一的标签,这种格式也排查 webhook 的问题不会出现中所述的多任务运行器匹配问题。如果您更喜欢这种行为,并且您的作业只需要它支持的替换,请使用单标签格式。当您需要它不支持的替代项时,请勿使用它。例如,只能使用image:custom-标签格式指定自定义映像(包括私有注册表中的图像)。对于这些替代,请使用本主题前面所述的分隔标签格式。<environment-type>-<custom-image-identifier>
-
要替换 Amazon EC2/Lambda 计算版本的环境设置,请使用以下语法:
runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}-<environment-type>-<image-identifier>-<instance-size> -
要覆盖 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> -
要在构建期间运行 buildspec 命令,可以将
-with-buildspec作为后缀添加到标签中:runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}-<image>-<image-version>-<instance-size>-with-buildspec -
或者,您也可以提供实例大小覆盖,而不覆盖映像。对于 Amazon EC2 构建,您可以排除环境类型和映像标识符。对于 Lambda 构建,您可以排除映像标识符。