Jenkins研究

Jenkins研究

1.   简介

Jenkins是一个开源软件项目。在企业的软件构建过程中,JAVA的应用工程稍显复杂,由于复杂构建、和代码上线、并且服务的重启。整个过程下来,消耗的时间较多,Jenkins却能很好的集成maven的编译方式,且利用自动化的插件、和自定义开发脚本的支持,所以目前广泛的应用于JAVA工程的持续集成平台。

Jenkins is an automation engine with an unparalleled plugin ecosystem to support all of your favorite tools in your delivery pipelines, whether your goal is continuous integration, automated testing, or continuous delivery.


l  什么是集成

指的是代码由编译、发布和测试、直到上线的一个过程

l  什么持续集成

高效的、持续性质的不断迭代代码的集成工作

l  如何高效准确的实现持续集成

必不可少的需要一套能自动化、并且可视化的平台来帮助我们。

那么总结来看,Jenkins就是一个可以帮助我们实现持续集成的平台。

 

Jenkins的缺点:

Jenkins是开发人员开发得,没有照顾到运维人员得感受。CMDB得对接是Jenkins得短板。


1.1.  名称解释

l  持续集成 Continuous integration简称CI

l  持续交付(Continuous delivery

l  持续部署(continuous deployment

1.2.  Jenkins目的

l  持续、自动地构建/测试软件项目。

l  监控软件开放流程,快速问题定位及处理,提示开放效率。

1.3.  持续集成组件

l  一个自动构建过程,包括自动编译、分发、部署和测试

l  一个代码存储库,即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库,例如:SVNGit代码库

l  一个jenkins持续集成服务器就是一个配置简单和使用方便的持续集成服务

1.4.  持续集成的意义

l  持续集成中的任何一个环节都是自动化完成的,无需太多的人工干预,有利于减少重复的操作过程,可以节省时间、费用和工作量。

l  持续集成保障了每个时间点上团队成员提交的代码是能成功集成的。任何时间点都能第一时间发现软件的集成问题,使任意时间发布可部署的软件成为了可能。

l  持续集成还能利于软件本身的发展趋势,这点在需求不明确或是频繁性变更的情景中尤其重要,持续集成的质量能帮助团队进行有效决策,同时建立团队对开发产品的信心。

l  对开发人员:写好代码,不需要自己进行源码编译、打包等工作,直接将代码分支存放在SVNGit仓库即可。

l  对运维人员:减轻人工干预的错误率,同时解放运维人员繁杂的上传代码、手动备份、更新。

l  对测试人员:可以通过jenkins进行简单的代码及网站测试。

1.5.  产品发布流程

产品设计成型 -> 开发人员开发代码 -> 测试人员测试功能 -> 运维人员发布上线

Ø  传统上线流程:

11.png

 

Ø  自动化上线流程:

111.png

Ø  Jenkins上线流程:

11111.png


1.1.  硬件要求

        l  标准配置:

        CPU      8核心2.0GHz

        内存:     16GB

        硬盘:     100GB

        网卡:     2*1000Mbps

        l  最低配置:

        CPU      4核心2.0GHz

        内存:     4GB

        硬盘:     50GB

        网卡:     100Mbps

1.2.  系统要求

        Linux

        l  CentOS 6.9

        l  CentOS 7.4

        JDK

        l  JDK 1.8

1.3.  网络要求

l  准备一个块网卡支持千兆

2.   Jenkins 安装

2.1.  准备环境

l  下载JdktomcatJenkinsmaven

l  安装Jdk

                # tar -xf jdk-8u181-linux-x64.tar.gz –C /usr/local/

                # vim /etc/profile

                export JAVA_HOME=/usr/local/java/jdk1.8.0_181

                export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/tools.jar

                export PATH=$JAVA_HOME/bin:$PATH

                # source /etc/profie

                测试一下

                # java -version

l  安装tomcat

                # tar -xf apache-tomcat-7.0.90.tar.gz -C /opt

l  安装maven

                # tar zxvf apache-maven-3.5.4-bin.tar.gz

                # vim /etc/profile

                export M2_HOME=/usr/local/apache-maven-3.5.4

                export PATH=$M2_HOME/bin:$PATH

                # source /etc/profie

                测试一下

                # mvn -v

2.2.  安装Jenkins

l  方法1WAR 直接启动war

                wget http://mirrors.shu.edu.cn/jenkins/war-stable/2.121.3/jenkins.war

                java -jar jenkins.war --httpPort=8088

tomcat+WAR

                cp jenkins.war /usr/local/apache-tomcat-7.0.90/webapps/ROOT

                /usr/local/apache-tomcat-7.0.90/bin/startup.sh

 

l  方法2RPMyum安装 【不推荐yum安装】

                wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins.io/redhat-stable/jenkins.repo

                yum –y install Jenkins

                service jenkins startsystemctl start jenkins

RPMrpm安装

                # rpm -ivh jenkins-2.32.3-1.1.noarch.rpm

                # 下载地址:【选择redhat-stable稳定版】

                # 官方下载地址:https://pkg.jenkins.io/redhat-stable/

                # 国内下载地址:https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/

 

如果是公司使用选择(LTS) stable稳定版。

如果是个人使用可以选择最新版



2.3.  安装插件

说明:

安装Maven程序是为了编译代码打包代码,调用方法是Jenkins通过Maven插件调用Maven服务。所以想使用相关服务除了本地部署服务外,还需要在jenkins上安装插件。

2222.png



l  完成必备的插件

l  安装可选插件

Maven Integration plugin

Subversion Plug-in

image.png

2.4.  配置Jenkins

l  jdk/maven

浏览器登录Jenkins,进入系统管理” -> “Global Tool Configuration”,配置jdkmaven后保存:

 image.png

image.png


2.5.  服务启动

l  执行java -jar jenkins.war --httpPort=8099

l  执行systemctl start jenkins

3.   Jenkins自动构建

l  创建一个maven项目

image.png


l  新建的任务页面,点击立即构建

image.png

image.png


        丢弃旧的构建:

        保持构建的天数 【超过一定天数就删除】

        保持构建的最大个数 【超过一定数量就删除】

        填写svn信息

   image.png

   填写maven参数

   image.png


4.   Jenkins自动部署

        1)配置tomcat服务器基线

        2tomcat版本路径统一

        3jdk版本路径统一

        4)项目名与端口号统一

   image.png


5.   Jenkins权限管理

在工作的过程中由于分工合作,因为工作内容的不同可能分为不同的组织里,但是jenkins默认的权限管理并没有用户组的概念,所以我们需要第三方插件的支持来解决问题。

注意:切换不同管理权限的方式 这个插件会导至以前配置好的权限丢失,所以可以用备份来弥补。


jenkins权限管理,实现不同用户组显示对应视图views中不同的jobs

l  安装Role Strategy Plugin插件

image.png

image.png

        

        注意:

        1job_read只加OverallRead权限

        2job_create只加jobcreate权限

        3project rolesPattern正则表达式跟脚本里的不一样,比如过滤TEST开头的jobs,要写成TEST.*而不是TEST*

         

        按环境或项目将权限分组,再将用户划分到对应的权限即可。如下图所示

   image.png

l  设置全局角色(全局角色可以对jenkins系统进行设置与项目的操作)

image.png


l  设置项目角色(项目角色只能对项目进行操作)

image.png

  开发人员只能看到所属自己的项目

  image.png

  管理员可以看到全部项目信息

  image.png

6.   jenkins常见问题

        问题1jenkins 配置安全策略admin没有Overall/Read权限

        解决方案:

        命令:vim /root/.jenkins/config.xml

   image.png

        <permission>hudson.model.Hudson.Administer:anonymous</permission>

        <permission>hudson.model.Hudson.ConfigureUpdateCenter:anonymous</permission>

        <permission>hudson.model.Hudson.Read:anonymous</permission>

        <permission>hudson.model.Hudson.RunScripts:anonymous</permission>

        <permission>hudson.model.Hudson.UploadPlugins:anonymous</permission>

        重启jenkins服务

         

        问题2admin密码更改后忘记

        解决方案:

        删除Jenkins目录下config.xml文件中下面代码,并保存文件。

   image.png















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章