我的应用程序有一个流程,我有一个实例名为暂存,另一个实例是 QA,然后有一个生产实例。我们从暂存创建分支,一旦验证,它们就会合并到暂存中,然后合并到 QA,然后在完全验证后合并到主节点中。我是管道新手,我想实现以程
- 如果推送了某个分支,则部署应仅在暂存 EC2 实例上进行,并且应切换该分支
- 如果某个分支合并到暂存中,则部署应仅在暂存上进行
- 如果暂存随后合并到 QA 中,则部署应仅在 QA 上进行
- 如果某些内容合并到主节点中,则部署应仅在生产环境中进行
我正在使用 Bitbucket 和 AWS CodeDeploy 服务,存储库托管在 Bitbucket 上目前,我可以在 1 个实例上部署主分支。我怎样才能做到这一点?我的appspec.yml如下
image: php:7.2.13
pipelines:
branches:
master:
- step:
caches:
- composer
script:
- sh bitbucket-pipelines-common.sh
- vendor/bin/phpunit
- sh bitbucket-pipelines-codedeploy.sh
develop:
- step:
caches:
- composer
script:
- sh bitbucket-pipelines-common.sh
- vendor/bin/phpunit
custom:
just-test-without-cache:
- step:
script:
- sh bitbucket-pipelines-common.sh
- vendor/bin/phpunit
如果代码部署脚本正在从环境中提取 AWS 变量,您可以创建一个 bash 脚本以在该步骤之前运行,该脚本根据分支设置环境变量,即
#!/bin/bash
if [ "$BITBUCKET_BRANCH" = "master" ]
then
export APPLICATION_NAME="..."
export DEPLOYMENT_CONFIG="..."
export DEPLOYMENT_GROUP_NAME="Development"
export S3_BUCKET=""..."
elif [ "$BITBUCKET_BRANCH" = "staging" ]
then
export APPLICATION_NAME="..."
export DEPLOYMENT_CONFIG="..."
export DEPLOYMENT_GROUP_NAME="Staging"
export S3_BUCKET=""..."
elif [ "$BITBUCKET_BRANCH" = "production" ]
then
export APPLICATION_NAME="..."
export DEPLOYMENT_CONFIG="..."
export DEPLOYMENT_GROUP_NAME="Production"
export S3_BUCKET=""..."
fi
我相信
您可以使用部署来做到这一点
所以你会有这样的东西:
image: php:7.2.13
pipelines:
branches:
master:
- step:
deployment: production
caches:
- composer
script:
- sh bitbucket-pipelines-common.sh
- vendor/bin/phpunit
- sh bitbucket-pipelines-codedeploy.sh
develop:
- step:
deployment: development
caches:
- composer
script:
- sh bitbucket-pipelines-common.sh
- vendor/bin/phpunit