是否有可能在 YAML 中实现这样的重构
Is it possible to achieve such a refactor in YAML
我正在开发一个大厅管道,我需要在我的 YAML 中复制大量代码,所以我正在尝试重构它,以便它易于维护,而且我最终不会得到数千个重复 lines/blocks.
我已经实现了以下 yaml 文件,这似乎是可行的方法,但它并不能满足我的所有需求。
add-rotm-points: &add-rotm-points
task: add-rotm-points
config:
platform: linux
image_resource:
type: docker-image
source:
repository: ((registre))/polygone/concourse/cf-cli-python3
tag: 0.0.1
insecure_registries: [ ((registre)) ]
run:
path: source-pipeline/commun/rotm/trigger-rotm.sh
args: [ "source-pipeline", "source-code-x" ]
inputs:
- name: source-pipeline
- name: source-code-x
jobs:
- name: test-a
plan:
- in_parallel:
- get: source-pipeline
- get: source-code-a
trigger: true
- <<: *add-rotm-points
- name: test-b
plan:
- in_parallel:
- get: source-pipeline
- get: source-code-b
trigger: true
- <<: *add-rotm-points
我的问题是我的两个作业都使用顶部定义的通用任务。但是在一般任务中,我需要将 source-code-x 更改为我在工作中使用的 -a 或 -b 版本。
如果不在每项工作中重复我的锚,我找不到实现这一目标的方法,这似乎适得其反。但我可能没有完全理解 yaml anchors/merges.
您需要做的就是将输入映射到各个任务,如下所示:
add-rotm-points: &add-rotm-points
task: add-rotm-points
config:
platform: linux
image_resource:
type: docker-image
source:
repository: ((registre))/polygone/concourse/cf-cli-python3
tag: 0.0.1
insecure_registries: [ ((registre)) ]
run:
path: source-pipeline/commun/rotm/trigger-rotm.sh
args: [ "source-pipeline", "source-code-x" ]
inputs:
- name: source-pipeline
- name: source-code-x
jobs:
- name: test-a
plan:
- in_parallel:
- get: source-pipeline
- get: source-code-a
trigger: true
- <<: *add-rotm-points
input_mapping:
source-code-x: source-code-a
- name: test-b
plan:
- in_parallel:
- get: source-pipeline
- get: source-code-b
trigger: true
- <<: *add-rotm-points
input_mapping:
source-code-x: source-code-b
我正在开发一个大厅管道,我需要在我的 YAML 中复制大量代码,所以我正在尝试重构它,以便它易于维护,而且我最终不会得到数千个重复 lines/blocks.
我已经实现了以下 yaml 文件,这似乎是可行的方法,但它并不能满足我的所有需求。
add-rotm-points: &add-rotm-points
task: add-rotm-points
config:
platform: linux
image_resource:
type: docker-image
source:
repository: ((registre))/polygone/concourse/cf-cli-python3
tag: 0.0.1
insecure_registries: [ ((registre)) ]
run:
path: source-pipeline/commun/rotm/trigger-rotm.sh
args: [ "source-pipeline", "source-code-x" ]
inputs:
- name: source-pipeline
- name: source-code-x
jobs:
- name: test-a
plan:
- in_parallel:
- get: source-pipeline
- get: source-code-a
trigger: true
- <<: *add-rotm-points
- name: test-b
plan:
- in_parallel:
- get: source-pipeline
- get: source-code-b
trigger: true
- <<: *add-rotm-points
我的问题是我的两个作业都使用顶部定义的通用任务。但是在一般任务中,我需要将 source-code-x 更改为我在工作中使用的 -a 或 -b 版本。
如果不在每项工作中重复我的锚,我找不到实现这一目标的方法,这似乎适得其反。但我可能没有完全理解 yaml anchors/merges.
您需要做的就是将输入映射到各个任务,如下所示:
add-rotm-points: &add-rotm-points
task: add-rotm-points
config:
platform: linux
image_resource:
type: docker-image
source:
repository: ((registre))/polygone/concourse/cf-cli-python3
tag: 0.0.1
insecure_registries: [ ((registre)) ]
run:
path: source-pipeline/commun/rotm/trigger-rotm.sh
args: [ "source-pipeline", "source-code-x" ]
inputs:
- name: source-pipeline
- name: source-code-x
jobs:
- name: test-a
plan:
- in_parallel:
- get: source-pipeline
- get: source-code-a
trigger: true
- <<: *add-rotm-points
input_mapping:
source-code-x: source-code-a
- name: test-b
plan:
- in_parallel:
- get: source-pipeline
- get: source-code-b
trigger: true
- <<: *add-rotm-points
input_mapping:
source-code-x: source-code-b