【问题标题】:CircleCI Dynamic Config / Config breakdownCircleCI 动态配置/配置分解
【发布时间】:2022-08-11 23:52:42
【问题描述】:

有谁知道是否可以将 circleci 的配置文件分解为较小的文件,其中每个作业、命令、工作流等都在它自己的特定文件/子目录中,如果是,您将如何处理?

我一直在环顾四周,甚至尝试自己构建一个 python 脚本来从所有这些 yaml 文件构建配置,但是由于这些不同文件中不存在引用变量名而没有运气,因此 pyyaml 库不会加载它们.

我试图完成的是拥有这个文件夹结构

configs/
  dependencies.yml
  commands/
    command_1.yml
    command_2.yml
  jobs/
    job_1.yml
    job_2.yml
  workflows/
    workflow_1.yml
    workflow_2.yml

其中dependencies.yml 包含每个工作流在每个步骤 > 作业 > 命令中使用的内容方面所需内容的细分。这个文件是手写的。

    标签: python-3.x dynamic circleci


    【解决方案1】:

    您可以执行以下操作:


    要拆分的示例原始 config.yml:

    version: 2
    orbs:
      sonarcloud: sonarsource/sonarcloud@1.0.3
    
    jobs
      my-job:
        docker:
            - image: cimg/latest
        steps:
            - checkout
            - run: make
    
    workflows:
      build:
        jobs:
          -my-job
      
    

    在名为 config 的新文件夹中创建以下布局(运行 tree):

    .
    ├── config.yml
    └── config
        ├── @orbs.yml
        ├── jobs
        │   └──my-job.yml
        └── @workflows.yml
    

    @orbs.yml 包含

    version: 2
    orbs:
      sonarcloud: sonarsource/sonarcloud@1.0.3
    

    @workflows.yml 包含

    workflows:
      build:
        jobs:
          -my-job
    

    my-job.yml 包含

    docker:
      - image: cimg/latest
    steps:
      - checkout
      - run: make
    

    主要的 config.yml 应该如下所示:

    version: 2.1
    setup: true
    orbs:
      continuation: circleci/continuation@0.3.1
    
    jobs:
      generate-and-run-circleci:
        docker:
          - image: 'circleci/circleci-cli:latest'
        steps:
          - circleci-cli/install
          - checkout
          - run:
              command : |
                cd .circleci
                circleci config pack config > generated.yml
          - continuation/continue:
              configuration_path: .circleci/generated.yml
    
    workflows:
      build:
        jobs:
          - generate-and-run-circleci
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-17
      • 2019-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-22
      • 1970-01-01
      • 2017-07-29
      相关资源
      最近更新 更多