目录
一、持续集成环境Jenkins安装
1.安装Jenkins需要依赖JDK
2.获取软件包 jenkins
3.修改jenkins配置
4.启动jenkins
5.获取admin密码
6.添加管理员账户,并进入Jenkins后台
二、持续集成环境Jenkins插件管理
1.修改Jenkins插件下载地址
2.下载中文汉化插件
3.持续集成环境Jenkins用户权限管理
4.持续集成环境Jenkins凭证管理
5.持续集成环境Maven安装和配置
6.持续集成环境Tomcat安装和配置
三、Jenkins构建Maven项目
1.Jenkins构建的项目类型介绍
2.Jenkins项目构建类型自由风格项目
3.Jenkins项目构建类型Maven项目构建
4.Jenkins项目构建类型Pipeline流水线项目构建
一、持续集成环境Jenkins安装
1.安装Jenkins需要依赖JDK
关闭防火墙机制
[root@jekins ~]# systemctl stop firewalld[root@jekins ~]# systemctl disable firewalld[root@jekins ~]# setenforce 0
安装路径:/usr/lib/jvm
[root@jekins ~]# yum install java-1.8.0-openjdk* -y[root@jekins ~]# java -versionopenjdk version "1.8.0_322"
2.获取软件包 jenkins
[root@jekins ~]# ls #上传jekins软件包jenkins-2.277.4-1.1.noarch.rpm[root@jekins ~]# rpm -ivh jenkins-2.277.4-1.1.noarch.rpm #进行安装
3.修改jenkins配置
[root@jekins ~]# vim /etc/sysconfig/jenkins...JENKINS_USER="root" #修改用户为rootJENKINS_PORT="8888" #修改端口为8888
4.启动jenkins
[root@jekins ~]# systemctl start jenkins [root@jekins ~]# netstat -natp | grep 8888tcp6 0 0 :::8888 :::* LISTEN 70126/java
浏览器访问服务:192.168.100.129:8888
5.获取admin密码
进入入门界面,选择插件安装
6.添加管理员账户,并进入Jenkins后台
二、持续集成环境Jenkins插件管理
Jenkins本身不提供很多功能,我们可以通过使用插件来满足我们的使用。例如从Gitlab拉取代码,使用Maven构建项目等功能需要依靠插件完成。接下来演示如何下载插件。
1.修改Jenkins插件下载地址
Jenkins国外官方插件地址下载速度非常慢,所以可以修改为国内插件地址
把Jenkins官方的插件列表下载到本地,接着修改地址文件,替换为国内插件地址
[root@jekins ~]# cd /var/lib/jenkins/[root@jekins jenkins]# cd updates/[root@jekins updates]# lsdefault.json hudson.tasks.Maven.MavenInstaller[root@jekins updates]# sed -i 's/http://updates.jenkins- ci.org/download/https://mirrors.tuna.tsinghua.edu.cn/jenkins/g' default.json && sed -i 's/http://www.google.com/https://www.baidu.com/g' default.json
再把Manage Plugins点击Advanced,把Update Site改为国内插件下载地址
更改完设置后,重启jenkins
2.下载中文汉化插件
下载插件
重启jenkins
3.持续集成环境Jenkins用户权限管理
可以利用Role-based Authorization Strategy 插件来管理Jenkins用户权,限安装Role-based Authorization Strategy插件
下载完成之后,回到首页
回到首页,查找安装的插件
添加三个角色,点击Manage Roles
baseRole:该角色为全局角色。这个角色需要绑定Overall下面的Read权限,是为了给所有用户绑定最基本的Jenkins访问权限。
role1:该角色为项目角色。使用正则表达式绑定"apple.*",意思是只能操作apple开头的项目。
role2:该角色也为项目角色。绑定"orange.*",意思是只能操作orange开头的项目。
回到主页,找到Manges Users
创建用户
给用户分配角色
kali用户分别绑定baseRole和role1角色
jack用户分别绑定baseRole和role2角色
设置管理和项目
创建项目测试权限
最后测试结果
4.持续集成环境Jenkins凭证管理
凭据可以用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker私有仓库密码等,以便Jenkins可以和这些第三方的应用进行交互。
安装Credentials Binding插件
安装插件后,Manage Jenkins多了"凭证"菜单,在这里管理所有凭证
安装Git插件和Git工具
为了让Jenkins支持从Gitlab拉取源码,需要安装Git插件以及在CentOS7上安装Git工具。
服务器安装Git工具
[root@jekins ~]# yum install git -y
第一种用户密码类型
创建凭证
填写之前的Gitlab的账号和密码
测试凭证是否可用
创建一个FreeStyle项目:新建Item->FreeStyle Project->确定
找到"源码管理"->"Git",在Repository URL复制Gitlab中的项目URL
保存配置后,点击构建”Build Now“ 开始构建项目
第二种SSH密钥类型
SSH免密登录示意图
使用root用户生成公钥和私钥
[root@jekins ~]# ssh-keygen -t rsaGenerating 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)? y[root@jekins ~]# cd .ssh/[root@jekins .ssh]# cat id_rsa.pub #查看公钥地址ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA5Ym1riZUEP/wFm7fcVKehIAiVOhHdv3tZdy3eahfQW230iOKmiqADvaVTHJQkvOvDP/pulNKfXisL2to7+xVuU/nyDsrs5WPhYBPi1Hc7TK0Bl6T2EKM9IgqijdFJdx0okeAEScSvACQ9NMwVVtDZvantru8KvA5soGYvPEmCIkA8Ev0W6F6UGC1PfXHbmpZDycwSqfIPvPxvo1O5+3HFyfYbVk141fnBTHjF2WW4J/OGZikk+Aeobt/x5bW7w6oNYZq/QpxI8t9+3vjelIWiWi8AGIfu2MzgODwdIcrxCmB254/dLk3PiYIEoq2Zl8nXRNF47NHnB0JAZm3kpx9 root@jekins
把生成的公钥放在Gitlab中
以root账户登录gitlab->点击头像->Settings->SSH Keys,复制刚才id_rsa.pub文件的内容到这里,点击"Add Key"
在Jenkins中添加凭证,配置私钥
在Jenkins添加一个新的凭证,类型为"SSH Username with private key",把刚才生成私有文件内容复制过来
测试凭证是否可用
新建"test02"项目->源码管理->Git,这次要使用Gitlab的SSH连接,并且选择SSH凭证
同样尝试构建项目,如果代码可以正常拉取,代表凭证配置成功!
5.持续集成环境Maven安装和配置
在Jenkins集成服务器上,我们需要安装Maven来编译和打包项目。安装Maven
[root@jekins ~]# tar -xzf apache-maven-3.6.2-bin.tar.gz #解压[root@jekins ~]# mkdir -p /opt/maven #创建目录[root@jekins ~]# mv apache-maven-3.6.2/* /opt/maven #移动文件
配置环境变量
[root@jekins ~]# vim /etc/profile...export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk #末尾粘贴三行代码export MAVEN_HOME=/opt/mavenexport PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin[root@jekins ~]# source /etc/profile #配置生效
全局工具配置关联JDK和Maven
Jenkins->Global Tool Configuration->JDK->新增JDK,配置如下:
Jenkins->Global Tool Configuration->Maven->新增Maven,配置如下:
添加jenkins全局变量
Manage Jenkins->Configure System->Global Properties ,添加三个全局变量
JAVA_HOME、M2_HOME、PATH+EXTRA
修改Maven的settings.xml
[root@jekins ~]# mkdir /root/repo #创建本地仓库目录[root@jekins ~]# vim /opt/maven/conf/settings.xml...
测试Maven是否配置成功
使用之前的gitlab密码测试项目,修改配置
构建->增加构建步骤->Execute Shell
开始构建
构建成功
6.持续集成环境Tomcat安装和配置
关闭防火墙机制
[root@tomcat ~]# systemctl stop firewalld [root@tomcat ~]# systemctl disable firewalld[root@tomcat ~]# setenforce 0
安装Tomcat相关服务
[root@tomcat ~]# yum install java-1.8.0-openjdk* -y #安装JDK[root@tomcat ~]# tar -xzf apache-tomcat-8.5.47.tar.gz #解压软件包[root@tomcat ~]# mkdir -p /opt/tomcat #创建目录[root@tomcat ~]# mv /root/apache-tomcat-8.5.47/* /opt/tomcat #移动文件[root@tomcat ~]# /opt/tomcat/bin/startup.sh #启动tomcat[root@tomcat ~]# netstat -natp |grep 8080tcp6 0 0 :::8080 :::* LISTEN 11958/java
浏览器测试
配置Tomcat用户角色权限,默认情况下Tomcat是没有配置用户角色权限的
后续Jenkins部署项目到Tomcat服务器,需要用到Tomcat的用户,所以修改tomcat以下配置
[root@tomcat ~]# vim /opt/tomcat/conf/tomcat-users.xml...
为了能够刚才配置的用户登录到Tomcat,还需要修改以下配置,默认不许允许远程访问,现在需要注释掉
[root@tomcat ~]# vim /opt/tomcat/webapps/manager/meta-INF/context.xml #注释掉
重启Tomcat,访问测试
[root@tomcat ~]# /opt/tomcat/bin/shutdown.sh #停止服务[root@tomcat ~]# /opt/tomcat/bin/startup.sh #开启启动
再进行测试
三、Jenkins构建Maven项目 1.Jenkins构建的项目类型介绍
Jenkins中自动构建项目的类型有很多,常用的有以下三种:自由风格软件项目、Maven项目、流水线项目
每种类型的构建其实都可以完成一样的构建过程与结果,只是在操作方式、灵活度等方面有所区别,在实际开发中可以根据自己的需求和习惯来选择。(PS:个人推荐使用流水线类型,因为灵活度非常高)
2.Jenkins项目构建类型自由风格项目
创建项目
配置源码管理,使用ssh方式从gitlab拉取代码,配置完成后,点击应用并保存。
开始构建Build Now
刚才创建的项目,点击设置进行编译打包
构建->添加构建步骤->Executor Shell,设置完成后,点击应用并保存
把项目部署到远程的Tomcat里面,需要安装 Deploy to container插件
构建后操作
点击"Build Now",开始构建过程
浏览器访问
部署成功后,访问项目
演示改动代码后的持续集成,IDEA中源码修改并提交到gitlab
3.Jenkins项目构建类型Maven项目构建
安装Maven Integration插件,重启jenkins
开始创建Maven项目
项目配置
验证是否能成功再IDEA里修改代码,push到远程仓库
gitlab先查看
验证成功后,开始构建
浏览器验证
4.Jenkins项目构建类型Pipeline流水线项目构建
Pipeline概念:Pipeline,简单来说,就是一套运行在 Jenkins 上的工作流框架,将原来独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排和可视化的工作。
Pipeline好处:
代码:Pipeline以代码的形式实现,通常被检入源代码控制,使团队能够编辑,审查和迭代其传送流程。
持久:无论是计划内的还是计划外的服务器重启,Pipeline都是可恢复的。
可停止:Pipeline可接收交互式输入,以确定是否继续执行Pipeline。
多功能:Pipeline支持现实世界中复杂的持续交付要求。它支持fork/join、循环执行,并行执行任务的功能。
可扩展:Pipeline插件支持其DSL的自定义扩展 ,以及与其他插件集成的多个选项。
如何创建 Jenkins Pipeline
Pipeline 脚本是由 Groovy 语言实现的,但是我们没必要单独去学习 Groovy
Pipeline 支持两种语法:Declarative(声明式)和 scripted Pipeline(脚本式)语法
Pipeline 也有两种创建方法:可以直接在 Jenkins 的 Web UI 界面中输入脚本;也可以通过创建一个 Jenkinsfile 脚本文件放入项目源码库中
安装Pipeline插件
插件安装完成后,会出现相应的模块
#Declarative声明式-Pipeline
流水线->选择HelloWorld模板
stages:代表整个流水线的所有执行阶段。通常stages只有1个,里面包含多个stage。
stage:代表流水线中的某个阶段,可能出现n个。一般分为拉取代码,编译构建,部署等阶段。
steps:代表一个阶段内需要执行的逻辑。steps里面是shell脚本,git拉取代码,ssh远程发布等任意内容,编写一个简单声明式Pipeline:
修改上面的代码
pipeline { agent any stages { stage('pull code) { steps { echo 'pull code' } } stage('build porject') { steps { echo 'build porject' } } stage('deploy item') { steps { echo 'deploy item' } } }}
点击构建,可以看到整个构建过程
#scripted Pipeline脚本式-Pipeline
继续返回配置,这次选择"scripted Pipeline"
重新构建项目
编写一个简单的脚本式Pipeline
声明式代码生成
再设置里找到流水线语法
开始构建项目
编译构建代码生成
回到流水线语法界面
重新设置配置文件
再次构建项目
部署代码生成
回到流水线语法
重新修改配置文件
再构建项目
验证构建效果
现在IDEA编写代码,再push到远程
再构建进行验证
浏览器最后查看效果
Pipeline的另一种构建方式Pipeline script from SCM
刚才我们都是直接在Jenkins的UI界面编写Pipeline代码,这样不方便脚本维护,脚本容易丢失,建议把Pipeline脚本放 在项目中(一起进行版本控制)
在项目根目录建立Jenkinsfile文件
然后就可以把当前文件Jenkinsfile的文件提交到gitlab上
重新配置web_demo_pipeline项目
验证效果
Push完成后,开始构建
浏览器验证效果
发现中文的字符没有显示出来变成了乱码
结果验证