Gitlab11.4.6+jenkins2.107持续集成-自动触发jenkins构建任务
1.gitlab机器 (192.168.224.130机器)
1)搭建cent7+gitlab11.4.6环境——见相关文档
2)使用root/1234567890登录gitlab,创建项目仓库:web-test
仓库地址:http://192.168.224.130/root/web-test.git
3)使用gitlab本机器作为客户端,初始化仓库,并将代码推送到仓库-并分出两个分支master和dev,用时候一个即可。
[root@bogon ~]# yum -y install git
[root@bogon ~]# mkdir /test1
[root@bogon ~]# cd /test1/
[root@bogon test1]# git clone -b master http://root@192.168.224.130/root/web-test.git
Cloning into 'web-test'...
Password for 'http://root@192.168.224.130': 输入root密码:1234567890
warning: You appear to have cloned an empty repository.
[root@bogon test1]# ls
web-test
[root@bogon test1]# cd web-test/
[root@bogon web-test]# rz 上传代码包
[root@bogon web-test]# ls
web-demo.zip
[root@bogon web-test]# unzip web-demo.zip
[root@bogon web-test]# ls
web-demo web-demo.zip
[root@bogon web-test]# ls web-demo
Jenkinsfile pom.xml README.txt src
开发完代码后,提交到本地仓库并推送到远程仓库:
[root@bogon web-test]# git config --global user.name "Administrator"
[root@bogon web-test]# git config --global user.email "admin@example.com"
[root@bogon web-test]# git add .
[root@bogon web-test]# git commit -m "tijiao daima"
[root@bogon web-test]# git push http://root@192.168.224.130/root/web-test.git master
Password for 'http://root@192.168.224.130': 输入root密码:1234567890
Counting objects: 1196, done.
Compressing objects: 100% (1133/1133), done.
Writing objects: 100% (1196/1196), 24.61 MiB | 8.88 MiB/s, done.
Total 1196 (delta 28), reused 0 (delta 0)
remote: Resolving deltas: 100% (28/28), done.
To http://root@192.168.224.130/root/web-test.git
* [new branch] master -> master
[root@bogon web-test]# git checkout -b dev
Switched to a new branch 'dev'
[root@bogon web-test]# git branch
* dev
master
[root@bogon web-test]# git push http://root@192.168.224.130/root/web-test.git dev
Password for 'http://root@192.168.224.130':
Total 0 (delta 0), reused 0 (delta 0)
remote:
remote: To create a merge request for dev, visit:
remote: http://192.168.224.130/root/web-test/merge_requests/new?merge_request%5Bsource_branch%5D=dev
remote:
To http://root@192.168.224.130/root/web-test.git
* [new branch] dev -> dev
4)gitlab本机器添加jenkins机器的公钥——部署公钥,使得jenkins机器无需密码拉取代码
Gitlab进入项目里——settings——Repository——Deploy Keys——将jenkins机器的公钥复制进去,起个名字,如下:
点击Add key即可。
5)gitlab本机器开启钩子(用于gitlab+jenkins持续集成)
点击Admin area——Settings——Network——Outbound requests(展开),
勾选:Allow requests to the local network from hooks and services,如下:
6)gitlab本机器进入项目,添加集成webhook,并测试持续构建触发jenkins自动构建(用于gitlab+jenkins持续集成)
进入项目仓库——Settings——Integrations——url处:填写jenkins项目中生成的url(jenkins相关构建项目中记录下来的url):
http://192.168.224.129:8080/jenkins/project/web-demo, 和token值:1c52a36e08a812d46187115592004994,如下:
添加好配置后,点击下面的:Add Webhook,如下:
手动测试,在创建的webhook的Test处,选择点击:Push events
点击Push events,如下:当返回:Hook executed successfully:HTTP 200,表示能触发成功。
触发jenkins自动构建成功后,到jenkins机器查看,可以看到会先加入一个构建任务,然后过一段时间,就会自动构建,如下:
注意:此处虽然是查看的是构建的失败,但是可能是网上视频拉取的代码,使用人家的svn地址可能改变了,导致构建失败,但是已经证明gitlab能自动触发jenkins执行构建任务了。
7)gitlab本机器使用客户端提交代码后,触发jenkins自动构建-实现持续集成(用于gitlab+jenkins持续集成)
[root@bogon ~]# cd /test1/web-test/web-demo #进入项目目录,修改代码
[root@bogon web-demo]# git branch
* dev
Master
[root@bogon web-demo]# echo 111 > 1.txt #在开发分支修改代码,添加一个1.txt文件
[root@bogon web-demo]# git add .
[root@bogon web-demo]# git commit -m "add 1.txt" #提交到本地仓库
[root@bogon web-demo]# git checkout master #切换到master分支
[root@bogon web-demo]# git merge dev #将开发分支修改的代码合并到master分支
[root@bogon web-demo]# git push http://root@192.168.224.130/root/web-test.git master #将修改的代码推动到远程gitlab仓库master分支
Password for 'http://root@192.168.224.130': 输入root密码:1234567890
Counting objects: 6, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 342 bytes | 0 bytes/s, done.
Total 4 (delta 1), reused 0 (delta 0)
To http://root@192.168.224.130/root/web-test.git
7886f7d..6b94a99 master -> master
到远程gitlab仓库查看,可以看到推送上来的1.txt文件:
到jenkins机器查看,能自动触发构建:-第2个任务即是
注意:此处虽然是查看的是构建的失败,但是可能是网上视频拉取的代码,使用人家的svn地址可能改变了,导致构建失败,但是已经证明gitlab能自动触发jenkins执行构建任务了。
2.jenkins机器(192.168.224.129机器))
1)搭建jenkins2.107环境,并修改admin密码为:1234567890——见相关文档
2)创建公钥对,自己jenkins上配置私钥,公钥配置在gitlab,实现无需密码能拉取gitlab仓库里代码
[root@bogon ~]# ssh-keygen
一路回车
[root@bogon ~]# ls /root/.ssh/
id_rsa id_rsa.pub
[root@bogon ~]# cat /root/.ssh/id_rsa.pub
Xxxx将公钥内容部署在gitlab上
[root@bogon ~]# cat /root/.ssh/id_rsa
Xxxx 将私钥内容配置在自己jenkins机器上
自己配置私钥步骤如下:
凭据——系统——全局凭据——添加凭据——选择SSH Username with private key——勾选Enter directly,如下:将自己私钥内容添加进去,描述信息起个私钥名字:siyao-jenkins(后面配置时候要用)。
如下:
点击确定,如下:
3)Jenkins机器安装maven环境
jenkins底层是使用maven进行编译、打包、构建,(jenkins只是一个将其连接排序的过程)
[root@bogon ~]# mkdir /maven
[root@bogon ~]# cd /maven/
[root@bogon maven]# rz
上传maven包
[root@bogon maven]# ls
apache-maven-3.3.9-bin.tar.gz
[root@bogon maven]# tar -zxf apache-maven-3.3.9-bin.tar.gz
[root@bogon maven]# ls
apache-maven-3.3.9 apache-maven-3.3.9-bin.tar.gz
[root@bogon maven]# ls apache-maven-3.3.9
bin boot conf lib LICENSE NOTICE README.txt
[root@bogon maven]# ls apache-maven-3.3.9/bin/ #里面有命令mvn,可以接很多参数打包、构建、编译等
m2.conf mvn mvn.cmd mvnDebug mvnDebug.cmd mvnyjp
[root@bogon maven]# mv apache-maven-3.3.9 /usr/local/maven
4)Jenkins的界面操作(全局配置配置jdk安装路径、maven安装路径)
系统管理——全局工具配置,配置jdk和maven环境变量即可,如下:
5)Jenkins机器安装maven插件
点击系统管理——管理插件——可选插件——搜索:Maven Integration后勾选上该插件,点击直接安装即可。
6)Jenkins机器安装gitlab插件和gitlab hook插件 (用于jenkins+gitlab持续集成)
点击系统管理——管理插件——可选插件——搜索:GitLab Plugin 和Gitlab Hook Plugin后勾选上这两个插件,点击直接安装即可。
上面安装好插件后最好重启一下jenkins.
7)Jenkins机器取消跨站请求和运行用户操作的配置(用于jenkins+gitlab持续集成)
点击系统管理——全局安全配置——勾选:登录用户可以做任何事 和 Allow anonymous read access,取消勾选:防止跨站点请求伪造。
8)创建构建项目
选择一个maven项目,点击确定,如下:配置gitlab的仓库地址,选择私有认证,选择分支,
构建触发器处,(安装完gitlab插件后,会自动形成这个选项)
勾选:Build when a change is pushed to GitLab. GitLab webhook URL: http://192.168.224.129:8080/jenkins/project/web-demo,
此处还没完,展开高级——点击Generate,会生成一个token,如下:1c52a36e08a812d46187115592004994,
记下这个token,gitlab上配置会用,还有记下上面的url:
http://192.168.224.129:8080/jenkins/project/web-demo
构建触发器模块配置完成,然后再往下,指定pom.xml文件和编译命令,如下:
clean install -Dmaven.test.skip=true 表示maven在编译打包时候跳过测试,也可直接:clean install不跳过测试。点击保存,项目即创建完毕,等待gitlab提交代码触发任务执行即可。