3

我正在使用 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
4

3 回答 3

5

有一个更好的选择不要创建多个工作流,这可能会导致复杂性,特别是在您的工作流运行多个作业的情况下,有些仅针对特定分支触发,有些则不会。

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
于 2018-12-14T14:04:37.100 回答
3

我使用多个工作流程解决了这个问题,如下所示。

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
于 2018-04-20T01:52:34.183 回答
1

您现在可以在工作流中使用多个上下文

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
于 2021-11-16T03:39:43.653 回答