续我的博文:https://mp.csdn.net/postedit/89232113。即Gitlab已经安装部署好
和我的上篇博文:https://mp.csdn.net/postedit/89249342。即Jenkins已经安装好
GitLab是一个代码仓库,用来管理代码。Jenkins是一个自动化服务器,可以运行各种自动化构建、测试或部署任务。
所以这两者结合起来,就可以实现开发者提交代码到GitLab,Jenkins以一定频率自动运行测试、构建和部署的任务,
帮组开发团队更高效的集成和发布代码。
1、selinux和firewalld状态为disabled
2、各主机信息如下:
主机 | ip |
---|---|
server1(git) | 172.25.83.1 |
server2(git,jdk,jenkins) | 172.25.83.2 |
配置server2
1、安装git
[root@server2 ~]# yum install git -y
2、进入jenkins界面:在jenkins上创建一个新的自由风格的项目(项目的名字随意给,我这里给的名字是hello)
点击“创建一个新任务”,在任务名称这栏中填入“hello”,选择“构建一个自有风格的软件项目”
点击“确定”
3、在创建好的hello项目中进行设定,使得该项目能够自动执行shell脚本
<1>配置“源码管理“
(1)点击“源码管理”,选择“git”方式,填入Gitlab的URL地址:[email protected]:root/test.git
Gitlab的URL地址来源于之前配置Gitlab时创建的项目test的URL地址,如下图:
(2)配置证书Credentials(如上图,如果不配置Credentials会报错)
点击Add的下拉菜单
选择Add的下拉菜单中的Jenkins
在类型的下拉菜单中选择“SSH Username with private key”;在Username中写入名字“root“;选中Private key后面的“Enter directly”
这时候我们需要在Gitlab添加一个公钥 Jenkins添加一个私钥,之前我们Gitlab已经当做开发机生成过公钥和私钥了,我们使用现在的私钥放在Jenkins上就行了。(不过值的注意的是:Gitlab上添加的公钥和Jenkins上添加的私钥必须是一对)
复制粘贴到jenkins上
点击“添加”
(2)在Credentials的下拉菜单中选择“root”
<2>配置“构建触发器“
配置界面如下:
一、定时构建:不管SVN或Git中数据有无变化,均执行定时化的构建任务 ;
二、轮询SCM:只要SVN或Git中数据有更新,则执行构建任务;
三、构建语法说明:
1.首先格式为:* * * * *(五个星);
2.第一个*表示分钟,取值0~59
第二个*表示小时,取值0~23
第三个*表示一个月的第几天,取值1~31
第四个*表示第几月,取值1~12
第五个*表示一周中的第几天,取值0~7,其中0和7代表的都是周日3.使用举例:
每隔10分钟构建一次:H/5 * * * *
每隔1小时构建一次: H H/1 * * *
每月30号构建一次: H H 30 * *
<3>配置“构建“
在“构建“中的“增加构建步骤”的下拉菜单中选择“执行shell”
在命令这栏写入想要执行的shell命令,比如“ls -l”
在上面的三个配置完成之后,点击“保存”
4、测试
<1>测试一:
点击“返回面板”,查看可以执行shell脚本的hello工程是否已经配置好。s下面的球显示蓝色的,即表示构建成功
<2>测试二:
点击“hello”返回上一个页面,点击“#1“左边”蓝色的球“,查看控制台输出,如果有输出,则表示可以执行shell脚本的hello工程已经配置好
<3>测试三:
进入Jenkins的工作目录,查看是否有Gitlab上test项目中的内容,如果有,则表示可以执行shell脚本的hello工程已经配置好
[root@server2 ~]# cd /var/lib/jenkins/workspace/hello #Jenkins的工作目录
[root@server2 hello]# ll
total 8
-rw-r--r-- 1 jenkins jenkins 12 Apr 12 20:56 index.html
-rw-r--r-- 1 jenkins jenkins 8 Apr 12 20:56 README.md
<4>测试四:
下面我们来测试下轮询SCM(只要SVN或Git中数据有更新,则执行构建任务)
(1)在server1端:向Gitlab远程仓库推送内容
[root@server1 test]# pwd
/root/test
[root@server1 test]# ls
index.html README.md
[root@server1 test]# echo xjj > file1 #必须在该目录(test的仓库目录)下执行
[root@server1 test]# git add file1
[root@server1 test]# git commit -m "add file1"
[master fcc8eb5] add file1
1 file changed, 1 insertion(+)
create mode 100644 file1
[root@server1 test]# git push -u origin master
Counting objects: 4, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 296 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:root/test.git
9bcf5d2..fcc8eb5 master -> master
Branch master set up to track remote branch master from origin.
(2)在server2端的Jenkins的web界面上查看,是否进行了第二次构建,查看控制台输出是否多了内容file1,并在Jenkins工作目录下查看是否多了内容file1
[root@server2 ~]# ll /var/lib/jenkins/workspace/hello
total 12
-rw-r--r-- 1 jenkins jenkins 4 Apr 12 21:35 file1
-rw-r--r-- 1 jenkins jenkins 12 Apr 12 20:56 index.html
-rw-r--r-- 1 jenkins jenkins 8 Apr 12 20:56 README.md