Gitlab源码库里代码提交后,如何触发jenkins自动构建?
版本库里代码提交后,如何触发jenkins自动构建?这是一个面试题,感觉自己回答的并不好,因为并没有用过这个功能,之前公司实际项目用的是svn版本管理,一般都用立刻构建,和定时任务构建(不管代码是否有提交,都到代码库里拉取最新的代码,然后构建)。并且我也是这样告诉面试官的,显然面试官对我很困惑,最终,我告诉他我们的源码管理工具用的是SVN,然后,可能把面试官也弄懵了,因为面试公司用的是gitlab. 哈哈,面试官自己没有尝试过“SVN+触发构建插件”吧。
经过查询,网上针对Gitlab源码管理+jenkins是有解决方案的: Gitlab利用Webhook实现Push代码后的jenkins自动构建
下面是我的实践过程:
已经准备好如下环境:
Gitlab内网服务器地址:http://192.168.1.50:8090
jenkins内网服务器地址:http://192.168.1.40:8080
步骤从这里开始:
1. jenkins,分别点击"系统管理"->"插件管理"->"可选插件",选择Gitlab和Gitlab Hook Plugin


2.192.168.1.50服务器上,需要建立git用户
useradd git
passwd git
3(这个步骤,请跳过,后面jenkins里,凭据我并没有选择免密登陆). 将Jenkins的公钥key添加到Gitlab上, 这样就可以实现jenkins访问gitlab免密码
在 Docker:pipeline编写基本技巧- jenkins配置通过密钥拉取git源码管理仓库的代码 中,已经有使用公钥私钥的经验了
现在登陆 192.168.1.40
#192.168.1.40(jenkins)机器上,已经存在公钥
[root@ ~]# ls .ssh/
id_rsa id_rsa.pub known_hosts
#将192.168.1.40机器的公钥Copy到192.168.1.50(Gitlab)服务器上
[root@ ~]# ssh-copy-id git@192.168.1.50
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: key(s) remain to be installed -- if you are prompted now it is to install the new keys root@192.168.1.50's password: Number of key(s) added: Now try logging into the machine, with: "ssh 'root@192.168.1.50'" and check to make sure that only the key(s) you wanted were added.
[root@ ~]# ssh 'git@192.168.1.50'
Last login: Sat Apr :: from mei-pc
[root@ ~]# exit
logout Connection to 192.168.1.50 closed.
[root@ ~]#
4. Gitlab服务器上,如果没有项目,可以参考 Github: 从github上拉取别人的源码,并推送到自己的github仓库 找一个项目放上去
步骤如下:
[root@ tomcat-java-demo]# vi .git/config

[root@ tomcat-java-demo]# git remote add origin http://192.168.1.50:8090/root/tomcat-java-demo-gitlab.git
fatal: remote origin already exists.
#如果遇到上面这个错误提示,就按照接下来的操作
[root@ tomcat-java-demo]# git remote rm origin
[root@ tomcat-java-demo]# git remote add origin http://192.168.1.50:8090/root/tomcat-java-demo.git
[root@ tomcat-java-demo]# git push -u origin master
Username for 'http://192.168.1.50:8090': root
Password for 'http://root@192.168.1.50:8090':
Counting objects: , done.
Compressing objects: % (/), done.
Writing objects: % (/), 4.52 MiB | 1.15 MiB/s, done.
Total (delta ), reused (delta )
remote: Resolving deltas: % (/), done.
remote:
remote: The private project root/tomcat-java-demo was successfully created.
remote:
remote: To configure the remote, run:
remote: git remote add origin http://192.168.1.50:8090/root/tomcat-java-demo.git
remote:
remote: To view the project, visit:
remote: http://192.168.1.50:8090/root/tomcat-java-demo
remote:
To http://192.168.1.50:8090/root/tomcat-java-demo.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.
上传代码到gitlab成功, 到gitlab管理界面验证一下

4. jenkins上新建项目,这里项目名:testgitlabhook

设置jenkins拉 gitlab上代码地址和对应的凭据


保存
5. 到gitlab管理页面进行配置

点 Add Webhook后,
出现如下错误

解决参考地址:gitlab使用webhook向jenkins发送请求,报错 Requests to the local network are not allowed
大致意思 gitlab 10.6 版本以后为了安全,不允许向本地网络发送webhook请求,如果想向本地网络发送webhook请求,则需要使用管理员帐号登录, 做如下修改

现在再回到上一个步骤
点[Add webhook],不报错了,在下面出现 标签 1所示,

按照上图标签操作,点2,3
会出现如下错误

这是没有权限,需要把Jenkins-->Jenkins Manages-->Configure System,找到GitLab配置,去掉勾选。
参考解决地址:https://www.jianshu.com/p/156de44a44c2

再回去点 Test-> push event
出现 Hook executed successfully: HTTP 200 说明配置成功了

你会发现,每点一次 Test-> push event,就会触发一次jenkins立刻构建

或者:
到gitlab管理界面,tomcat-java-demo 项目下,新增一个文件,提交后,也会发现触发了jenkins的立刻构建。
到此,gitlab 通过webhook触发jenkins自动构建流程通了。
作者: 梅梅~
出处: https://www.cnblogs.com/keeptesting
关于作者:专注软件测试,测试运维相关工作,请多多赐教!
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 欢迎沟通交流加微信联系。 微信:yangguangkg20140901 暗号:博客园.
Gitlab源码库里代码提交后,如何触发jenkins自动构建?的更多相关文章
- 实战:向GitHub提交代码时触发Jenkins自动构建
当我们提交代码到GitHub后,可以在Jenkins上执行构建,但是每次都要动手去执行略显麻烦,今天我们就来实战Jenkins的自动构建功能,每次提交代码到GitHub后,Jenkins会进行自动构建 ...
- 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 ...
- Google将数十亿行代码储存在单一的源码库
过去16年,Google使用一个中心化源码控制系统去管理一个日益庞大的单一共享源码库.它的代码库包含了约10亿个文件(有重复文件和分支)和 3500万行注解,86TB数据,900万唯一源文件中含有大约 ...
- storm源码之storm代码结构【译】【转】
[原]storm源码之storm代码结构[译] 说明:本文翻译自Storm在GitHub上的官方Wiki中提供的Storm代码结构描述一节Structure of the codebase,希望对正 ...
- storm源码之storm代码结构【译】
storm源码之storm代码结构[译] 说明:本文翻译自Storm在GitHub上的官方Wiki中提供的Storm代码结构描述一节Structure of the codebase,希望对正在基于S ...
- iOS高仿app源码:纯代码打造高仿优质《内涵段子》
iOS高仿app源码:纯代码打造高仿优质<内涵段子>收藏下来 字数1950 阅读4999 评论173 喜欢133 Github 地址 https://github.com/Charlesy ...
- window10(64bit)+VS2010编译ACE_TAO源码库
1.下载 ACE+TAO下载地址:http://download.dre.vanderbilt.edu/previous_versions/ VS2010下载地址:https://pan.baidu. ...
- 搭建Spark源码研读和代码调试的开发环境
转载自https://github.com/linbojin/spark-notes/blob/master/ide-setup.md 搭建Spark源码研读和代码调试的开发环境 工欲善其事,必先利其 ...
随机推荐
- 为什么MIP-Cache存在
在去年十月的一篇 博客文章 提到 MIP 加速器是由 MIP-HTML, MIP-JS 和 MIP-Cache 三个模块共同产生加速效果的.MIP-HTML 和 MIP-JS 都是开源的,在 GitH ...
- ASP.NET Core 快速入门(实战篇)
上篇讲了<asp.net core在linux上的环境部署>.今天我们将做几个小玩意实战一下.用到的技术和工具有mysql.websocket.AngleSharp(爬虫html解析).n ...
- Java核心基础学习(一)--- 2019年1月
1.对比Exception和Error,运行时异常与一般异常 Exception 和 Error 都继承了 Throwable 类,在 Java 中只有 Throwable 类才能 thorw(抛出) ...
- python --- 二分查找算法
二分查找法:在我的理解中这个查找方法为什么会叫二分呢,我认为是将要查询的一个列表分成了两份,然后在利用某个值来进行比较,在一个不断循环的过程中来找出我们要找的某一个值. 废话不多说,先上代码: def ...
- sqlserver数据库备份时出现3241问题
工作中需要将生产上的数据库备份到测试数据库一份,然后同步生产环境进行测试.但是在将数据库还原的过程中,遇到了下面的问题: 说是,介质簇结构不正确,猜测应该是sqlserver的版本不一致的问题,然后查 ...
- SQL Server的case when用法
1.简单sql一例 SELECT top 10 CASE WHEN IDENTITY_ID='1' THEN '管理员' WHEN IDENTITY_ID='5' THEN '学生' ELSE '无' ...
- ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)解决办法
一,报错原因及分析 mysql的这个报错的原因是mysql服务没有正确启动就是mysqld这个程序. mysql要想运行需要mysql和mysqld两个都启动才行 二,解决办法 右键我的电脑——> ...
- springcloud情操陶冶-springcloud config server(一)
承接前文springcloud情操陶冶-springcloud context(二),本文将在前文基础上浅析下ConfigServer的工作原理 前话 根据前文得知,bootstrapContext引 ...
- Springboot 系列(八)动态Banner与图片转字符图案的手动实现
使用过 Springboot 的对上面这个图案肯定不会陌生,Springboot 启动的同时会打印上面的图案,并带有版本号.查看官方文档可以找到关于 banner 的描述 The banner tha ...
- C#枚举的简单使用
枚举这个名词大家都听过,很多小伙伴也使用过, 那么枚举在开发中能做什么,使用它后能给程序代码带来什么改变,为什么用枚举. 各位看官且坐下,听我一一道来. 为什么使用枚举? 1.枚举能够使代码更加清晰, ...