jenkins、安装、插件管理、日常运维

服务概述

Jenkins简介

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台

功能介绍

  • 一个自动化的周期性集成测试过程,从检出代码、编译构建、运行测试、结果记录、测试统计等都是自动化完成的,无需人工干预,有利于减少重复过程以节省时间、费用和工作量
  • 它需要有代码托管工具支持,比如SVN git
  • 监控软件开发流程,快速显示问题

什么是持续集成

持续集成(Continuous integration),简称CI,是指开发阶段,对项目进行持续性自动化编译、测试,以达到控制代码质量的手段。持续集成是一种软件开发实践

为什么要持续集成

  1. 易于定位错误。也就是当你的持续集成失败了,说明你新加的代码或者修改的代码引起了错误
  2. 更加充分地测试系统中的各个单元
  3. 有助于项目的开发数据的收集
  4. 便于开发流程的管理。要把一个开发的build提交给测试组作测试,测完满意了,再提交到发布组去发布

安装和运行

RPM安装

确定Java版本在1.8.0_11及以上,如果低于此版本,请按照以下步骤更新Java

tar -zxf jdk1.8.0_201.tar.gz -C /usr/local
vim /etc/profile 追加内容
export JAVA_HOME=/usr/local/jdk1.8.0_201
export JRE_HOME=/usr/local/jdk1.8.0_201/jre
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
source /etc/profile

验证jdk版本: java -version
如下所示,本机版本以达到,不需要安装Java

[root@localhost ~]# java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

安装
wget https://pkg.jenkins.io/redhat-stable/jenkins-2.138.2-1.1.noarch.rpm
rpm -ivh jenkins-2.138.2-1.1.noarch.rpm
YUM安装(需要先安装jdk)

配置Java环境如上,其他步骤如下所示

wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum -y install jenkins
初始化Jenkins
vim /etc/sysconfig/jenkins
   JENKINS_PORT="9090" 因为本机还有gitlab,会占用8080端口,所以为了让两者不冲突,这个改一下端口
systemctl start jenkins
firefox 127.0.0.1:9090

出现提示页面:确保Jenkins是管理员安装的,需要验证一下管理员初始密码,路径已给出,为/var/lib/jenkins/secrets/initialAdminPassword,另开一个终端,cat一下,粘贴过来

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

[root@localhost ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
d25e7dd3807e4e2cb25a9f8725b83685

继续上一步,填写完密码后提交,会提示Plugins extend Jenkins with additional features to support many different needs. 让你安装插件,提供两种方式,一种是安装推荐的,一种是自选进行安装的组件,我们在这里选择第一个,安装推荐的插件(Jenkins配置好之后也可以安装插件),点击之后,默默等待一会。之后会提示建立第一个管理员账号,一次填写用户名、密码、确认密码、全名和邮箱,全名和用户名写一样即可,在这里我都写admin,邮箱写自己的邮箱,填写完成之后点击页面右下角的Save and continue,之后会提醒你设置Jenkins的url,这里设置成本机IP+端口吧 http://192.168.43.74:9090/ 然后点击save and finish,再点击start using Jenkins即可进入Jenkins页面

配置全局工具

manage Jenkins—global tool configuration—在这里可以添加系统已经安装的工具,可以选择自动安装,也可以选择手动安装并指定路径的方式,在这里先把git的path改成/usr/bin/git,jdk是系统自带的,所以我们不用写路径,maven还没有学习,我们点击add maven,然后点击apply,再点击save

在这里插入图片描述
在这里插入图片描述

设置中文环境以及插件管理

管理插件

点击主页面左侧菜单manage Jenkins—点击右侧出现的manage plugins—点击available即可查看所有可安装而没安装的插件,点击installed可以查看已安装的插件

在这里插入图片描述

安装中文界面插件(如果需要)

在页面右上角的filter搜索框中所有Locale,检索结果会出来一个Locale插件,点击它前边的复选框,点击下边的install without restart 完成安装。之后点击主页面左侧的manage Jenkins,点击右侧的configure system,下拉页面找到Locale,在框框里输入zh_CN,并点击下面的复选框,表示忽略浏览器的默认设置而强制设置成中文显示,然后点击页面左下角的apply,之后点击页面下侧的save。中文的版面看起来其实不是很爽,所以我们还是切换回原来的英文版界面进行操作

在这里插入图片描述

安装gitlab插件

点击available,在右上角filter框里输入Gitlab,安装Gitlab Authentication和Gitlab,点击install without restart,出来新页面后把下面的复选框[Restart Jenkins when installation is complete and no jobs are running]勾选上,在新的页面会显示各个步骤的进度条,最后一项是restart Jenkins,默默等待一会,过一会再请求页面的时候回提醒你重新登录,安装后重启才能生效

在这里插入图片描述
在这里插入图片描述

常见插件及含义

  • LDAP 这个插件允许使用LDAP对用户进行认证,LDAP服务器可以为Active Directory 或OpenLDAP
  • Active Directory 这个插件允许使用Active Directory对用户进行认证,同时结合诸如Matrix Authorization Strategy插件,可以识别用户所在的所有用户组,对用户授权进行灵活配置
  • Gitlab Authorization Stragegy 这个插件提供了一种基于角色的用户权限管理策略,支持创建global角色、project角色、slave角色,以及给用户分配这些角色。这款插件是最常用的Jenkins权限策略和管理插件
  • Git 支持使用Github Gitlab Gerrit等系统管理代码仓库
  • Subversion 支持Subversion系统管理源代码
  • rigger builds remotely jenkins内置功能,远程触发构建,通过设置token可以支持远程脚本中触发Jenkins构建
  • Gitlab 这个插件将Jenkins集成到gitlab web hook中,支持gitlab分支及Merge Request等相关事件触发Jenkins构建
  • JIRA Trigger 这个插件将Jenkins集成到Jira WebHooks中,支持jira issue的状态等变化时触发Jenkins构建
  • Workspace Clenaiup 这个插件支持在构建任务的不同阶段插入环境变量,并在构建结束导出所有的环境变量等功能
  • Mailer 这个插件支持基本的邮件通知功能,比如构建失败和构建恢复陈宫可以发送邮件通知相关人员
  • Email Extension 这个插件是邮件通知的扩展,支持定制邮件内容,触发条件以及邮件接收者,功能比基本邮件通知要灵活强大的多
  • Backup 这个插件添加备份功能到Jenkins management

用户管理

创建用户

jenkins主页面点击左侧manage Jenkins—右侧manage users—点击左侧的create user, 依次填写username/password/confirm password/full name/e-mail address/ 本机填写信息如下: userb/beidaqingniao/beidaqingniao/uesrb/2570267208@qq.com 填写完成后点击create

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

权限管理

  1. 全局权限管理

jenkins主页面点击左侧manage Jenkins—右侧configure global security—点击下边authorization的Project-based Matrix Authorization Strategy ,这个是项目矩阵授权,可以勾选要给用户的权限。默认没有自己添加的用户,点击下边的add,输入我们刚才创建的userb点击OK,之后就出现了userb在矩阵中,userb现在并没有任何权限,我们可以根据需要给userb权限,比如给userb一个read的权限,然后点击apply,点击save

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 作业中权限管理

该策略是将前面Matrix-base安全策略应用到单个project中。Matrix-base中的权限是针对整个系统的,而Project-based是进一步设置用户在每个具体project上的权限。在这种策略下,具体project的configure界面中,会出现”Enable project-based security“复选框,选中后就可以设置用户能够对该project操作的权限。

新建项目

创建一个maven项目

需要安装Maven integration 插件 请自行安装

创建项目步骤如下:

点击作业面左侧菜单的new item,在新出来的页面输入项目名称,比如bdqnWebTest,在这里可以选择第一个自由风格来创建项目,也可以选择第二个maven项目,第四个multi-configuration project是多配置项目,一般用户多平台开发(多个作业的集合,如Android用grandel一次性编译出不同版本的apk)。我们这里选择第二个maven项目,选择完成后点击页面左下角的OK。在新弹出的页面会有很多信息,第一个是描述信息,可以根据需要自己填写。点击下边的enable project-based security,也会出现授权矩阵,可以添加用户并赋予权限,这里的矩阵授权是对于这个项目来说某个用户具备的权限。

在这里插入图片描述
在这里插入图片描述
可以看到 有很多项 我们一项一项去配置
在这里插入图片描述

source code management
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
build triggers
在这里插入图片描述
post steps
在这里插入图片描述

构建
回到主界面,点击后边的符号进行构建
在这里插入图片描述
左下角的构建执行状态就会显示正在构建的任务,点进去就能看到详细的信息
在这里插入图片描述
在这里插入图片描述
构建任务完成的界面如下 点击左侧的console output 可以看到终端输出信息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建完之后 主界面的显示状态
在这里插入图片描述

关于创建项目的系列说明

  1. 构建结果

第一列是 “上次构建状态显示”,是一个圆形图标,一般分为四种:
在这里插入图片描述
蓝色:构建成功;

在这里插入图片描述
黄色:不确定,可能构建成功,但包含错误;

在这里插入图片描述
红色:构建失败;

在这里插入图片描述
灰色:项目从未构建过,或者被禁用;

注意:手动触发构建的时间与自动定时构建的时间互不影响

  1. 关于代码库
    这里使用的示例代码用的是《Jenkins权威指南》一书,github地址:https://github.com/wakaleo/game-of-life 这是一个公共代码库,你可以在线上查看源代码,并复制自己的工作副本,如果要想修改源码的话,需要创建自己的分支,一个分支是代码库的个人副本,要创建一个分支,首先要登录GitHub账号并跳转到repository URL,之后单击Fork按钮,这会创建自己的代码副库本。
    在这里插入图片描述
    如下图,分支创建成功
    在这里插入图片描述
    分支创建成功后,上边的url加上.git就是代码仓库的地址

  2. 关于代码仓库的用户名和密码
    用户名和密码就是自己GitHub的用户名和密码

  3. 关于项目中各部分的说明

build trigger 决定了什么时候做事情; source code management决定从哪里找代码仓库 ;post steps决定干什么; build now 现在就干

  1. 构建成功百分比
    当一个Job中构建已完成并生成了一个未发布的目标构件,如果您准备评估此次构建的稳定性,Jenkins会基于一些后处理器任务为构建发布一个稳健指数 (从0-100 ),这些任务一般以插件的方式实现。它们可能包括单元测试(JUnit)、覆盖率(Cobertura )和静态代码分析(FindBugs)。分数越高,表明构建越稳定。下图中分级符号概述了稳定性的评分范围。任何构建作业的状态(总分100)低于80分就是不稳定的
    在这里插入图片描述

  2. 关于构建的两个项

Build periodically:不关心源码是否发生变化,周期性的进行构建
Poll SCM:关系源码变更,定时检查源码变更,若有更新则checkout最新代码,执行构建操作

gitlab触发更新

应用场景:开发同事在提交代码到gitlab代码仓库后,自动触发Jenkins进行构建,以便验证代码和测试用例的正确性

Jenkins开启构建触发

需要安装两个插件:Gitlab Hook / Build Authorization Token

使用命令行生成token令牌

[root@localhost ~]# openssl rand -hex 12
e19b68f76353decfe60e0cb9

jenkins添加触发构建

修改上述创建的项目,在Build Triggers中选择远程触发构建,令牌输入上面的令牌。具体步骤:在主页面点击项目名称进入项目,点击左侧configure,点击右侧build triggers,选中Trigger builds remotely (e.g., from scripts),在下边输入刚才产生的token令牌,然后点击apply/save

不同版本的gitlab,钩子形式可能不一样,有的是webhooks,有的是token远程认证

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
gitlab配置webhook

登录gitlab,在首页点击狐狸头的图标,点击项目名称ios/ios,左侧菜单下拉到最后,鼠标移动到settings上回出现一个菜单,点击Integrations,点击Integrations进入新的页面,在url栏写入 http://192.168.43.249:8080/buildByToken/build?job=bdqnwebtest&token=58eedf09f13a27bc17da54b9,在下边勾选push events,下拉页面,去掉Enable SSL verification前边的钩,最后点击add webhook,add之后下拉页面,可以看到刚才添加的webhook,点击test后边的下拉三角号,点击push events,测试一下,如果OK 会返回“Hook executed successfully:HTTP 201”,如果报403,请检查一下是否是Jenkins没有安装Gitlab Hook 和 Build Authorization TokenL两个插件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
添加完成后测试一下

在这里插入图片描述
在这里插入图片描述

gitlab配置webhook,报错 url is blocked Requests to the local network are not allowed。报错原因:gitlab 10.6 版本以后为了安全,不允许向本地网络发送webhook请求,如果想向本地网络发送webhook请求,则需要进行设置,设置步骤如下—> gitlab上点击扳手—点击左侧菜单最下边的settings—找到右侧的Outbound requests,点击expand—勾选下边的Allow requests to the local network from hooks and services 复选框,然后点击save

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

验证触发器正确性
在gitlab上进行文件上传,将文件上传到代码仓库上,操作如下:

往代码仓库新增一个txt文档,验证是否会自动触发Jenkins进行构建

  117  git clone git@gitlab.bdqn.cn:ios/bdqnapp.git
  118  cd bdqnapp/
  119  ls
  120  touch a.txt
  121  git add a.txt
  122  git commit -m "test file"
  123  git push origin master

因为项目小,所以构建非常快,可以查看一下终端输出结果,如下,显示从远程主机192.168.43.101启动,而192.168.43.101就是gitlab的IP地址

在这里插入图片描述

Jenkins的持续集成工作原理

在这里插入图片描述

这里是选择Gitlab作为git server。Gitlab的功能和Github差不多,但是是开源的,可以用来搭建私有git server,也提供非常强大的web GUI,比如开发者互相review源代码的时候就会很方便。

系统的工作流程大概分为以下几步:

1> 开发者将新版本push到git server (Gitlab)。

2> Gitlab随后触发jenkins master结点进行一次build。(通过web hook或者定时检测)

3> jenkins master结点将这个build任务分配给若干个注册的slave结点中的一个,这个slave结点根据一个事先设置好的脚本进行build。这个脚本可以做的事情很多,比如编译,测试,生成测试报告等等。这些原本需要手动完成的任务都可以交给jenkins来做。

4> 我们在build中要进行编译,图中使用了分布式编译器distcc来加快编译速度。

slave集群

应用场景:公司只有一台服务器而项目过多,性能不足。多个作业同时构建时候构建速度慢。项目构建资源分配上不合,需要多个节点分配进行构建作业。

添加slave节点

添加节点之前需要做免密登录,操作如下

[root@localhost ~]# ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? 
[root@localhost ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.43.249
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.43.249 (192.168.43.249)' can't be established.
ECDSA key fingerprint is SHA256:AAVS/5ORVvMlEZUxXtGwVCj39bPYFHcSmoIrBwgEU4w.
ECDSA key fingerprint is MD5:2f:57:89:03:9d:52:91:0d:9d:b5:6d:f9:ff:1b:2f:3d.
Are you sure you want to continue connecting (yes/no)? yes
/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: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.43.249's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@192.168.43.249'"
and check to make sure that only the key(s) you wanted were added.

其他步骤如下所示

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
添加完节点之后,可以看到主从的状态
在这里插入图片描述

manage jenkins—点击右侧manage nodes—点击左侧菜单的new node—node name 填写192.168.43.249-slave1并勾选下边的permanent agent,点击OK—在新出来的页面里已经有了nodename了,填写下一项description,这一项可以写上slave的ip,remote root directory填写/var/lib/jenkins,lable可以写个webitem,usage选择only build jobs with lable expressions matching this node,launch method就选择launch agent agents via SSH,下边的host写slave的ip,在credentials后边点击add,再点击Jenkins,在新弹出的页面里输入username为root,密码为slave开机密码,id为1,这个id是这边主给slave的序号而已,描述信息随便写,填写完成后点击add,出来之后在前边点击下拉三角号选择刚才添加的root***。 Host Key Verification Strategy选择manually trusted key Verification startegy,之后点击页面下侧的save,之后刷新一下页面,就可以看到主和从的状态

指定从节点运行作业

在主节点的jekins首页点击项目名称进入项目,然后点击左侧菜单的configure,点击右侧的general,往下拉找到Restrict where this project can be run并勾选,在新出现Label Expression框里输入192.168.43.249-slave1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

报错说明

It appears that your reverse proxy set up is broken.

进入管理界面就提示这个错误,这是因为Jenkins的URL没有写对,如果本机端口没有修改的话就是8080,那么Jenkins的URL就是本机ip:8080 修改过来就好了 修改方法: manage jenkins — configure system

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值