Jenkins 使用

一、简介

1. Make工具

这个工具是最最原始的工具了,在linux下编过程序,看过比较大的c/c++代码的人应该都听说过这个工具(Windows下对应的工具为nmake)。它负责组织构建的过程,也就是负责指挥编译器如何编译,连接器如何连接,最后生成一个可用的文件。

2. Ant工具

但是有人觉得make工具的很难使用,他的语法很难理解,就发明了ant

3. Maven工具

Maven像make一样是个构建(build)工具,Maven工具是对ant工具的进一步改进(这么说不太准确,但是可以这么理解)。在make工具中,如果我们要编译某些源文件,我们肯定首先要安装编译器等工具,但是有时候需要不同版本的编译器,如果把每个包都下载下来,在makefile中进行配置制定,需要的包非常多,很难管理,于是人们发明了Maven工具。Maven使用配置文件pom.xml对环境进行配置,例如设定编译器的版本,设定所需支持包的URL,这样maven就可以自动去下载所需的包。这样如果需要对构建环境进行改变时,直接改变pom文件就可以了,maven会自动网络上下载配置的包。Maven可以利用一些别的工具,实现对编译结果的统计,对源代码的检查,对于代码的测试等。

4. Jenkins工具

其实Maven还是不够强大。Maven可以控制编译,控制连接,可以生成各种报告,可以进行代码测试。可是如何控制这个流程呢?先编译还是先连接?先进行代码测试,还是先生成报告?这个工具就是Jenkins。Jenkins能够对流程进行控制,对能够对各个阶段生成的各种结果进行综合,以图表的形式呈现出来。但是不同的工具生成不同格式的结果,Jenkins如何让这些结果呈现出来?这就是jenkins插件,Jenkins插件使maven中用到的各种工具生成的结果能够在Jenkins中呈现出来。

jenkins是一个广泛用于各种项目的"自动化"编译、打包、分发部署。jenkins本身是用java语言开发的,所以安装jenkins的机器至少要有jdk。jenkins可以很好的支持各种语言(java, c#, php等)的项目构建,也完全兼容ant、maven、gradle等多种第三方构建工具,同时跟svn、git能无缝集成,也支持直接与知名源代码托管网站github、bitbucket直接集成。Jenkins默认情况下可以实现项目更新(通过SVN)和项目发布(通过MAVEN)

二、Jenkins

1、Jenkins 安装(windows)

war包有两种安装方法
方法一
下载jenkins.war, 下载成功后,将war包文件放入对应的目录(如C:UsersJenkins),在命令行切换目录到Jenkins,然后执行java -jar jenkins.war
访问http://localhost:8080 , jenkins的主界面如下:

方法二
把Jenkins解压,把得到的war包直接扔到tomcat下,启动tomcat,Jenkins就安装完毕,访问http://localhost:8080

2、jenkins安装(linux)

操作系统:Centos 7.2

jenkins版本:2.33

gitlab版本:8.13.6

两台服务器:

192.168.100.10:jenkins Server

192.168.100.11 :gitlab Server

(1)jenkins是java编写的,所以需要先安装jdk,这里使用yum安装。

1
yum -y install java-1.8.0 java-devel-1.8.0

jenkins还需要从gitlab拉取代码,所以我们需要安装git命令行客户端

1
[root@node1 ~]# yum -y install git

(2)安装jenkins

1
2
3
4
5
cd /etc/yum.repos.d/
wget http://pkg.jenkins.io/redhat/jenkins.repo
rpm --import http://pkg.jenkins.io/redhat/jenkins.io.key
yum install -y jenkins
systemctl start jenkins
(3)访问jenkins
在浏览器打开输入http://IP:8080/访问jenkins。为了安全考虑,需要解锁jenkins,根据提示把/var/lib/jenkins/secrets/initialAdminPassword文件内容复制到administrator password下方即可。

(4)选择安装的插件:只需要安装gitlab plugin,git plugin,还有ssh plugin插件即可,其他插件无须安装。

gitlab 和 git插件:我们的代码都放在gitlab上面,这两个插件用来做源码管理。

ssh插件:需要使用jenkins来执行shell命令。

(5)admin用户:按照提示填写即可

密码创建完成之后就可以登录jenkins了。

3、Jenkins操作

(1)关闭Jenkins
http://localhost:8080/exit

(2)重启Jenkies
http://localhost:8080/restart

(3)重新加载配置信息
http://localhost:8080/reload

(4)Jenkins时区设置为北京时间
打开 【系统管理】->【脚本命令行】运行下面的命令
System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')

4、插件安装

(1)如果在安装jenkins的时候没有安装相关插件,可以按照如下方式安装(已经安装,则不需要)

 (2)如果有插件一直安装失败的情况,可以从jenkins官网下载插件,然后导入到jenkins。在jenkins插件管理->高级选择上传插件进行安装。

5、Jenkins密钥配置

(1)jenkins生成密钥对

登录到jenkins用户,生成密钥

1
2
3
4
[root@node1 ~]# su - jenkins
bash-4.2$ ssh-keygen -t rsa
bash-4.2$ cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCwIdUk3+V8aL2/oMfvwCxp5AiyctL4bnYFnsKOcQz8w/MuAehy9/EEeT0HNQCSs0NQ3veFurWlKUB4tntNA7bMcZS/UWBSXh2uAJQCMcXbIWfdngaQwVVP+s5WvDbtL5Jk6mQch22aIIw4JaJh4L8dl1oyviwoBgOnscXVC/kDWgFM4BrHC4QNyzt6PdtuzX3RkMa4w7bqDvUWMqIyRBScW1fbfJeAwAK1tCQ7ZjfAoTcWpmoBlurH1P6SuWR3rYIPyhGDqjPQnlohqSX/vCrLWoHoYazETHfW2azzzBSGqMeCw3hlbSV/12kRQv0kGfnbhmnHZ1CBgX23N3ktqtzL jenkins@node1.fblinux.com

把这个密钥添加到gitlab和jenkins服务器的root用户。因为jenkins执行部署操作,会出现很多权限问题,一个一个解决比较麻烦,所以直接让jenkins用户通过root方式执行部署操作。

1)添加公钥到gitlab服务器,用来clone代码
image009
添加完成之后从gitlab服务器clone下自己的工程,会在.ssh/known_hosts添加gitlab服务器记录

1
-bash-4.2$ git clone git@192.168.100.11:root/jenkins_test.git

2)添加公钥到jenkins服务器root用户,用来执行部署脚本

1
2
-bash-4.2$ ssh-copy-id -i .ssh/id_rsa.pub root@192.168.100.10
root@192.168.100.10's password:

6、定时构建语法

* * * * * (五颗星,中间用空格隔开)
第一颗*表示分钟,取值0~59
第二颗*表示小时,取值0~23
第三颗*表示天,取值1~31
第四颗*表示第几月,取值1~12
第五颗*表示星期,取值0~7,其中0和7代表的都是周日
H表示随机,没有用到 H 随机的话,不要加括号

1.
H/30 * * * * 每30分钟构建一次:

2.
H H/2 * * * 每隔2个小时构建一次
H 4-19/3 * * * 凌晨点到下午7点,每隔3个小时构建一次
0 8 * * * 每天早上8点构建一次
H 8-18/3 * * * 每天早上8点到晚上6点每三小时检查一次

3.
* * 3-5 * * 每个月的3号,4号,5号 都会被构建,具体时间未知
20 16 15 * * 每个月的15号下午16点20分构建一次

4.
0 8,12,22 * * * 每天的8点,12点,22点,一天构建3次(多个时间点,中间用逗号隔开)

5.
每个月的1-7号一天构建一次
H/30 8-19/3 1-28 1-11 1-5 在1-11月中的1号-28号,每个工作日,早晨的8点到下午7点每隔3.5个小时会触发构建

三、jenkins操作

1、jenkins触发式构建

(1)准备一个测试脚本,开发如果提交了代码就执行这个测试脚本。

(2)创建一个触发构建的项目,选择自由软件风格即可

image010

(3)源码管理选择git,然后只需要在repository url中输入git仓库地址即可。

(4)构建触发器:即gitlab有提交操作则自动部署,这里只需设置一个认证的token即可,

gitlab调用触发器,使用 JENKINS_URL/job/new_cms/build?token=TOKEN_NAME即可

image013

在系统管理–>用户管理–>查看用户id和token,需要把用户id和API Token加入触发器中,做用户验证

image014
根据触发器验证令牌和用户id+token会生成一个下面的url,只需要访问这个URL地址jenkins就会自动部署对应项目的代码。

1
http://admin:984c9edf027e750f0587808fab0c3f9b@192.168.100.10:8080/job/jenkins_trigger/build?token=hehe

在jenkins全局安全设置中取消勾选“防止跨站点请求伪造,不然jenkins会认为gitlab的请求不合法。

(5)构建,选择execute shell,执行部署脚本即可

image012

 

(6)在gitlab中配置webhooks,配置URL,每次提交代码就访问这个url,执行构建

image015

URL这里输入上面上面用户ID+API token+job token生成的URL地址即可。触发工作选择,push event,merge request event即可。

image016

(7)添加完成测试:点击test模拟提交操作,看看是否会执行自动构建

image018

Jenkins查看,可以看到构建也是成功的。

image020

 

2、jenkins定时构建

定时构建一般用在安卓,ios打包,每天凌晨会拉取安卓,ios进行编译打包,并自动推送到共享。本示例演示定时执行一个命令

 

四、用户和权限

jenkins 配置用户角色权限需要安装插件 Role Strategy Plugin

1.安装 Role Strategy Plugin 插件,下载地址:https://updates.jenkins-ci.org/download/plugins/role-strategy/

 打开jenkins 系统管理-->管理插件-->高级,点击上传,选择下载的插件安装

2、安装完后,重启jenkins,进入系统设管理-->Configure Global Security ,配置如下,保存

 

3.配置User/Group权限

打开 系统管理-->Manage and Assign Roles

 

3-1. 管理角色(Manage Roles)

    选择该项可以创建全局角色、项目角色,并可以为角色分配权限

    

    添加test组,并给Over all 的Read 权限、Job Build 权限、View的Read权限。

     Project roles 配置Pattern,例如匹配以 auto开头的,需要写成 auto.*切记!配置完后保存

3-2.添加用户权限(Assign Role)

    系统需要有用户(若没有可添加:系统管理 --> 用户管理  -->添加用户),然后:

    

4,创建 autotest 任务, 用户test(只有构建权限)用户登录进去,发现只能看到autotest任务,实现不同用户不同视图及不同权限

   



原文地址:https://www.cnblogs.com/tester-l/p/6018105.html