目录
一、CI/CD
1、CI简介
2、CD简介
二、Jenkins
1、Jenkins概述
2、Jenkins目标
3、Jenkins特性
三、Jenkins部署
1、部署git(GIT官网 https://git-scm.com/ )
2、部署jdk
3、部署maven
4、部署Tomcat
5、部署Jenkins
6、管理插件(下面安装的插件会随着Jenkins的版本而有不同的情况)
7、检查错误配置
8、Jenkins系统设置
9、SSH设置
10、新建任务
11、构建任务
持续集成(Continuous Integration, CI): 代码合并,构建,部署,测试都在一起,不断地执行这个过程,并对结果反馈。
持续部署(Continuous Deployment, CD): 部署到测试环境、预生产环境/灰度环境、生产环境。
持续交付(Continuous Delivery, CD): 将最终产品发布到生产环境、给用户使用。
Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,主要用于持续、自动的构建的一些定时执行的任务。
Jenkins用Java语言编写,可在Tomcat等流行的容器中运行,也可独立运行。
jenkins通常与版本管理工具(SCM)、构建工具结合使用;常用的版本控制工具有SVN、GIT。jenkins构建工具有Maven、Ant、Gradle。
持续、自动地构建/测试软件项目。
监控软件开放流程,快速问题定位及处理,提高开发效率。
- 易于安装:不需要安装、不需要数据库,只需要通过java -jar jenkins.war或部署到一个servlet容器中
- 易于配置:所有配置都可能通过Jenkins提供的web界面完成,当然如果你喜欢,也可以通过手动修改.xml文件进行配置
- 测试报告:生成JUnit或TestNG的测试报告,集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知
- 文件识别:Jenkins能跟踪每次构建生成哪些jar包以及使用哪个版本的jar包
- 分布式构建:支持Jenkins能够让多台计算机一起构建/测试
- 插件支持:Jenkins可以通过第三方插件扩展,也可以根据团队需要开发插件
192.168.172.177 部署Jenkins
192.168.172.178 充当tomcat网站服务器
- 安装依赖包
[root@localhost ~]# yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
- git官网下载最新版本GIT
//两种方法下载git //第一种: wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.37.4.tar.gz //第二种 下载git-2.37.4.tar.gz,然后再上传到虚拟机 [root@localhost ~]# rz -be [root@localhost ~]# ls anaconda-ks.cfg git-2.37.4.tar.gz
- 安装git
//解压并切换目录 [root@localhost ~]# tar xf git-2.37.4.tar.gz [root@localhost ~]# cd git-2.37.4/ //编译源码包 [root@localhost git-2.37.4]# make prefix=/usr/local/git all //源码安装 [root@localhost git-2.37.4]# make prefix=/usr/local/git install //修改环境变量 [root@localhost git-2.37.4]# vim /etc/bashrc PATH=$PATH:$HOME/bin:/usr/local/git/bin //在最后追加此内容 [root@localhost git-2.37.4]# source /etc/bashrc //测试是否安装成功 [root@localhost git-2.37.4]# git --version git version 1.8.3.1
关于basherc和profile
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次!!!登录!!!时,该文件被执行。并从/etc/profile.d目录的配置文件中搜索shell的设置。
/etc/bashrc:为每一个运动bash shell的用户执行此文件。当bash shell被打开时,该文件被读取。
(下载地址 Java Archive Downloads - Java SE 8u211 and later)
- 下载软件
//我这里下载的是jdk-8u241-linux-x64.tar.gz,注意不能用jdk9和10的
//在Oracle官网下载之后,rz上传tar包就可以了
- 解压安装
//解压到/usr/local下 [root@localhost ~]# tar xvzf jdk-8u241-linux-x64.tar.gz -C /usr/local/ [root@localhost ~]# cd /usr/local/ [root@localhost local]# ls bin etc games git include jdk1.8.0_241 lib lib64 libexec sbin share src //重命名 [root@localhost local]# mv jdk1.8.0_241 jdk [root@localhost local]# ls bin etc games git include jdk lib lib64 libexec sbin share src
- 修改环境变量
[root@localhost local]# vim /etc/bashrc //追加以下内容 JAVA_HOME=/usr/local/jdk export PATH=$PATH:$JAVA_HOME/bin [root@localhost local]# source /etc/bashrc
- 测试jdk
[root@localhost local]# java -version java version "1.8.0_241" Java(TM) SE Runtime Environment (build 1.8.0_241-b07) Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)
- 下载和解压Maven
[root@localhost ~]# wget https://mirrors.aliyun.com/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz [root@localhost ~]# tar xvzf apache-maven-3.5.4-bin.tar.gz -C /usr/local/ [root@localhost ~]# cd /usr/local/ [root@localhost local]# ls apache-maven-3.5.4 etc git jdk lib64 sbin src bin games include lib libexec share [root@localhost local]# mv apache-maven-3.5.4 maven [root@localhost local]# ls bin etc games git include jdk lib lib64 libexec maven sbin share src
- 修改环境变量
[root@localhost local]# vim /etc/bashrc export M2_HOME=/usr/local/maven export M2=$M2_HOME/bin PATH=$M2:$PATH:$HOME/bin:/usr/local/git/bin export JAVA_HOME=/usr/local/jdk export PATH [root@localhost local]# source /etc/bashrc
- 测试Maven
[root@localhost local]# mvn -version Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T14:33:14-04:00) Maven home: /usr/local/maven Java version: 1.8.0_241, vendor: Oracle Corporation, runtime: /usr/local/jdk/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"
- 官网下载tomcat
//这里我是在阿里云镜像站下载的
[root@localhost ~]# wget https://mirrors.aliyun.com/apache/tomcat/tomcat-9/v9.0.68/bin/apache-tomcat-9.0.68.tar.gz
- 解压部署
[root@localhost ~]# tar zxvf apache-tomcat-9.0.68.tar.gz -C /usr/local/ [root@localhost ~]# mv /usr/local/apache-tomcat-9.0.68/ /usr/local/tomcat [root@localhost ~]# ls /usr/local/ bin games include lib libexec sbin src etc git jdk lib64 maven share tomcat
- 定义tomcat所需环境变量
//在/etc/profile或者/etc/bashrc里面写都可以 [root@localhost ~]# vim /etc/profile CATALINA_HOME=/usr/local/tomcat export CATALINA_HOME [root@localhost ~]# source /etc/profile
- 启动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/jdk Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Using CATALINA_OPTS: Tomcat started.
- 测试tomcat
http://192.168.172.177:8080/ 注意关闭防火墙
- 关闭tomcat
[root@localhost ~]# systemctl stop firewalld [root@localhost ~]# /usr/local/tomcat/bin/shutdown.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/jdk Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Using CATALINA_OPTS:
- 配置tomcat的角色和用户
本次用不到角色和用户,所以我就没有配置
//在tomcat目录conf文件夹下tomcat-users.xml
- 官网下载Jenkins (jenkins.war)
//我这里是在阿里云镜像站下载的 [root@localhost ~]# wget https://mirrors.aliyun.com/jenkins/war/2.316/jenkins.war
- 部署jenkins.war到tomcat下
[root@localhost ~]# cp jenkins.war /usr/local/tomcat/webapps/ [root@localhost ~]# ls /usr/local/tomcat/webapps/ docs examples host-manager jenkins.war manager ROOT
- 启动tomcat,注意启动tomcat会自动解压webapps下的war包
[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/jdk Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Using CATALINA_OPTS: Tomcat started.
- 登录Jenkins
我在登录Jenkins时遇到了报错,根据报错信息提示执行了下列操作再刷新成功进去了
[root@localhost ~]# vim /usr/local/tomcat/bin/startup.sh //在里面添加一行 export CATALINA_OPTS="-Djava.awt.headless=true" [root@localhost ~]# /usr/local/tomcat/bin/startup.sh
http://192.168.172.177:8080/jenkins,会有一个加载过程,比较慢,稍微等一会会看到如下的界面
//根据提示,查看自己的密码 [root@localhost ~]# cat /root/.jenkins/secrets/initialAdminPassword 6b1e3bbfdff845aa864f3bf998bb3944
选择suggested的插件进行下载
等待安装完成
这里安装插件的时候如果有下载失败的,不要慌,记下名字后面再找它算账,看第6步管理插件
创建用户,自己创建
欢迎界面Jenkins的密码如果忘记了可以重置它
/urs/local/tomcat/bin/shutdown.sh //关闭tomcat rm -rf /usr/local/tomcat/webapps/jenkins* rm -rf ~/.jenkins* cp jenkins.war /usr/local/tomcat/webapps/ 启动tomcat即可访问Jenkins
简介:我们配置的是git+maven方式的自动化部署,所以git和manven的相关插件是必须的,还有一个ssh用于机器间的文件传送。
前面如果有下载失败的插件,在插件管理中搜名字,安装就可以了。
- 安装插件Deploy to container
作用:支持自动化将代码部署到tomcat容器
安装过程
或者点击Install without restart,会出现下面的界面
- 安装插件Maven Intergration
- 安装git相关3个插件
- 安装插件:Publish Over SSH
插件都安装好之后重启一下Jenkins
点击“系统管理”
如果有“编码问题”错误,在tomcat-->conf-->server.xml文件中修改即可
如果有“反向代理设置有误”错误,请忽略
- 配置jdk目录
- 配置maven并保存
目的:Jenkins服务器上的maven将开发产生的*.war包通过SSH自动推送到远程tomcat服务器上,需要手工配置ssh key,配合自动化推送。
- 在Jenkins服务器准备密钥认证
[root@localhost ~]# ssh-keygen //按三次回车即可 [root@localhost ~]# ssh-copy-id -i 192.168.172.178 [root@localhost ~]# ssh 192.168.172.178 Last login: Mon Oct 24 07:35:55 2022 from 192.168.172.1 [root@localhost ~]# ip a | grep inet inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host inet 192.168.172.178/24 brd 192.168.172.255 scope global noprefixroute dynamic ens33 inet6 fe80::73ad:d1bd:7f45:d790/64 scope link tentative noprefixroute dadfailed inet6 fe80::ca34:eb06:7b9e:45e1/64 scope link noprefixroute [root@localhost ~]# exit logout Connection to 192.168.172.178 closed.
- 在Jenkins上配置ssh信息
//准备密钥,粘贴到Jenkins系统 [root@localhost ~]# cat ~/.ssh/id_rsa -----BEGIN RSA PRIVATE KEY----- MIIEogIBAAKCAQEAuTCqOyyqFleOzOhp+MDHi4cRwuwKusYQhiyDyQxxRVeSB3Rp G5uVd4CHwyTLzJp8ifwSgdzN6y4hsSpkPQ08JbPTpxgRqOjAum8qajDB66haeV5l GhAtg+awXKop8hQy9HZZdurI9JDGihUz9/Cjt2xYV+qkvQ5M7K8tsmFmdQjJbv/L ZXz9goGAY0dA1dYdCcqcJcWVCjTxKNOwEnujZxGLmmHkVFdobiWHtqqbmb2/DZyd KH085ohmtIhYyeIINcjFPrMWgW8Uk3u6mNt0rxnyyWPhsvWoVmX8rcIiB5zQ5lcm fciVbBs5NhSFfGWSHHHur6tFGWHPkyWySCgPFwIDAQABAoIBAB7CzKQDqUUIyjmT KXceXob4qqScHLQljj0bS9Crdm00PJdsaMEjONKe0O5DQG7+Ak3RRym3CaVVBlet WPUjK6h/lFqfDt/luY2+RWdaLfv8/PpICbcolMbiHM1nnowNeuFMf1PXcAXfvnrV RsqaeDdRkeMYoMCejXyLJKYKs8Agqwh3UjMIuhlF8KSUshfKpmn7zt2cmrpOO7pv sHM+VSKBWG4uRZEs2vgl8Fi3SMWnlj6YGOJxSSrXLV9cGJGfqT0dlqrP+z7cajVK +xNxSkr2v8cDGDJOB1nZZrz+r96DQVoscSqhsve0XS6D1Uf0VbrCyXPbzqWri0u1 bVb0f2ECgYEA6EuW9sReq2ooWF92LVQe03vRsz998+y3tm0lm96G63SCSsqsCaFC Zo+GUog3oYkF2484uMFfTu7fDRAitMc6Mblb/V3yV/K8pmtN/3KrucstBhB04aAN wptJA3ViDGDENUyxEkeVb9DdopnbrzjQiDpR8AUoBu0DN1BnHg1LnHkCgYEAzBaD n6l38FBRBYcN06vvHEtGQkaRjpwgSqlZ0nngG/d8myw1IZdSnfK7CiGGFY62Anvv u7TnwcDoOmZTfNasqXURfrt809fvaCTDqci5NqC87whaBMqQYJVsEasCC6cOClQ7 qLdg92MZWib+AO2FYlOOYD5+216YnFK3+EKIBA8CgYBIu6JBEasysMKBKSKvfq9I OHSoUzD0tyGulO45p6tG/evtzxeezEcmJbpBDTWd9nFHFckE0EcvR8u/I1Y6lEa8 WvVal5fRwccftGlvmk/6lIs8Ytq16o9kZ4qs8owIpCPLLIAk4RUBNbyvtMz8SCXD Ab+2D2dBA+UF5L7kwfTywQKBgBttyzLiK+R4Zus/Q3R3XyOGWmL96QIpqY1fRVss VhpsIKsaPenN1KS1wr2R09uB2qRq08V+gsdfjdaLeh0FHR+JRFisChLOqrZsen+P IpVc9QeLL84FC3Jvop6dRSEbyp9IwtviCX42K2oaY3jsc0jLwg7dV19UT15zH5aW GoGxAoGAWGuRKYgLqfUoklJT1hC86kgrzTXg32mVkJpBLCZlLvJKjyhEUtE3gS6e PUGB5alrn4ojcemiqtQfufCxgfDGNF9SaQdJVnnRZ3iGNBHhlw1BXnFBsPxa4HuU q4ii/FfJsbxYqoXvKsqr8DQVSxDnC/XDViBRXFb8Gc/Qze2ZEME= -----END RSA PRIVATE KEY-----
- 创建任务
- 定义名称和类型
- 设置Maven
两种方法:公有git仓库和私有git仓库,我用的是共有git仓库的方法
设置描述
选择版本控制器和仓库地址
设置触发器(保持默认)
设置构建(编译打包)
构建后操作
保存
构建任务完成之后可以去192.168.172.178 充当tomcat网站的服务器上去查看war包是否下载好
ls /jenkins/war/