之前的配置,都是向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 to origin 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)
  • 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自动构建的更多相关文章

  1. 配置github的pull request触发jenkins自动构建

    参照: https://www.cnblogs.com/zanjiahaoge666/p/6402738.html 之前的配置,都是向master分支push操作触发jenkins进行构建,但是在一般 ...

  2. 实战:向GitHub提交代码时触发Jenkins自动构建

    当我们提交代码到GitHub后,可以在Jenkins上执行构建,但是每次都要动手去执行略显麻烦,今天我们就来实战Jenkins的自动构建功能,每次提交代码到GitHub后,Jenkins会进行自动构建 ...

  3. Gitlab源码库里代码提交后,如何触发jenkins自动构建?

    版本库里代码提交后,如何触发jenkins自动构建?这是一个面试题,感觉自己回答的并不好,因为并没有用过这个功能,之前公司实际项目用的是svn版本管理,一般都用立刻构建,和定时任务构建(不管代码是否有 ...

  4. SVN怎么触发Jenkins自动构建

    通常,有几种方式可以在SVN仓库发生改变时触发Jenkins进行构建.第一种是,Jenkins主动轮询SVN仓库:第二种是,在SVN客户端(如TortoiseSVN)创建客户端hooks来触发构建:第 ...

  5. gitlab实现webhook触发jenkins 自动,构建,测试,push webhook构子 总结

    最新一直在学习 工作 + 学习 去掉 90%   所以blog  一直没更 真是很不好!  exsi ceph gitlab jenkins harbor k8s  docker-compose ap ...

  6. 通过gitlab的webhook触发Jenkins自动构建设置

    1.Jenkins job中勾选Build when a change is pushed to GitLab 2.Gitlab project 页面setting选择Integrations,配置w ...

  7. github的pull request是指什么意思?有什么用处

    github的pull request是指什么意思? 来看看某乎某位阿牛的理解,多么的简单粗暴! 我尝试用类比的方法来解释一下 pull reqeust.想想我们中学考试,老师改卷的场景吧.你做的试卷 ...

  8. 如何创建一个项目,让gitlab自动触发jenkins进行构建

    前进是:你已经配置好jenkins+gitlab自动化布置了,这里只是常规构建新的项目时,需要做的配置,记录下来,以免忘了又着急 参考这篇博客: https://www.jianshu.com/p/e ...

  9. 使用Docker+Jenkins自动构建部署

    环境 Windows 10 Docker Version 18.06.1-ce-win73 (19507) 运行jenkins 运行jenkins 容器 docker run -d --name ln ...

随机推荐

  1. python中的字典两种遍历方式

    dic = {"k1":"v1", "k2":"v2"} for k in dic: print(dic[K]) for ...

  2. grub2 设置Windows为默认启动系统

    1. 首先找到Windows的菜单menuentry.<blockquote># cat /boot/grub2/grub.cfg | grep Windows 结果: menuentry ...

  3. HDU5126 stars【CDQ分治】*

    HDU5126 stars Problem Description John loves to see the sky. A day has Q times. Each time John will ...

  4. tableau-基本函数

    一.数据术语 维度——包含诸如文本和日期等类别数据的字段. 度量——包含可以聚合的数字的字段. 二.字段图标 Abc  蓝色图标->离散字段 #     绿色图标->连续字段 =Abc = ...

  5. vs2010 创建和C#使用动态链接库(dll)

    一.VS 用 C++ 创建动态链接库 Step 1:创建Win32 Console Application 本例中我们创建一个叫做“Test”的Solution. Step 2:将Applicatio ...

  6. Navicat Premium 连接O​r​a​c​l​e​ ​出现o​r​a​-​1​2​5​0​5​ ​错​误​解​决​方​案

    找到listener.ora文件:我的Oracle是安装在F盘, 路径为:F:\oracle\product\10.2.0\db_1\network\admin\listener.ora  改动前的配 ...

  7. Mybatis新增返回主键的两种方法 (mysql)

    1.自增:LAST_INSERT_ID (自动返回最后一个INSERT或 UPDATE 问询为 AUTO_INCREMENT列设置的第一个 发生的值.) <!-- mysql的自增ID :LAS ...

  8. SecureCRT导入已有会话

    如果别人有完整的环境信息,我们想拿过来,怎么导入?或者别人想要我的会话配置信息,怎么导出?对SecureCRT这个工具来说很easy,根本不需要去找什么导入.导出按钮,直接文件操作. 假如我的Secu ...

  9. 阿里云视频点播 php开发

    先购买开通阿里云的<视频点播>服务,视频点播 可以购买套餐 ,我在项目中使用的是299套餐 开发前在<用户信息管理>生成Access Key Secret,开发密钥使用 阿里云 ...

  10. 一些非常好的VC++/MFC开源项目链接

    Introduction List of some of the best Open Source projects written in VC++/MFC. Background Codeproje ...