Jenkins 配置自动合并 release 分支到 master 分支

本文告诉大家如何在 Jenkins 配置合并到 release 的内容自动合并到 gitlab 的 master 分支

首先需要两个仓库,一个是 gitlab 的仓库,另一个是 Jenkins 的仓库

先在 Jenkins 仓库做配置,首先设置 Source Code Management 选择自己需要的仓库和设置好的账号

然后在 Branches to build 添加分支,这里需要将 release 合 master 所以就填写 release 就可以

在 Additional Behaviours 添加三个值,一个是 Clean before checkout 这样可以清空仓库,第二个是 Prune stale remote-tracking branches 让本地和远程同步。

注意,第二个 Prune stale remote-tracking branches 很重要,如果有小伙伴上传了这样两个分支

t/lindexi
t/lindexi/github

那么即使小伙伴在上传第一个分支之后,删除了第一个分支再上传第二个分支,可能 Jenkins 也无法加载

第三个就是 Merge before build 请看图片,设置仓库是哪个,设置推送的分支

为了在用户推送的时候合并,就需要在 Build Triggers 添加 Build when a change is pushed to GitLab. 这样就可以添加 web hook 在打钩之后可以看到下面有一个链接,如下面是我的链接,这个链接会在之后设置到 gitlab 所以暂时需要记下

https://newci.gz.lindexi.cn/project/lindexi/github_merge_release_to_dev

这里可以通过很多个设置,在 Push Events 执行这个仓库或者在 Accepted Merge Request Events 执行,可以全部打钩

下面就是 Build 这里可以写编译的内容,我下面执行了一些代码

只有在编译成功我才可以让 release 合并到 master 分支,如果编译不成功就不能合并

在 Post-build Actions 添加 Git Publisher 功能,第一个是 Push Only If Build Succeeds 也就是在上面的 Build 编译成功之后才会执行

点击 Add Branch 添加一个新的合并分支,需要从 release 合并到 master 就可以和我下面一样写,如果是从 release 合并到 dev 分支就自己在下面写 dev 就可以

点击保存就设置完成,下面就是设置 gitlab 让 gitlab 可以支持 Jenkins 推送

点击设置成员,添加 Jenkins 成员

点击 Integrations 添加 webhook 这里需要填写刚才 Jenkins 的链接,我的链接是 https://newci.gz.lindexi.cn/project/lindexi/github_merge_release_to_dev 大家可不要没事就来攻击我的服务器

填写之后需要勾选 Push events 这样有人上传就可以自动合并 release 到 master 而不需要自己手动合并

在添加之后可以看到有 Test 按钮,点击可以模拟一个 push 的测试

点击测试看 Jenkins 是否自动执行,如果有就是设置成功

可能因为合并的 master 分支没有推送,需要点击 repository 设置 Protected Branches 允许 maintainers 推送,设置 Jenkins 的账号是 maintainers 这样就可以推送

可能这时会发现没有 GitLab: This deploy key does not have write access to this project 可以在 repository 设置 Deploy Keys 请看下面

具体设置请看 Using GIT deploy key in Jenkins


本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏崔庆才的专栏

Requests库作者Kenneth Reitz的另一神作!虚拟环境及包管理工具Pipenv!

我们在运行 Python 项目的时候经常会遇到一些版本问题,例如 A 项目依赖于 Django 1.5,而 B 项目又依赖 Django 2.0,而我们的系统却...

3948
来自专栏pangguoming

Java NIO框架Netty教程(一) – Hello Netty

先啰嗦两句,如果你还不知道Netty是做什么的能做什么。那可以先简单的搜索了解一下。我只能说Netty是一个NIO的框架,可以用于开发分布式的Java程序。具体...

2594
来自专栏码农笔录

ubuntu、deepin 程序启动菜单创建

1575
来自专栏北京马哥教育

文件管理类命令常用使用方法及其相关示例演示

cat 使用语法:cat [-AbeEnstTuv][--help][--version] FILENAME 命令功能:查看文件内容或将多文件连接后传输到基本输...

3508
来自专栏腾讯移动品质中心TMQ的专栏

你的自动化测试在win10上跑不起来了吗?

【问题描述】 你有没有遇到这样的问题呢:自动化测试在win7、xp系统上运行好好的,到win10系统上却一直失败呢? 仔细观察运行失败的原因,发现自动化测试中有...

21310
来自专栏云计算教程系列

使用Solr向您的站点添加自定义搜索

Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展...

911
来自专栏电光石火

gradle加载本地jar包

1496
来自专栏大数据技术分享

HAProxy实现HiveServer2负载均衡

开启: service haproxy start 或 systemctl start haproxy

5410
来自专栏大数据杂谈

Windows下安装python第三方包、模块汇总

Windows下安装python第三方包、模块汇总如下(部分方式同样适用于其他平台): 1. 直接安装 windows下最常见的*.exe,*.msi文件,直接...

31010
来自专栏about云

从零教你在Linux环境下(ubuntu)如何编译hadoop2.4

问题导读: 1.如果获取hadoop src maven包? 2.编译hadoop需要装哪些软件? 3.如何编译hadoop2.4? 扩展: 编译hadoo...

37111

扫码关注云+社区

领取腾讯云代金券