我使用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
答案 0 :(得分:2)
我使用多个工作流程解决了这个问题。
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
答案 1 :(得分:2)
有一个更好的选择,那就是不创建多个工作流,这可能会导致复杂性,特别是在您的工作流运行多个作业的情况下,其中一些仅针对特定分支触发,而其他则不会。
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