【问题标题】: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