前言:上一篇文章整理了git的部署和使用,这章主要复习持续集成软件Jenkins,这个技术现在在云计算方面也是有应用的,同时也是越高级越智能的软件代表。
1、概念简介
1)jenkins是什么
Jenkins是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)的基于web界面的平台。允许持续集成和持续交付项目,无论用的是什么平台,可以处理任何类型的构建或持续集成。
2)为什么使用jenkins
Jenkins是一种使用Java编程语言编写的开源持续集成软件工具,用于实时测试和报告较大代码库中的孤立更改。 Jenkins软件使开发人员能够快速找到并解决代码库中的缺陷,并自动进行构建测试。
3)CI/CD是什么
CI(Continuous integration,中文意思是持续集成)是一种软件开发时间。持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。
CD(Continuous Delivery, 中文意思持续交付)是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境。
4)jenkins的优势是什么
Jenkins的优势包括:
在开发环境的早期阶段, 错误跟踪很容易。
提供大量的插件支持。
对代码的迭代改进。
构建失败会在集成阶段进行缓存。
对于每个代码提交更改, 都会生成一个自动生成报告通知。
为了将构建报告的成功或失败通知开发人员, 它与LDAP邮件服务器集成在一起。
实现持续集成的敏捷开发和测试驱动的开发。
通过简单的步骤, 即可自动完成maven发布项目。
5)实现持续集成/持续发布的产品的流程概述?
开发(git) -->git主库-->jenkins(git+jdk+tomcat+maven打包+测试)-->ssh-->发布到tomcat服务器
注:本文非特殊说明情况下操作均于192.168.189.150(Jenkins)上操作
2、Jenkins基础配置
2.1、基础环境
角色 | IP |
---|---|
Git,模拟公司内部版本控制系统 | github代替 |
部署Jenkins | 192.168.189.150 |
模拟对外的业务服务器 | 192.168.189.151 |
可以配置一个centos7的源,感觉清华源比阿里源稳定一些
[root@localhost yum.repos.d]# ls
Centos_base.repo local.repo.bak
[root@localhost yum.repos.d]# cat Centos_base.repo
[tsinghua-centos7]
name=CentOS-$releasever - Tsinghua
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.6.1810/os/$basearch/
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.6.1810/os/$basearch/RPM-GPG-KEY-CentOS-7
enabled=1
[root@localhost yum.repos.d]# rpm --import https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.6.1810/os/x86_64/RPM-GPG-KEY-CentOS-7
所需软件下载地址
jdk:Java 存档下载 — Java SE 8 | Oracle 中国
maven:Maven – Download Apache Maven
git:Index of /pub/software/scm/git/
tomcat:Apache Tomcat® - Welcome!
Jenkins:jenkins.war
2.2、安装Git
[root@localhost yum.repos.d]# yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker fontconfig
#源码编译安装git
[root@localhost ~]# ls
anaconda-ks.cfg apache-maven-3.8.8-bin.tar.gz git-2.9.5.tar.gz jdk-11.0.16_linux-x64_bin.tar.gz
[root@localhost ~]# tar xf git-2.9.5.tar.gz
[root@localhost ~]# ls
anaconda-ks.cfg git-2.9.5 jdk-11.0.16_linux-x64_bin.tar.gz
apache-maven-3.8.8-bin.tar.gz git-2.9.5.tar.gz
[root@localhost ~]# cd git-2.9.5
[root@localhost git-2.9.5]# make prefix=/usr/local/git all
#all是开启git所有功能,类似安装前勾选
[root@localhost git-2.9.5]# make prefix=/usr/local/git install
#安装
[root@localhost git-2.9.5]# vim /etc/profile.d/jenkins_tools.sh
[root@localhost git-2.9.5]# cat /etc/profile.d/jenkins_tools.sh
PATH=$PATH:$HOME/bin:/usr/local/git/bin
#写这里是为了一会cat方便看,平时直接写到profile即可
[root@localhost git-2.9.5]# source /etc/profile.d/jenkins_tools.sh
[root@localhost git-2.9.5]# git --version
git version 1.8.3.1
#注意此处git版本与下载版本并不相同,是因为一部分镜像即使最小化安装也会预装git
[root@localhost git-2.9.5]# yum list | grep git.x86
#找到1.8.3的全称
[root@localhost git-2.9.5]# yum remove git.x86_64
[root@localhost git-2.9.5]# source /etc/profile.d/jenkins_tools.sh
[root@localhost git-2.9.5]# git --version
git version 2.9.5
#版本恢复正常
注:
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。
/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
2.3、安装jdk,maven
[root@localhost ~]# tar xf jdk-11.0.16_linux-x64_bin.tar.gz
[root@localhost ~]# tar xf apache-tomcat-9.0.79.tar.gz
[root@localhost ~]# ls
anaconda-ks.cfg apache-tomcat-9.0.79.tar.gz jdk-11.0.16
apache-maven-3.8.8-bin.tar.gz git-2.9.5 jdk-11.0.16_linux-x64_bin.tar.gz
apache-tomcat-9.0.79 git-2.9.5.tar.gz
[root@localhost ~]# mv jdk-11.0.16 /usr/local/java
[root@localhost ~]# mv apache-tomcat-9.0.79 /usr/local/tomcat
[root@localhost ~]# vim /etc/profile.d/java.sh
[root@localhost ~]# cat /etc/profile.d/java.sh
TOMCAT_HOME=/usr/local/tomcat
JAVA_HOME=/usr/local/java
PATH=$TOMCAT_HOME/bin:$JAVA_HOME/bin:$PATH
export TOMCAT_HOME JAVA_HOME PATH
[root@localhost ~]# source /etc/profile.d/java.sh
[root@localhost ~]# java -version
java version "11.0.16" 2022-07-19 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.16+11-LTS-199)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.16+11-LTS-199, mixed mode)
[root@localhost ~]# ls
anaconda-ks.cfg apache-maven-3.8.8-bin.tar.gz jdk-11.0.16_linux-x64_bin.tar.gz
[root@localhost ~]# tar -zxvf apache-maven-3.8.8-bin.tar.gz -C /usr/local/
[root@localhost ~]# mv /usr/local/apache-maven-3.8.8/ /usr/local/maven
[root@localhost ~]# vim /etc/profile.d/jenkins_tools.sh
[root@localhost ~]# cat /etc/profile.d/jenkins_tools.sh
PATH=$PATH:$HOME/bin:/usr/local/git/bin
export M2_HOME=/usr/local/maven
export M2=$M2_HOME/bin
PATH=$M2:$PATH:$HOME/bin:/usr/local/git/bin
export MAVEN_HOME=/usr/local/maven
export PATH=${MAVEN_HOME}/bin:$PATH
[root@localhost ~]# mvn --version
Apache Maven 3.8.8 (4c87b05d9aedce574290d1acc98575ed5eb6cd39)
Maven home: /usr/local/maven
Java version: 11.0.16, vendor: Oracle Corporation, runtime: /usr/local/java
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"
2.4、上传Jenkins
[root@localhost ~]# ls
anaconda-ks.cfg git-2.9.5 jenkins.war
apache-maven-3.8.8-bin.tar.gz git-2.9.5.tar.gz
apache-tomcat-9.0.79.tar.gz jdk-11.0.16_linux-x64_bin.tar.gz
[root@localhost ~]# rm -rf /usr/local/tomcat/webapps/*
[root@localhost ~]# cp jenkins.war /usr/local/tomcat/webapps/
2.5、启动tomcat
[root@localhost ~]# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
使用浏览器访问如下
按照提示输入密钥,点击继续
3、Jenkins前台配置
选择“安装推荐的插件”等待插件安装
注:这个位置可能会出现部分模块安装失败(红色),重试也会失败,这是因为和插件中心网络连接的问题,这里可以修改下插件中心,改为国内地址,插件安装位置/root/.jenkins/plugins/,安装失败可以通过外部下载后上传到此文件夹,实现插件安装,建议成功安装一次后将该文件夹下文件打包保存,以后部署直接使用。部分模块安装失败不影响进程推进,但会影响后期测试,此时排查难度已经接近无限大了。
vim ~/.jenkins/hudson.model.UpdateCenter.xml
#将url项替换如下
http://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
vim ~/.jenkins/updates/default.json
#此处替换命令如下
:% s/www.google.com/www.baidu.com/g
:% s/updates.jenkins.io\/download/mirrors.tuna.tsinghua.edu.cn\/jenkins/g
安装完成
创建账号继续
点击保存并完成,完成安装
4、Jenkins系统配置
4.1、管理选项
4.2、提示信息
4.3、全局变量设置
下拉找到系统管理
勾选环境变量然后新增
保存后自动回到主页
4.4、全局工具配置
4.4.1、maven配置
4.4.2、添加jdk
4.4.3、添加git
4.4.4、添加maven
4.4.5、ssh配置
配置150与151ssh免密
[root@localhost ~]# ssh-keygen
[root@localhost ~]# ssh-copy-id -i 192.168.189.151
[root@localhost ~]# ssh root@192.168.189.151
Last login: Sat Jun 8 22:08:14 2024 from 192.168.189.1
[root@localhost ~]# ip a | grep 192.168.189.15
inet 192.168.189.151/24 brd 192.168.189.255 scope global noprefixroute ens33
[root@localhost ~]# exit
登出
Connection to 192.168.189.151 closed.
[root@localhost ~]#
取出刚刚生成的密钥,按下图配置,测试成功后保存弹出
5、Jenkins插件管理
5.1、插件管理中心
通过插件管理中心可以直观地看到这里有可更新、可选未安装插件、已安装插件;可以通过过滤快速查找
安装插件
5.2、优化maven
修改前
修改后
修改内容如下(修改为阿里源)
<mirror>
<id>central</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
6、自动化构建
6.1、创建一个maven工程
6.2、构建maven项目
6.3、源码管理
这里使用公共的互联网仓库gitee代替公司内部后端开发仓库(如果是私有仓库,这里需要建立credentials身份认证)
6.4、设置触发器
6.5、设置打包程序(maven)
手动添加手动添加Goals and options:clean package -Dmaven.test.skip=true
6.6、构建后操作
在构建后设置中 选择:(send build artifacts over ssh)通过SSH发送构建工作
配置完保存自动弹出
source file的路径解释:构建之后,在jenkins服务器上是可以自动看到war包的。(该路径不需要创建)
# ls /root/.jenkins/jobs/testjob1/builds/target/*.war
这里需要到被推送服务器上提前部署路径,下方代码框内操作在151上完成
[root@localhost ~]# mkdir -p /jenkins/war
[root@localhost ~]# mkdir -p /jenkins/sh
[root@localhost ~]# vim /jenkins/sh/deploy.sh
[root@localhost ~]# cat /jenkins/sh/deploy.sh
echo "FINISH build job" > /tmp/finish.sh
[root@localhost ~]# ls /tmp/
hsperfdata_root
ks-script-PSPgvR
systemd-private-5b02e3efb14a4000adb47697e94b3a70-chronyd.service-S01q6J
vmware-root_8724-2832207218
vmware-root_8730-2865761147
vmware-root_8750-2824015062
yum.log
[root@localhost ~]# chmod +x /jenkins/sh/deploy.sh
6.7、执行构建
点击进度条的时间戳,进入 任务记录页面
此处如果失败可回头检查控制台信息和前面所有设置
7、查看构建结果
此处检查在151(tomcat服务器)上执行
[root@localhost ~]# ls /jenkins/war/
easy-springmvc-maven.war
#gitee上代码已经全部拉下
[root@localhost ~]# cat /tmp/finish.sh
FINISH build job
#预设脚本已经执行
8、常用操作总结
1)重启Jenkins
http://ip:8080/jenkins/restart
2)“编码问题”错误,在Tomcat–>conf–>server.xml文件中修改即可
[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml
<?xml version="1.0" encoding="UTF-8"?>
3)构建个人的github库时,缺失pom文件
可以用其他公共库的pom文件拷贝
后记:Jenkins这个主要用于公司内部运维环境,重点放在与开发协调上。