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