1: Jenkins是什么?
Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。
通常与版本管理工具(SCM)、构建工具结合使用;常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。
2: Jenkins特性:
易于安装:不需要安装、不需要数据库,只需通过java -jar jenkins.war或部署到一个servlet容器中
易于配置:所有的配置都可能通过jenkins提供的web界面完成,当然如果你喜欢,也可以通过手动修改xml文件进行配置
生成JUnit或TestNG的测试报告
文件识别:jenkins能跟踪每次构建生成哪些jar包以及使用哪个版本的jar包
分布式构建
插件支持:jenkins可以通过第三方插件扩展,也可以根据团队需要开发插件
Jenkins中的任务(Job)和构建(build):任务(Job)是Jenkins的一个执行计划,是一系列操作的集合,构建是Jenkins的任务的一次运行。
对于Jenkins是什么,百度百科给的答案是这样的:Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
通过这句话,我们可以得到这样的一个信息——Jenkins是一个开源的东东,好像跟持续集成开发有关系(然而我们并不知道持续集成开发是什么东东)。
通俗的说,就我目前的理解来看,Jenkins是一个开源的软件。这款软件可以供我们安装,安装成功以后呢,在浏览器中输入 http://localhost:8080(或者是输入http://安装Jenkins电脑的IP:8080)然后按回车键可以出现一个界面,在这个界面上进行一些配置,我们就可以通过这个软件来管理我们正在开发的项目,(具体配置方法,以后文章会有说明)可以让它来减少我们软件开发的时候的出错率,替我们把软件合到一起,并且将有问题的部分检测出来。
Jenkins的功能:
Jenkins的主要功能是将项目中重复执行的工作自动化的执行。如软件的建造(构建)和在配置文件下设置的job。具体功能大概有:
1.软件的持续构建和测试,Jenkins提供了一个系统,使开发人员可以很容易的将改变集成到工程中。自动化的,持续的构建有利于提高开发效率。
2.监视job的执行,如下图所示,job可以实现很多的功能,Jenkins可以对这些项目进行显示,让用户更清楚的注意到这些 损毁的job。(具体情况后文中介绍)
3.项目源代码修改的检测,jenkins能够从项目的Subversion/CVS生成最近修改的集合列表,且不会增加Subversion/CVS Repository的负载。
4.分布式构建,Jenkins可以将工程构建到多台机器,更好地利用硬件资源,节省时间。
其他,Jenkins代码开源,用户可以自己编写插件。所以jenkins可以实现很多的功能。
Jenkins的原理
关于原理,我了解的也不是特别的深刻,先附上师姐的一张图,以后研究深刻了再往这边补上。
图片转发的博客:http://blog.csdn.net/u010773667/article/details/41845461
安装jenkins:
Jenkins安装基于java1.8版本以上,centos7的java环境默认是1.8版本
[root@lrb ~]# java --version
Unrecognized option: --version
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
使用rpm安装Jenkins,也可以使用源码进行编译安装
启动Jenkins服务器,Jenkins默认运行在8080端口,但是我们gitlab启动也需要占用8080端口,我们时gitlab和Jenkins在同一台服务器上部署,修改Jenkins的端口为8081,修改端口在Jenkins主配置文件vim /etc/sysconfig/Jenkins
[root@lrb ~]# vim /etc/sysconfig/jenkins
[root@bogon ~]# tar zxf jenkins-plugins.tar.gz #jenkins插件包
[root@bogon ~]# mv plugins/ /var/lib/jenkins/
[root@lrb ~]# systemctl restart jenkins
浏览器访问192.168.1.10:8081(需要关闭网络,因为网络下载的慢) 访问网页192.168.1.10:8081,访问时将网络关闭,因为稍后会让我们安装插件,我们已经将插件解压到了/var/lib/jenkins/,所以我们不需要在安装。
第一访问的时候需要我们认证,确保安全
这个url是Jenkins的地址
因为很多插件需要翻墙才可以继续下载,Jenkins还提供了代理的设置
还可以在服务器目录下进行上传插件‘
目录路径=/var/lib/jenkins/plugins,这个目录下是我们安装所有的插件
安装gitlib进行代码管理:
[root@lrb ~]# rpm -ivh gitlab-ce-11.9.8-ce.0.el6.x86_64.rpm
[root@lrb ~]# gitlab-ctl reconfigure初始化gitlab,这里过程比较慢
完成后浏览器访问,第一次访问需要设置登录密码
默认登录用户名为root
密码为:1234.com
创建一个新的项目
项目创建完成后提示ssh没有设置
回到主机终端生成密钥并将公钥里面的内容添加进去
[root@lrb ~]# ls web-demo/
README.md
测试是否能文件上传成功
回到浏览器查看是否上传成功
我们项目的路径默认是使用域名进行访问的,我们没有设置hosts文件解析,可以修改gitlab的配置文件修改项目访问的路径url
[root@lrb web-demo]# vim /etc/gitlab/gitlab.rb
重启服务查看
[root@lrb web-demo]# gitlab-ctl reconfigure
[root@lrb web-demo]# gitlab-ctl restart
如果重启后访问出现502可以稍等会在去访问,或者加大内存
可以看到变成了IP进行访问
再次创建项目完成后路径是使用IP地址进行访问
回到Jenkins部署项目
这里出现报错,因为我们使用的是ssh进行访问gitlab仓库,但是Jenkins需要没有私钥,所有没有访问的权限,点击上面的添加
将刚在gitlab上生成的私钥复制到jenkins配置页面上来
Gitlib版本,我们安装的就是11.9
2、Jenkins+gitlab集成后,实现的功能是,开发写好代码提交到gitlab上,当push到gitlab上之后,Jenkins自动帮我们构建
这个项目我们需要安装一个gitlab钩子脚本
这样我们的Jenkins+gitlab就集成了,当我们开发人员写好代码提交到gitlab上,当push到gitlab上之后,我们在Jenkins点击构建就可以了,不过这样有点麻烦,接下来我们来让Jenkins自动构建,这样我们就轻松多了
需要安装gitlab-oauth、gitlab-plugin、windows-slaves、ruby-runtime、gitlab-hook五个插件,如果有安装包可直接上传安装,如果没有就自行下载,按照顺序安装,不然可能会出错。需要关闭网络重启jenkins。
https://mirror.tuna.tsinghua.edu.cn/ 可以在此网站下载插件
系统管理----插件管理----高级-----上传插件---
系统管理-----全局安全设置----授权策略----取消勾选防止跨站点请求伪造----勾选匿名用户具有可读权限
系统管理---系统设置---取消勾选Enable authentication for '/project' end-point---保存
点击Jenkins后的倒三角------配置-----构建触发器-----勾选触发远程构建----构建身份令牌(在终端执行openssl rand -hex 10)生成的令牌df1b50eb7363c22cfaaa
勾选Build when a change is pushed to GitLab-------保存
回到gitlab的web页面---点击小钳子----settings----Network-----点击outbound requests后面的Expand-----勾选Allow requests to the local network from hooks and services----save changes
点击projects----your project----wyk-dsg----settings---Integrations----
这个路径在jenkins网页的项目里面---配置----构建触发器---
点击test测试,测试成功会显示202
成功够我们回到终端创建文件,将文件推送到gitlab中:
推送到gitlab够Jenkins会自动构建,不需要我们手动构建。