Gitlab Merge Request Builder Plugin 配置小记

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

以前在给一些开源项目贡献代码的时候,在github上一提交pull request或者提交的分支代码更新了的时候,jenkins就会自动把代码进行merge并且运行单元测试,当时看了心里就2个字: NB!

那个时候心里就想,啥时候我也得弄这么一个高大上的玩意儿。随着 gitlab 在工作中的逐渐使用,这个想法越来越强烈。上周末搜来搜去,发现jenkins还真有一款针对gitlab的merge request的插件:Gitlab Merge Request Builder Plugin

当时就心痒难耐,开始看着说明一步步的配置。配置分成2大部分:

第一部分: 安装插件&基础设置


  • 首先安装插件,要求jenkins版本大于1.563,好在jenkins升级比较方便,在系统管理界面就有个大大的升级按钮,果断升级到1.570

  • 系统管理->插件管理->可选插件 里面搜出来 Gitlab Merge Request Builder 安装并重启 jenkins,官方文档在这里强调了需要重启jenkins

  • 重启之后,进入系统管理->系统设置 里面,能发现里里面多了Gitlab Merge Request Builder的配置项

    1. Gitlab Host URL 里填gitlab的服务地址,比如http://192.168.0.1

    2. Jenkins Username 里面填写jenkins的用户名,在这里需要在gitlab里面给jenkins创建一个跟你其他小组成员一样的账户,以便jenkins能在项目中发言

    3. Jenkins API Token 是jenkins在getlab中账户的一个权限校验码,这个码可以在使用jenkins账户登录gitlab后进入账户编辑界面的Account标签页中查到,在那里面叫Private token

    4. Crontab line 主要是配置jenkins多久去检查一次merge request的变更, 默认是 */5 * * * * 即 5分钟一次, 不过jenkins建议改成 H/5 * * * * 貌似可以改善并发。听人劝吃饱饭,我把*/5换成了H/5至今为止貌似还没发现问题。

    5. Enable build triggered message 是指在插件激活的时候在merge request界面发送一条jenkins已经开始工作的消息,不过我感觉,调试的时候还有点用,正常使用就有点啰嗦了。

    6. Default success messageDefault unstable message以及Default failure message三个配置分别是一个成功和两个失败的提示消息模板,干巴巴的字感觉不是很明晰,所以可以在里面增加emoji表情,比如 :smiley: 或者 :broken_heart:

    7. Ignore SSL Certificate Errors 顾名思义是忽略https的证书错误,这个选项对假设在局域网内的gitlab私服很有用,果断勾上!

  • 都配置好了之后不要忘记点击 保存 按钮

第二部分: 创建任务


  • 创建任务一开始和普通流程没啥两样,点击新建创建一个新任务,然后选择你需要的任务类型,因为我是maven项目所以我选了构建一个maven2/3项目,填好项目名称点击OK进入到任务详细配置页

  • 在这里官方文档上写着如果安装了GitHub plugin的话,可以在GitHub Project栏目里面随便填上你的项目在Gitlab里面的URL,不过我没装这个插件,所以跳过。

  • 找到源码管理栏目并选择Git,从这里开始比较重点

    • 按照常规填写了Repository URLCredentials之后,点击高级...按钮,在Name中填写origin
    • 为了支持从其他forked分支提交的merge requests需要再额外增加一个源。点击Add Repository,然后将新增加的源的Repository URL内容设置为${gitlabSourceRepository}Credentials和主源一样,高级...中的Name设置为${gitlabSourceName}
    • 找到Branch Specifier,将里面的内容改为${gitlabSourceName}/${gitlabSourceBranch}
    • 找到Additional Behaviours点击写着Add字样的下拉列表,选择Merge before build
    • 在新弹出的Merge before build区块中,设置 Name of repository 的值为 origin,设置 Branch to merge to 的值为 ${gitlabTargetBranch}
    • 官方文档在这里有一个提示,说要保证 Prune stale remote-tracking branches 没有被添加
  • 找到 构建触发器 栏目

    • Gitlab Merge Requests Builder 打上勾
    • Gitlab Project Path 里面填写项目的路径,格式类似于 your_group/your_project ,不知道怎么填可以打开你的项目在git的主页,然后参考看看URL,就是类似 http://git.tld/your_group/your_project,注意不要把整个URL都填进去,只需要填 your_group/your_project 这部分。
    • 官方文档中还提到了 Target Branch Regex ,貌似是个能起到分支白名单作用的选项,如果不填则所有的正常的merge request都能触发这个任务。不过不知道为什么我这里没有找到这个选项,所以就跳过了。
  • 到这里跟merge request相关的配置基本就完成了,然后就是配置一下项目其他的一些编译选项,比如我在maven编译的Goals and options中填写了clean test -U,这样构建就只执行到完成测试,这样就达到了在合并代码前先检查其质量的目的。

  • 一切配置完成后不要忘了点击保存按钮。


至此,配置全部完成。接下来就可以尝试创建一个merge request来看看是不是好使。

转载于:https://my.oschina.net/anylain/blog/288524

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/461149.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IOS:屏幕旋转与Transform

IOS:屏幕旋转与Transform iTouch,iPhone,iPad设置都是支持旋转的,如果我们的程序能够根据不同的方向做出不同的布局,体验会更好。 如何设置程序支持旋转呢,通常我们会在程序的info.plist中进行设置Supporte…

input子系统详解4——输入事件驱动层源码分析

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 一、前言 由input子系统简介可知,input子系统分为三层: ​ 1、上层输入事件驱动层 涉及的文件有x210_kernel\drivers\input\evdev.c、mousedev.c 和 joydev.c文件&#xff0…

前端翻译:Activating Browser Modes with Doctype

一、前言                         原本备份: http://www.cnblogs.com/fsjohnhuang/p/3830623.html 由于本人英语能力有限,译本内容难免有误,望各位指正! 本译文不含附录部分,请知悉。 二、译…

java公钥加密私钥解密过程_GPG加密解密过程

GPG加密解密过程一、Linux系统下1.安装yum安装[rootPOC-ORACLE ~]# yum install gnupg下载安装包安装https://www.gnupg.org/download/index.en.html查看gpg帮助[rootPOC-ORACLE ~]# gpg --helpgpg (GnuPG) 2.0.14libgcrypt 1.4.5Copyright (C) 2009 Free Software Foundation,…

魔兽世界客户端数据研究(三)

终于决定,还是通过wow model viewer起手,研究一下WOW的数据类型,从另一个角度,体验一把这个唯一让我充过值的游戏。 这将是一系列随笔,即在读代码的时候,顺便记录,以理清思路和加深映象。 其中…

input子系统详解5——参考驱动模板编写按键驱动

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 一、input类设备驱动的开发 (1)输入事件驱动层和框架核心层不需要动,只需要编写具体硬件驱动层代码。 (2)具体硬件驱动层的编程接口与调用…

java很多魔法数判断_可别在代码中写那么多魔法值了,脑壳疼!

1. 前言重构老代码中遇到了不少类似下面这种写法:public void attend(String value) {if ("0".equals(value)) {//todo} else if ("1".equals(value)) {//todo} else {//todo}}脑壳疼!从 Java 语法上无懈可击,但是从业务…

十分钟让你明白Objective-C的语法(和Java、C++的对比)

2019独角兽企业重金招聘Python工程师标准>>> 很多想开发iOS,或者正在开发iOS的程序员以前都做过Java或者C,当第一次看到Objective-C的代码时都会头疼,Objective-C的代码在语法上和Java, C有着很大的区别,有的同学会感觉…

稀疏多项式的运算

问题描述: 已知稀疏多项式Pn(X)c1x^e1c2x^e2....cmx^em,其中nem>em-1>....>e1>0; ci!0,m>1.试采用存储量同多项式项数m成正比的顺序存储结构,编写求Pn(x0)的算法(x0为给定值),并分析你的算法的时间复杂…

I2C子系统详解1——I2C总线设备的驱动框架

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 参考博客 I2C总线驱动框架详解 linux内核I2C子系统详解 一、I2C总线的物理特征 这部分内容的简介可见博客:SPI、I2C、UART(即串口)三种串行总线详解。 &#x…

sqlite4java下载_使用sqlite4java的UnsatisfiedLinkError,没有sqlite4java-osx-amd64

我对这个问题有类似的问题:我正在运行一个使用sqlite的脚本,虽然我能够通过命令行成功运行sqlite3,但是当我尝试运行脚本时,我总是遇到这个错误:SEVERE: [sqlite] sqliteQueue[master.catalog]: error running job queuecom.almworks.sqlite4java.sqlite…

神经网络编程入门

本文主要内容包括: (1) 介绍神经网络基本原理, (2) AForge.NET实现前向神经网络的方法, (3) Matlab实现前向神经网络的方法 。 第0节、引例 本文以Fisher的Iris数据集作为神经网络程序的测试数据集。Iris数据集可以在http://en.wikipedia.or…

I2C子系统详解2——I2C核心层源码分析

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 一、前言 由I2C总线设备的驱动框架可知,I2C总线设备驱动框架涉及的文件如下: (1)I2C设备驱动层相关的文件 x210开发板的电容触摸屏gslX680采用I2C接口…

软考复习之路—组成原理

计算机系统的基础知识应该是作为一个编程人员必备的一门课程,仅仅有了解了计算机的组成,程序在计算 机中的存储状态,运算等基本内容,我们才干继续对计算机有更深层次的认识,更easy学习与上手。比方说要 想学习操作系统…

python内存管理机制错误_Python内存管理机制和垃圾回收机制的简单理解

一、内存管理机制1.由c开发出来的cpython2.include / objests3.需要下载python源码包4.Pyobject:floatPyVarObject:5.在python中所有东西创建对象的时候,内部都会存储一个数据// 维护双向链表struct _object *_ob_next;struct _object *_ob_p…

C#中几种数据库的大数据批量插入

C#语言中对SqlServer、Oracle、SQLite和MySql中的数据批量插入是支持的&#xff0c;不过Oracle需要使用Orace.DataAccess驱动。 IProvider里有一个用于实现批量插入的插件服务接口IBatcherProvider。批量插入的实现可以通过实现该接口来实现。 /// <summary>/// 提供数据…

求背包问题所有解(C++实现)

这是我学习数据结构时的一道上机作业&#xff0c;那时还没养成写注释的习惯&#xff0c;所以各位得受点苦了。 只是简易背包问题。 代码&#xff1a; 展开 1 // 背包问题所有解2 // 作者:王锦 3 // 邮箱:jinkswvip.qq.com4 5 #include "stdafx.h"6 #include <iost…

I2C子系统详解3——I2C总线驱动层代码分析

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 一、前言 由I2C总线设备的驱动框架可知&#xff0c;I2C总线设备的驱动框架涉及的文件如下&#xff1a; &#xff08;1&#xff09;I2C设备驱动层相关的文件 x210开发板的电容触摸屏gslX680采用I2C接…

java join 异常_Java:守护进程:thread.join()没有完成,当在一个线程中抛出异常时...

我写了一个Java守护进程(一个实现守护进程和Runnable的类)&#xff0c;现在我遇到了以下问题&#xff1a;在init()中&#xff0c;我创建了一个新线程 . Thread thread new Thread(this); 在start()中我启动新线程 . thread.start() . 在运行中我做了很多不同的事情......然后发…

硬链接与符号链接的比较?

今天就说说硬链接&#xff08;实体链接&#xff09;与符号链接&#xff08;类似Windows的快捷方式&#xff09;的不同?首先我们应知道&#xff1a;每个档案都会占用一个inode ,档案内容由 inode记录来指向;想要读取该档案&#xff0c;必须要经过目录记录的文件名来指向正确的i…