Трубопроводы Bitbucket - разные ветви в разных экземплярах - PullRequest
0 голосов
/ 04 января 2019

У меня есть поток для моего приложения, один экземпляр которого называется Staging, а другой - QA, а затем есть экземпляр Production.Мы создаем ветки из Staging и, как только проверяем, они затем объединяются в Staging, затем в QA и затем в master, после полной проверки.Я новичок в конвейерах и хочу получить следующий поток

  • Если какая-то ветвь нажата, развертывание должно происходить только на экземпляре Staging EC2, и эта ветвь должна быть переключена
  • Если какая-то ветвь объединена с промежуточной, развертывание должно осуществляться только на промежуточной стадии
  • . Если промежуточная стадия затем объединяется с QA, развертывание должно осуществляться только на стадии обеспечения качества
  • . Если какая-либо вещь объединяется с главной,развертывание должно осуществляться только на Production

Я использую 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

1 Ответ

0 голосов
/ 21 января 2019

Если сценарий развертывания кода извлекает переменные 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
...