在 job.<spec>.script 中使用 anchors/references 的方法
Way to use anchors/references in job.<spec>.script for DRYness
我对使用 gitlab-ci
还很陌生,因此,我 运行 遇到以下问题 ci-lint
因为我使用了 anchors/references:
image: docker:latest
services:
- docker:dind
variables:
DOCKER_DRIVER: overlay2
DOCKER_HOST: tcp://localhost:2375
.install_thing1: &install_thing1
- do things
- to install
- thing1
.install_thing2: &install_thing2
- do things to
- install thing2
.setup_thing1: &setup_things1
variables:
VAR: var
FOO: bar
script:
- all
- the
- things
before_script:
...
stages:
- deploy-test
- deploy-stage
- deploy-prod
test:
stage: deploy-test
variables:
RUN_ENV: "test"
...
only:
- tags
- branches
script:
- *install_thing1
- *install_thing2
- *setup_thing1
- other stuff
...
test:
stage: deploy-stage
variables:
RUN_ENV: "stage"
...
only:
- master
script:
- *install_thing1
- *install_thing2
- *setup_thing1
- other stuff
当我尝试检查 gitlab-ci.yml
时,出现以下错误:
Status: syntax is incorrect
Error: jobs:test:script config should be a string or an array of strings
错误只是因为 script
片段需要一个数组,我相信我有。使用 <<: *anchor
pragma 也会导致错误。
那么,如何在不必在每个块中重复代码的情况下完成我在这里尝试做的事情?
你可以修复它,甚至让它更干,看看 the Auto DevOps template Gitlab created。
它可以解决您的问题,甚至可以进一步改进您的 CI 文件,只需在脚本块中有一个类似于他们的 auto_devops
job, include it in a before_script and then you can combine and call multiple functions 的模板作业。
锚点只能给你有限的灵活性。
(这个概念使我有可能拥有一个 CI 文件用于 20 多个项目和一个集中的功能文件 wget
并加载到我的 before_script
。)
我对使用 gitlab-ci
还很陌生,因此,我 运行 遇到以下问题 ci-lint
因为我使用了 anchors/references:
image: docker:latest
services:
- docker:dind
variables:
DOCKER_DRIVER: overlay2
DOCKER_HOST: tcp://localhost:2375
.install_thing1: &install_thing1
- do things
- to install
- thing1
.install_thing2: &install_thing2
- do things to
- install thing2
.setup_thing1: &setup_things1
variables:
VAR: var
FOO: bar
script:
- all
- the
- things
before_script:
...
stages:
- deploy-test
- deploy-stage
- deploy-prod
test:
stage: deploy-test
variables:
RUN_ENV: "test"
...
only:
- tags
- branches
script:
- *install_thing1
- *install_thing2
- *setup_thing1
- other stuff
...
test:
stage: deploy-stage
variables:
RUN_ENV: "stage"
...
only:
- master
script:
- *install_thing1
- *install_thing2
- *setup_thing1
- other stuff
当我尝试检查 gitlab-ci.yml
时,出现以下错误:
Status: syntax is incorrect
Error: jobs:test:script config should be a string or an array of strings
错误只是因为 script
片段需要一个数组,我相信我有。使用 <<: *anchor
pragma 也会导致错误。
那么,如何在不必在每个块中重复代码的情况下完成我在这里尝试做的事情?
你可以修复它,甚至让它更干,看看 the Auto DevOps template Gitlab created。
它可以解决您的问题,甚至可以进一步改进您的 CI 文件,只需在脚本块中有一个类似于他们的 auto_devops
job, include it in a before_script and then you can combine and call multiple functions 的模板作业。
锚点只能给你有限的灵活性。
(这个概念使我有可能拥有一个 CI 文件用于 20 多个项目和一个集中的功能文件 wget
并加载到我的 before_script
。)