【问题标题】:Execute multiple runners for single gitlab CI pipeline为单个 gitlab CI 管道执行多个运行器
【发布时间】:2022-06-12 16:36:08
【问题描述】:

我有一个 gitlab CI 配置为构建和部署代码到 3 个不同的服务器,在部署每个服务器之前只需进行微小的更改。在部署之前,我根据正在部署的服务器编辑一些文件,并从 CI 管道推送到同一个 repo。 为此,我想使用 3 个不同的运行器来运行,以便构建代码并将其部署到每个服务器,但找不到如何去做。 我可以使管道中的每个作业在多个运行器上并行运行(使用并行矩阵),但是作业运行的顺序(即首先在所有运行器上执行 1 个作业),更改不会持续到部署作业。

有没有办法可以触发多个跑步者执行相同的工作?或者是他们的解决方法。

【问题讨论】:

    标签: gitlab devops gitlab-ci gitlab-ci-runner gitlab-ci.yml


    【解决方案1】:

    为每个跑步者定义唯一的tags(例如deploy-win11deploy-rhel8deploy-solaris)。

    创建一个template job 和三个扩展模板作业的作业(每个用于一个目标系统)。然后为这三个作业中的每一个定义required tags

    享受成功,每个作业都在自己的特定运行器上运行,部署正确版本的软件。

    【讨论】:

      【解决方案2】:

      我不确定我是否完全理解这个问题,但我认为你错过了stages

      您可以在.gitlab-ci.yml 中定义这样的阶段 (你可以随意命名):

      stages:
      - build
      - test
      - deploy
      

      这样,管道将等到所有 build 作业完成后再运行 test 作业。

      现在,您必须指定作业应在哪个阶段执行:

      build_job_1:
        variables:
          NODE_OPTIONS: --max_old_space_size=8192
          GIT_CLEAN_FLAGS: none
        stage: build
        tags:
          - runner1
      
      build_job_2:
        variables:
          NODE_OPTIONS: --max_old_space_size=4096
        stage: build
        tags:
          - runner2
      

      【讨论】:

        猜你喜欢
        • 2021-01-23
        • 1970-01-01
        • 2021-11-05
        • 2022-08-11
        • 2021-10-17
        • 1970-01-01
        • 2022-01-19
        • 2017-04-01
        • 2022-11-08
        相关资源
        最近更新 更多