持续交付 gitlab webhook 如何针对一个项目下的子模块配置

bq · 2020年08月13日 · 最后由 陈恒捷 回复于 2020年08月13日 · 3234 次阅读

我有一个项目,这个项目下有很多子模块。
有时候我只想修改其中的某一个模块,然后 push 代码后自动触发对应的 jenkins job,但是我不知道怎么针对某一个模块或者子项目配置 webhook。
比如:我有一个项目叫 platform,然后这个目录下分为了 platformA、platformB 等,然后 A 和 B 有对应的两个 jenkins job,可以对 A 和 B 分别重构,我想实现提交代码到 A,只触发 A 的 jenkins job,不触发 B 的,请问如何配置才能实现这个功能呢?
gitlab 可以添加多个 webhook,但是每次无论是提交 A 或者 B 的代码,都会被触发,gitlab 能做相应的匹配吗?即如何关联子模块变更和对应 job

共收到 3 条回复 时间 点赞

拆分 project……

如果项目已经在用 gitlab 的 CICD,可以使用.gitlab-ci.yml ,根据不同改动触发不同 jenkins-job.

.gitlab-ci.yml

stages:
  - run-platformA-job
  - run-platformB-job

platformA:
  stage: run-platformA-job
  except:
    changes:
      - "platformB" # 当有platformB变动时,不触发A的job,执行run-platformB-job
  only:
    - merge_requests
    - branches
  allow_failure: false
  script:
    - curl -X POST http://xxxx/job/job-A/buildWithParameters? # 触发Jenkins job

platformB:
  stage: run-platformB-job
  except:
    changes:
      - "platformA" # 当有platformA变动时,不触发B的job,执行run-platformA-job
  only:
    - merge_requests
    - branches
  allow_failure: false
  script:
    - curl -X POST http://xxxx/job/job-B/buildWithParameters?

以上.gitlab-ci.yml 配置没有经过本地测试,不知道能否成功, 只是提供一种思路😄

建议理清 A 和 B 的关系。如果耦合度低到能放在两个 job 分别构建部署,我理解其实也不大需要放在同一个 git 仓库里?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册