基于Jenkins实现Git代码提交自动化上线 2022-12-21 00:08:08 期望基于Jenkins实现以下核心功能: 1. 用户可以自己手动选择分支触发Jenkins的任务构建 2. 可以Git提交代码,Push到仓库后,通过WebHook的方式触发任务构建 以上都基于一个Jenkins Job搞定。 ## Jenkins所需插件 - Git plugin,这个就不用说了,基于git拉代码所必须的 - Git Parameter Plug-In,可以比较方便的在参数化构建中,选择分支作为参数使用,就不需要手动输入构建分支了 - GitLab Plugin,集成GitLab WebHook的能力,以便代码push到GitLab后,触发任务的构建 - Environment Injector Plugin,在GitLab WebHook触发后,获取GitLab的提交分支,注入到环境变量,在checkout代码时使用GitLab的分支 ## 核心配置流程 1. 创建参数化构建的项目 2. 添加Git Parameter,定义参数名branch,类型选Branch or Tag 3. 勾选“準備運行環境”,配置Groovy Script,内容如下: ``` // gitlabBranch,这个参数来自webhook,如果是gitlab触发的构建,则切换到gitlab的分支 if (!binding.variables.containsKey('gitlabBranch')) { return [buildBranch: "$branch"] } else { return [buildBranch: "$gitlabBranch"] } ``` 4. Source Code Management中设置Branch Specifier为:${buildBranch} 5. Build Triggers中设置,勾选Build when a change is pushed to GitLab.并在GitLab的项目中配置WebHook(这块Jenkins的高级设置中有Secret token,配置时需要生成一个) 6. 其他的构建及自动化上线过程,按需配置即可 ## 注意事项 1. 创建Jenkins Job时,选择参数化(This project is parameterized) 2. 如果项目有submoduel,在Source Code Management的Additional Behaviours中配置Advanced sub-modules behaviours,勾选Recursively update submodules、Use credentials from default remote of parent repository ## 其他Tips 1. GitLab中项目的WebHook中可以设置Push Event的触发分支,这可以做到按特定分支自动化构建 2. Jenkins中Build Triggers,也可以勾选Comments,基于Git的Message关键字自动触发构建,真正做到提交代码时按需自动触发Jenkins任务构建 3. 建议安装Publish Over SSH插件,配和Parameterized publishing设置,可以将构建包,同时发布到多个环境,非常便捷 4. 任务构建成功后可以配置邮件或钉钉消息通知(我司基于钉钉,Jenkins也有相关插件,安装配置下即可),这样就完成整个自动化构建闭环了 ## 参考 - <https://plugins.jenkins.io/envinject/#plugin-content-gerrit-trigger-plugin-with-parameterized-build-branch-name> 非特殊说明,均为原创,原创文章,未经允许谢绝转载。 原始链接:基于Jenkins实现Git代码提交自动化上线 赏 Prev 基于Vagrant+Ansible批量管理虚拟机 Next 记mac下尝鲜colima的坎坷经历