将 AWS CodePipeline 主要部署与开发部署分开

问题描述 投票:0回答:1

我为我的项目设置了一个 AWS CodePipeline,它有两个分支:

main
dev
。每个分支都有不同的用途,
main
代表生产环境,
dev
代表开发环境。我使用 AWS CodeDeploy 作为部署提供商。

在我的管道中,我希望每个分支都有不同的部署配置,以避免在合并来自 dev 分支的更改时将相同的配置从 appspec 文件加载到主服务器上。

有没有办法将 AWS CodePipeline 配置为在部署过程中使用不同的 appspec 文件,例如

appspec.dev.yml
用于开发分支,
appspec.prod.yml
用于主分支?我想确保开发环境中所做的更改不会无意中影响生产环境。

git continuous-deployment aws-codepipeline aws-code-deploy
1个回答
0
投票

您应该能够通过在构建阶段使用重命名操作来完成此操作。假设您使用 AWS CodeBuild 作为管道的一部分,您可以通过从 CodePipeline 传递的环境变量来执行此操作,如下所示。

然后,在CodeBuild的buildspec.yml中,您可以读取环境变量并应用重命名操作。

version: 0.2

phases:
  pre_build:
    commands:
      - echo "Pre-Build phase commands here..."
      - echo "Current branch is -> $BRANCH"
      - |
        if [ "$BRANCH" == "dev" ]; then
          mv appspec.dev.yml appspec.yml
        else
          mv appspec.prod.yml appspec.yml
        fi

  build:
    commands:
      - echo "Build phase commands here..."

artifacts:
  files: appspec.yml

据我所知,如果不使用环境变量,就没有简单的方法可以做到这一点,因为无法使用例如

git
命令从 CodeBuild 中轻松读取分支名称。原因是 CodeBuild 使用分离的工作树。但上面的解决方案应该足够简单明了。

© www.soinside.com 2019 - 2024. All rights reserved.