配置github的pull request触发jenkins自动构建
参照:
https://www.cnblogs.com/zanjiahaoge666/p/6402738.html
之前的配置,都是向master分支push操作触发jenkins进行构建,但是在一般的正常工作中,不会允许程序员直接向主分支推送代码;正常都是fork一个本地的分支,在本地分支调试完后,向主干分支提交pull request,待相关的管理人员进行review后,才merge到master分支;
基于此,我们之前的配置就有点不合适了,接下来我们就一块研究下如何在别人提交pull request时,就自动触发构建,当然这个构建要执行的任务,应该是将新提交的代码获取到服务器,并部署到环境当中,这应该是一些基本的操作,不懂就问下别人你们的环境如何部署;这里我们主要看如何配置jenkins能使pull request触发构建;
第一步:安装pull request builder plugin插件
jenkins插件管理中,可选插件中搜索pull request builder plugin,选中后点击直接下载,插件安装完一般都需要重启jenkins以生效;
这个插件应该是最近版本新出的,因为网上的资料确实少,甚至有些文章说不需要特别的插件,只要勾选了Build when a change is pushed to GitHub,不管是push还是pull request都能触发jenkins构建,这应该是不靠谱的;
pull request builder plugin插件官方文档:https://github.com/jenkinsci/ghprb-plugin/blob/master/README.md
第二步:配置pull request builder plugin插件
安装好插件以后,jenkins》》系统管理》》系统设置》》GitHub Pull Request Builder节点:
GitHub Server API URL: 如果不是使用的企业版jenkins,就保持默认的https://api.github.com;
Jenkins URL overrde: 如果考虑到防火墙、跨域等问题,可以写一个替换连接jenkins主页的url;
Shared secret: 如果填写一个密码,则每一个提交的pull request都需要验证这个密码才能连接jenkins;
Credentials: 选择我们之前用github生成的token创建的认证身份;一般这个身份在github中具有较高的权限;
完后点击下方的测试链接,来测试jenkins与github的基本连接以及身份用户的权限验证;
其中Repository ownere/name,顾名思义就是填写github的用户名跟远程库名,中间有反斜杠/;
在Description写一个这个Credentials的描述,以区分将来不同Credentials;
下面Admin list中填写github用户白名单,在白名单中的用户提交pull request,可以直接触发构建,没有在白名单中的,需要通过admin的确认;感受下官网的描述:
When a new pull request is opened in the project and the author of the pull request isn't whitelisted, builder will ask Can one of the admins verify this patch?
. One of the admins can comment ok to test
to accept this pull request for testing, test this please
for one time test run and add to whitelist
to add the author to the whitelist.
If an author of a pull request is whitelisted, adding a new pull request or new commit to an existing pull request will start a new build.
ok,配置完后点击保存;
第三步:配置jenkins任务
基本的配置跟之前的类似,我这里只提不同的地方:
1、源码管理
基本配置搞定后,点击高级:
Name填写origin
Refspec填写 +refs/pull/*:refs/remotes/origin/pr/*
Branch Specifier填写${sha1},如果想要用到提交的pr,则这个地方填写${ghprbActualCommit}
官网描述:
- Under Advanced, set
Name
toorigin
and:- If you just want to build PRs, set
refspec
to+refs/pull/*:refs/remotes/origin/pr/*
- If you want to build PRs and branches, set
refspec
to+refs/heads/*:refs/remotes/origin/* +refs/pull/*:refs/remotes/origin/pr/*
(see note below about parameterized builds)
- If you just want to build PRs, set
- In
Branch Specifier
, enter${sha1}
instead of the default*/master
. - If you want to use the actual commit in the pull request, use
${ghprbActualCommit}
instead of${sha1}
2、构建触发器
如果插件安装正常,构建触发器这边会有GitHub Pull Request Builder,不要选择之前的push触发的那个咯;下面的credentials选择下拉框给出的就好,应该就是之前在系统设置中测试通过的那个;
Admin list填写对于这个job要加入白名单的github用户;下面的Use github hooks for build triggering勾选;
3、构建步骤
如上截图,在构建操作中,我设置了两个Execute shell用以区分构建操作的两个步骤;第一个是在提交pr,并将pr拉取下来merge到jenkins工作目录中配置的代码分支后,执行环境部署的操作,这里请根据你们项目中实际的操作进行配置;第二个Execute shell是在部署好了新环境的基础上,执行postman的api脚本;只有在集成了新pr的环境中执行,才能对该pr进行测试,看是否会对整个环境的api稳定性造成什么影响;
另外如果配置的没有问题,在github对应的远程库,Settings>>Webhooks中,会生成一个新的webhook:
要保证这个hook的触发方式是pull_request,如果不是,需要点击Edit进行修改:
与Pull request相关的有三个,从名称上就可以看出,下面两个一个是对pr进行review时触发,另一个是对pr的review进行评论;根据需要进行配置,一般情况只要Pull request就可以,包括新建pr、关闭pr(目测不会触发)、编辑pr等等都会触发github想jenkins发送post请求,jenkins执行构建操作;
其他的跟之前的配置相同,这里就不啰嗦了,不懂得看我其他几篇文章吧;
ok,到这里配置就完成了,保存一下提交一个pull request试试看吧;
github也是工作中比较常用的工具,这里没有出相关的学习资料,因为在下也是在工作中零零碎碎学习的,比较不系统╮(╯▽╰)╭;需要的话,大家可以在网上搜一下教程;
配置github的pull request触发jenkins自动构建的更多相关文章
- 六、配置github的pull request触发jenkins自动构建
之前的配置,都是向master分支push操作触发jenkins进行构建,但是在一般的正常工作中,不会允许程序员直接向主分支推送代码:正常都是fork一个本地的分支,在本地分支调试完后,向主干分支提交 ...
- 实战:向GitHub提交代码时触发Jenkins自动构建
当我们提交代码到GitHub后,可以在Jenkins上执行构建,但是每次都要动手去执行略显麻烦,今天我们就来实战Jenkins的自动构建功能,每次提交代码到GitHub后,Jenkins会进行自动构建 ...
- Gitlab源码库里代码提交后,如何触发jenkins自动构建?
版本库里代码提交后,如何触发jenkins自动构建?这是一个面试题,感觉自己回答的并不好,因为并没有用过这个功能,之前公司实际项目用的是svn版本管理,一般都用立刻构建,和定时任务构建(不管代码是否有 ...
- SVN怎么触发Jenkins自动构建
通常,有几种方式可以在SVN仓库发生改变时触发Jenkins进行构建.第一种是,Jenkins主动轮询SVN仓库:第二种是,在SVN客户端(如TortoiseSVN)创建客户端hooks来触发构建:第 ...
- gitlab实现webhook触发jenkins 自动,构建,测试,push webhook构子 总结
最新一直在学习 工作 + 学习 去掉 90% 所以blog 一直没更 真是很不好! exsi ceph gitlab jenkins harbor k8s docker-compose ap ...
- 通过gitlab的webhook触发Jenkins自动构建设置
1.Jenkins job中勾选Build when a change is pushed to GitLab 2.Gitlab project 页面setting选择Integrations,配置w ...
- 如何创建一个项目,让gitlab自动触发jenkins进行构建
前进是:你已经配置好jenkins+gitlab自动化布置了,这里只是常规构建新的项目时,需要做的配置,记录下来,以免忘了又着急 参考这篇博客: https://www.jianshu.com/p/e ...
- github的pull request是指什么意思?有什么用处
github的pull request是指什么意思? 来看看某乎某位阿牛的理解,多么的简单粗暴! 我尝试用类比的方法来解释一下 pull reqeust.想想我们中学考试,老师改卷的场景吧.你做的试卷 ...
- 使用Docker+Jenkins自动构建部署
环境 Windows 10 Docker Version 18.06.1-ce-win73 (19507) 运行jenkins 运行jenkins 容器 docker run -d --name ln ...
随机推荐
- onblur和onkeyup事件
onblur:事件会在对象失去焦点时发生 提示:onblur 相反事件为onfocus事件 . onkeyup: 事件会在键盘按键被松开时发生. 提示:与onkeyup 事件相关的事件发生次序: on ...
- vue-router 路由元信息 终于搞明白了路由元信息是个啥了
vue-router 路由元信息:https://blog.csdn.net/wenyun_kang/article/details/70987840 终于搞明白了路由元信息是个啥了:https:// ...
- Python入门习题7.分别统计输入各类字符个数
例7.用户从键盘输入一行字符,编写一个程序,统计并输出其中的英文字符(包括中文字符).数字.空格和其他字符个数. #字符数统计.py Str = input('请输入一行字符:') alpha = 0 ...
- Python入门习题4.文本进度条
例4.1.设置一组文本进度条,使之运行效果如下: --------执行开始--------% 0 [->**********]%10 [*->*********]%20 [**->* ...
- java_第一年_JavaWeb(4)
HttpServletResponse对象 向客户端发送数据的方法: 通过getOutputStream()方法得到OutputStream对象,再通过write发送 通过getWriter()方法得 ...
- 【洛谷UVA307】小木棍Sticks
小木棍Sticks[传送门] 算法的话:dfs+超强剪枝: (另外注意UVA上好像不接受万能头[因为万能头WA了两次,瑟瑟发抖]) 思路: 最直接的思路,枚举木棍长度来dfs,但这样很容易就TLE了. ...
- 洛谷 P3374 【模板】树状数组 1(单点加,区间和)
题目链接 https://www.luogu.org/problemnew/show/P3374 树状数组 树状数组最基本的就是求区间和. 维护: 空间复杂度:O(n) 时间复杂度(区间和,单点修改) ...
- rancher部署K8S
环境:centos7 docker 日期准确 关闭防火墙 安装docker 创建 vim /etc/docker/daemon.json { "registry-mirrors&quo ...
- Day4 --- Python中的控制结构(if, for, while, try...expect..)
if for while 可以参考 : https://www.cnblogs.com/HYLering/p/10051906.html try 是异常处理里面的 可以参考 : https://ww ...
- IIS 应用池资源定时回收
方法1: 方法2: