GitLab动态并行运行作业

GitLab动态并行运行作业,gitlab,gitlab-ci,gitlab-ci-runner,Gitlab,Gitlab Ci,Gitlab Ci Runner,我有一个项目,它会在遵循特定惯例的文件夹中生成go主文件。问题是,当存在代码推送时,我需要在Gitlab CI管道中并行构建这些项目,并且我无法在.Gitlab CI.yml中硬编码它们,因为它们是动态生成的。我需要并行构建这些go项目,如果所有单个项目构建都成功,我需要通过构建阶段。有人能告诉我这在Gitlab中是否可行。不幸的是,Gitlab CI不支持这一点,它似乎符合。正如本期和@Jakub中提到的,我正在寻找类似这样的解决方案(某种全局或模板解决方案),以便能够动态并行作业: buil

我有一个项目,它会在遵循特定惯例的文件夹中生成go主文件。问题是,当存在代码推送时,我需要在Gitlab CI管道中并行构建这些项目,并且我无法在
.Gitlab CI.yml
中硬编码它们,因为它们是动态生成的。我需要并行构建这些go项目,如果所有单个项目构建都成功,我需要通过构建阶段。有人能告诉我这在Gitlab中是否可行。

不幸的是,Gitlab CI不支持这一点,它似乎符合。正如本期和@Jakub中提到的,我正在寻找类似这样的解决方案(某种全局或模板解决方案),以便能够动态并行作业:

build_%:
  image: dnd
  stage: build
  glob: microservices/*/Dockerfile
  context: microservices/{1}
  script:
    - docker build  {1}
 parallel: true

因此,我决定暂时使用Gitlab CI,直到Gitlab CI提供一个解决方案。

我等得太久了……否则就得开始寻找jenkins job DSL插件了。

现在也可以使用。 可以使用YTT为子管道生成YAML配置文件,但只要提供有效的YAML文件,就可以使用任何生成方法

.gitlab-ci.yml

config-template.yml

config-template-values.yml


Gitlab CI允许您运行所需的任何脚本。在bash中使用
find
parallel
无法解决的问题上,您必须展开您正在努力解决的问题。是否要将每个项目作为单独的作业运行?原因到目前为止不受支持:。当然,这是可以做到的,但解决方案不会很好。
generate-config:
  stage: build
  script: ytt -f config-template.yml -f config-template-values.yml --data-value-yaml services="[${SERVICES}]" > generated-config.yml # with SERVICES=service1,service2
  artifacts:
    paths:
      - generated-config.yml

child-pipeline:
  stage: test
  trigger:
    include:
      - artifact: generated-config.yml
        job: generate-config
#@ load("@ytt:data", "data")
stages:
  - test
#@ for service in data.values.services:
#@yaml/text-templated-strings
(@= service @)-test:
  stage: test
  script:
    - #@ "test " + service
#@ end
#@data/values
---
services: []