如何让GitHub Action触发CodeBuild后无需等待其完成?
实现GitHub Actions触发AWS CodeBuild后无需等待任务完成
问题背景
已在项目中配置GitHub Actions触发AWS CodeBuild任务,现有配置如下:
- name: Run CodeBuild uses: aws-actions/aws-codebuild-run-build@v1 with: project-name: CodeBuildProjectName buildspec-override: path/to/buildspec.yaml or inline buildspec definition compute-type-override: compute-type environment-type-override: environment-type image-override: ecr-image-uri env-vars-for-codebuild: | custom, requester, event-name env: custom: my environment variable requester: ${{ github.actor }} event-name: ${{ github.event_name }}
需求:GitHub Action触发CodeBuild任务后,工作流无需等待该任务完成即可结束。
可行实现方法
原aws-actions/aws-codebuild-run-build@v1 Action默认是同步执行的,会等待CodeBuild任务完成后才继续或终止GitHub工作流。要实现异步触发(不等待任务完成),可以改用AWS CLI的aws codebuild start-build命令,该命令仅负责触发构建任务,提交后立即返回,不会等待任务结束。
修改后的GitHub Actions配置示例
# 先配置AWS凭证(若未在环境中预先配置) - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v4 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: us-east-1 # 替换为你的CodeBuild项目所在区域 # 异步触发CodeBuild任务 - name: Trigger CodeBuild Asynchronously run: | aws codebuild start-build \ --project-name CodeBuildProjectName \ --buildspec-override path/to/buildspec.yaml \ # 若需覆盖buildspec,否则可省略 --environment-variables-override \ "[{\"name\":\"custom\",\"value\":\"my environment variable\"},{\"name\":\"requester\",\"value\":\"${{ github.actor }}\"},{\"name\":\"event-name\",\"value\":\"${{ github.event_name }}\"}]" \ --compute-type-override compute-type \ # 若需覆盖计算类型,否则可省略 --environment-type-override environment-type \ # 若需覆盖环境类型,否则可省略 --image-override ecr-image-uri # 若需覆盖镜像,否则可省略
关键说明
aws codebuild start-build的参数需根据实际需求调整,不需要的覆盖参数可直接删除。- 环境变量需按照AWS CLI要求的JSON数组格式传递,注意转义引号。
- GitHub托管的runner默认已预装AWS CLI,若使用自托管runner需自行安装配置。
内容的提问来源于stack exchange,提问作者Muthu
相关产品推荐
相关产品推荐

