根据条件(特别是 git 标签)提前终止构建规范

Rob*_*kal 5 continuous-integration continuous-deployment aws-codebuild

我想仅当我的存储库标记有某些特定的发布标签时才运行我的构建管道。我可以从 CODEBUILD_WEBHOOK_TRIGGER 环境变量获取标签值,并且可以使用一些 bash kung fu 在 BUILD 阶段有条件地执行代码:

build:
  commands:
    - echo ${CODEBUILD_WEBHOOK_TRIGGER##*/}
    - |
     if expr "${CODEBUILD_WEBHOOK_TRIGGER}" : '^tag/30' >/dev/null; then 
        git add *
        git commit -am "System commit"
        git push
        git tag ${CODEBUILD_WEBHOOK_TRIGGER##*/}
        git push origin ${CODEBUILD_WEBHOOK_TRIGGER##*/}
        echo Pushed the repo
     fi
Run Code Online (Sandbox Code Playgroud)

工作正常,我只在标签看起来像某种方式时推送。

抛开上述的脆弱性不谈,我真正想做的是在安装阶段终止整个构建过程,如果我的 CODEBUILD_WEBHOOK_TRIGGER 变量没有特定的前缀。我想跳过所有后续步骤并退出管道而不会出现错误。

有没有办法做到这一点?尽量减少我使用的资源会很好。

小智 6

使用提供的 CodeBuild 环境变量 ${CODEBUILD_BUILD_ID} 使用 aws-cli 命令停止构建对我有用:

- aws codebuild stop-build --id ${CODEBUILD_BUILD_ID}
Run Code Online (Sandbox Code Playgroud)

例如:

- |
    if expr "${CODEBUILD_WEBHOOK_TRIGGER}" : '^tag/30' >/dev/null; then 
        . . .
    else
        aws codebuild stop-build --id ${CODEBUILD_BUILD_ID}
    fi
Run Code Online (Sandbox Code Playgroud)