繁体   English   中英

我可以在执行过程中更改 gitlab-ci.yml 文件吗?

[英]Can I change gitlab-ci.yml file mid execution?

这是我们简化的 gitlab-ci.yml

stages: 
    - build
    - deploy

# fetch home repo that'll run the pipeline processes
before_script:
    - git clone git@git.org:home_repo/home_repo.git
    - cd home_repo

build:
  stage: build
  needs: []
  resource_group: $CI_PROJECT_NAME'_build'
  script:
    - ./pipeline.sh build

deploy_environment1:
  stage: deploy
  needs: [build]
  resource_group: deploy_environment1
  script:
    - ./pipeline.sh deploy env1

deploy_environment2:
  stage: deploy
  needs: [build]
  resource_group: deploy_environment2
  script:
    - ./pipeline.sh deploy env2

添加 5-10 个环境会大大增加规模。 我们该如何处理呢?

可能的解决方案 1:有一项工作将创建所有可用环境的列表并部署到它们。 但是,我们不会对每个部署的进展情况有一个很好的管道视图。

deploy_environments:
  stage: deploy
  needs: [build]
  resource_group: deploy_environments
  script:
    - ./pipeline.sh deploy to_all

可能的解决方案 2: before_script获取所有环境的列表并根据需要插入尽可能多deploy_environment作业定义。 但我们不知道该怎么做。 因此标题中的问题。

我可以在执行过程中更改 gitlab-ci.yml 文件吗?

不,不是 最接近的方法是使用动态子管道,其中子管道的 YAML 由父管道中的另一个作业动态生成。

这样就可以达到你想要的效果。

添加 5-10 个环境会大大增加规模。 我们该如何处理呢?

作为使用动态子管道的替代方案(甚至结合使用),您可以使用并行矩阵进行简明定义。

像这样的东西:

deploy:
  stage: deploy
  script:
    - ./pipeline.sh deploy $ENV_NAME
  parallel:
    matrix:
      - ENV_NAME: [env1, env2]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM