circleci: как запустить задание с несколькими контекстами для каждой среды

Я использую circleCI для развертывания производственных или промежуточных сред. Я хочу использовать одну и ту же работу с контекстами для каждой ветви, соответствующей каждой среде, потому что я не люблю писать один и тот же код для каждой среды.

Я хочу написать как ниже.

version: 2
jobs:
  deploy:
    docker:
      - image: google/cloud-sdk
    steps:
      - checkout
      - run: <deploying commands>

workflows:
  version: 2
  deploy:
    jobs:
      - deploy:
          filters:
            branches:
              only:
                - master
          context: production

      - deploy:
          filters:
            branches:
              only:
                - develop
          context: staging

3 ответа

Есть лучший вариант - не создавать несколько рабочих процессов, что может вызвать сложность, особенно если ваш рабочий процесс запускает несколько заданий, некоторые запускаются только для определенных веток, другие нет.

YAML - это язык сериализации данных, поэтому вы все еще можете использовать его возможности для упрощения объявления.

Согласно вашему примеру, у нас может быть что-то вроде этого:

version: 2
jobs:
  deploy: &deploy
    docker:
      - image: google/cloud-sdk
    steps:
      - checkout
      - run: <deploying commands>
  deploy-production:
    <<: *deploy
  deploy-staging:
    <<: *deploy

workflows:
  version: 2
  deploy-production:
    jobs:
      - deploy-production:
          filters:
            branches:
              only:
                - master
          context: production
      - deploy-staging:
          filters:
            branches:
              only:
                - develop
          context: staging

Я решил это, как показано ниже, используя несколько рабочих процессов.

version: 2
jobs:
  deploy:
    docker:
      - image: google/cloud-sdk
    steps:
      - checkout
      - run: <deploying commands>

workflows:
  version: 2
  deploy-production:
    jobs:
      - deploy:
          filters:
            branches:
              only:
                - master
          context: production

  deploy-staging:
    jobs:
      - deploy:
          filters:
            branches:
              only:
                - develop
          context: staging

Теперь вы можете использовать несколько контекстов в рабочем процессе.

https://circleci.canny.io/cloud-feature-requests/p/multiple-contexts-in-a-workflow

https://circleci.com/docs/2.0/contexts/#combining-contexts

      context:
  - context-a
  - context-b
Другие вопросы по тегам