首页 新闻 会员 周边

如何让多个 gitlab-runner 运行同一个 tag 的 job

0
悬赏园豆:30 [已解决问题] 解决于 2022-03-18 15:51

我们的应用部署到 k8s 集群是通过 tag 选择对应的 gitlab-runner 执行部署脚本完成,现在我们同时使用了2个 k8s 集群,对于同一个 tag,需要由 2 个 gitlab-runner 同时执行部署脚本,请问如何实现?

dudu的主页 dudu | 高人七级 | 园豆:31003
提问于:2022-03-17 14:29

stakoverflow 上的相同问题:Gitlab-Runner: Run the same job with multiple runners

dudu 2年前
< >
分享
最佳答案
0

gitlab runner 13.3 有个叫矩阵(matrix)的东西

how-to-become-more-productive-with-gitlab-ci#break-down-big-pipelines-with-parallel-matrix-jobs

没实际试过但是应该长的类似下面这样
部分.gitlab.ci.yml

.deploy-prod
    stage: deploy
    ...
    script: 
        - deploy.sh
    only:
        refs:
            - /^v\d+\.\d+\.\d+/
   
deploy-prod-main:
     extends: .deploy-prod
     tags:
        - prod-main

deploy-prod-sub:
     extends: .deploy-prod
     tags:
        - prod-sub
收获园豆:30
Laggage | 小虾三级 |园豆:878 | 2022-03-17 23:34

@Laggage: 通过 parallel:matrix 搞定了,.gitlab-ci.yml 中的配置如下:

deploy-prod:
  stage: deploy
  tags:
    - k8s-prod
  variables:
    DEPLOY_RUNNER: ${DEPLOY_RUNNER}
  parallel:
    matrix:
      - DEPLOY_RUNNER: [kube-master0, k8s-master0]

parallel:matrix 实际就是给 gitlab-ci CI/CD 变量设置不同的值,变量通过 variables 定义,gitlab-ci 会启动不同的 gitlab-runner 以 parallel:matrix 中指定的各个值运行同一个 job。

上面的 DEPLOY_RUNNER 变量在部署中并没有实际用到,只是为了欺骗 gitlab-runner 以实现多个 runner 运行同一个 job。

pipeline 执行效果如下:

gitlab 的帮助文档对这个特性的说明太敷衍了,后来还是通过 stackoverflow 上的 multi stage gitlab matrix pipeline 中的配置弄明白的。

dudu | 园豆:31003 (高人七级) | 2022-03-18 15:00

@Laggage: 定义 2 个 job,通过 extends 重用重复的配置,也是一种解决方法

dudu | 园豆:31003 (高人七级) | 2022-03-18 15:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册