Jenkinsjava
Jenkins是一个开源软件项目。在企业的软件构建过程当中,JAVA的应用工程稍显复杂,因为复杂构建、和代码上线、而且服务的重启。整个过程下来,消耗的时间较多,Jenkins却能很好的集成maven的编译方式,且利用自动化的插件、和自定义开发脚本的支持,因此目前普遍的应用于JAVA工程的持续集成平台。linux
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.web
什么是集成正则表达式
指的是代码由编译、发布和测试、直到上线的一个过程apache
什么持续集成vim
高效的、持续性质的不断迭代代码的集成工做浏览器
如何高效准确的实现持续集成tomcat
必不可少的须要一套能自动化、而且可视化的平台来帮助咱们。安全
那么总结来看,Jenkins就是一个能够帮助咱们实现持续集成的平台。服务器
Jenkins的缺点:
Jenkins是开发人员开发得,没有照顾到运维人员得感觉。CMDB得对接是Jenkins得短板。
持续集成 (Continuous integration,简称CI)
持续交付(Continuous delivery)
持续部署(continuous deployment)
持续、自动地构建/测试软件项目。
监控软件开放流程,快速问题定位及处理,提示开放效率。
一个自动构建过程,包括自动编译、分发、部署和测试
一个代码存储库,即须要版本控制软件来保障代码的可维护性,同时做为构建过程的素材库,例如:SVN、Git代码库
一个jenkins持续集成服务器就是一个配置简单和使用方便的持续集成服务
持续集成中的任何一个环节都是自动化完成的,无需太多的人工干预,有利于减小重复的操做过程,能够节省时间、费用和工做量。
持续集成保障了每一个时间点上团队成员提交的代码是能成功集成的。任什么时候间点都能第一时间发现软件的集成问题,使任意时间发布可部署的软件成为了可能。
持续集成还能利于软件自己的发展趋势,这点在需求不明确或是频繁性变动的情景中尤为重要,持续集成的质量能帮助团队进行有效决策,同时创建团队对开发产品的信心。
对开发人员:写好代码,不须要本身进行源码编译、打包等工做,直接将代码分支存放在SVN、Git仓库便可。
对运维人员:减轻人工干预的错误率,同时解放运维人员繁杂的上传代码、手动备份、更新。
对测试人员:能够经过jenkins进行简单的代码及网站测试。
产品设计成型 -> 开发人员开发代码 -> 测试人员测试功能 -> 运维人员发布上线
Ø 传统上线流程:
Ø 自动化上线流程:
Ø Jenkins上线流程:
标准配置:
CPU: 8核心2.0GHz
内存: 16GB
硬盘: 100GB
网卡: 2*1000Mbps
最低配置:
CPU: 4核心2.0GHz
内存: 4GB
硬盘: 50GB
网卡: 100Mbps
Linux
CentOS 6.9
CentOS 7.4
JDK
JDK 1.8
准备一个块网卡支持千兆
下载Jdk、tomcat、Jenkins、maven
安装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
安装tomcat
# tar -xf apache-tomcat-7.0.90.tar.gz -C /opt
安装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
方法1:WAR包 直接启动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
方法2:RPM包yum安装 【不推荐yum安装】
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins.io/redhat-stable/jenkins.repo
yum –y install Jenkins
service jenkins start或systemctl start jenkins
RPM包rpm安装
# 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稳定版。
若是是我的使用能够选择最新版
说明:
安装Maven程序是为了编译代码打包代码,调用方法是Jenkins经过Maven插件调用Maven服务。因此想使用相关服务除了本地部署服务外,还须要在jenkins上安装插件。
安装必备插件
安装可选插件
Maven Integration plugin
Subversion Plug-in
浏览器登陆Jenkins,进入“系统管理” -> “Global Tool Configuration”,配置jdk和maven后保存:
执行
java -jar jenkins.war --httpPort=8099
执行
systemctl start jenkins
建立一个maven项目
新建的任务页面,点击“当即构建
丢弃旧的构建:
保持构建的天数 【超过必定天数就删除】
保持构建的最大个数 【超过必定数量就删除】
填写svn信息
填写maven参数
1)配置tomcat服务器基线
2)tomcat版本路径统一
3)jdk版本路径统一
4)项目名与端口号统一
在工做的过程当中因为分工合做,由于工做内容的不一样可能分为不一样的组织里,可是jenkins默认的权限管理并无用户组的概念,因此咱们须要第三方插件的支持来解决问题。
注意:切换不一样管理权限的方式 这个插件会导至之前配置好的权限丢失,因此能够用备份来弥补。
jenkins权限管理,实现不一样用户组显示对应视图views中不一样的jobs
安装Role Strategy Plugin插件
注意:
1)job_read只加Overall的Read权限
2)job_create只加job的create权限
3)project roles中Pattern正则表达式跟脚本里的不同,好比过滤TEST开头的jobs,要写成TEST.*而不是TEST*
按环境或项目将权限分组,再将用户划分到对应的权限便可。以下图所示
设置全局角色(全局角色能够对jenkins系统进行设置与项目的操做)
设置项目角色(项目角色只能对项目进行操做)
开发人员只能看到所属本身的项目
管理员能够看到所有项目信息
问题1:jenkins 配置安全策略admin没有Overall/Read权限
解决方案:
命令:vim /root/.jenkins/config.xml
<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服务
问题2:admin密码更改后忘记
解决方案:
删除Jenkins目录下config.xml文件中下面代码,并保存文件。