@
thomaswang 我觉得你们可能需要重新讨论一下 CI/CD 流程……
我理解的方案:在接到项目 A 的 new feature 开发需求后本地新建分支 A/nf,在开发完毕代码、测试完成确认功能正常后,把自己开发的部分( A/nf ) merge 到 A 项目的 develop 分支,jenkins 固定存在一个 job,只 pull dev 分支,检测到代码更新就自动构建(这个 gitlab 中 webhook 可以实现),可以加以配合 docker 来实现应用的整体交付给测试工程师,测试通过则合并到 staging 分支,等待预发布测试,然后再合到 master 分支。
指定分支这个是 jenkins 的事情,在 job 配置里的 “ Source Code Management ” 部分的 “ Branches to build ” 里指定一个分支就行了,比如你们的分支叫 dev 那就写 dev,如果这里留空是默认 master 的…
然后关于你关心的 “一但 push/merge 代码就触发 Jenkins 构建” ,首先这个需要到 Gitlab 对应项目的 Setting - Intergretion 里设置,URL 里填入 Jenkins 对应 Job 的 “ Build Triggers ” 中提供的 URL (请勾选 Build when a change is pushed to GitLab ),然后在 “ Trigger ” 里勾选自己需要的选项,比如我们勾选了 “ push ” 与 “ merge ” ;然后在 Jenkins 的 Job 里,在 “ Build Triggers ” 插件中的 “ Enabled GitLab triggers ” 里勾选 “ Push Events ”、“ Accepted Merge Request Events ”,代表达成以下条件则触发构建,同时记得点开 [Advance] ,在 “ Allowed branches ” 里选择 “ Filter branches by name ”,填入你要的分支名,这个选项代表 “当这个项目的 xx 分支达成触发条件后,开始触发流程”,如果选择 “ Allow all branches to trigger this job ”,会造成哪怕是其他任何一个不相关的分支被 push/merge 了,也会导致触发 Job 构建(哪怕这个 Job 只 pull dev 的代码)
我觉得你们缺个运维。