Jenkins
1.Jenkins概述
是一个开源的、提供友好操作界面的持续集成(CI)工具,主要用于持续集成、自动的构建软件测试项目、监控一些定时执行的任务。Jenkins
用Java
语言编写,可在tomcat
等流行的servlet
容器中运行,也可独立运行。
Jenkins
常与版本管理工具(SCM)、构建工具结合使用,常用的版本控制工具有 SVN
、Git
、Jenkins
构建工具有Maven
、Ant
、Gradle
。
CI/CD–持续集成/持续发布
开发(git)-->主库-->jenkins(git+jdk+tomcat+maven打包+测试)-->发布到tomcat服务器
jenkins程序
Jenkins
是帮我们将代码进行统一的编译打包、还可以放到tomcat
容器中进行发布。
意思是我们通过配置,将以前,编译、打包、上传、部署到tomcat
中的过程交由enkins
,Jenkins
通过给定的代码地址URL,将代码拉取到其宿主机服务器(Jenkins
的安装位置),进行编译、打包和发布到web容器中。
Jenkins特性
易于安装
易于配置
测试报告
文件识别
分布式构建
任务(job)和构建(build)
2.系统集成工具
Jenkins和Hudson
目前最流行的一款只需集成及自动化部署工具。
Jenkins
和Hudson
之间的关系:2009年,甲骨文收购了 Sun 并继承了Hudson
代码库。在2011年年初,甲骨文和开源社区之间的关系破裂,该项目被分成两个独立的项目:
jenkins:由大部分原始开发人员组成
Hudson:由甲骨文公司继续管理
所以Jenkins
和Hudson
是两款非常相似的产品
3.部署方案
手动部署流程
开发人员提交/推送代码到代码库,我们从代码库中检出源码然后打包成war包最后部署到tomcat服务器上。
自动化署流程
开发人员向代码库推送或者提交代码后会触发钩子程序,钩子程序就会通知Jenkins
,然后jenkins
就会调用git/svn
的插件去代码库获取源码,然后再调用Maven
插件去打包成war
包,最后调用Deploy to web container
插件部署到tomcat
应用服务器上。
搭建上述持续集成环境可以把整个构建、部署过程自动化,很大程度上减轻工作量。对于程序员的日常开发来说不会造成任何额外负担——把自己代码提交上去后,服务器上运行的马上就是最新版本。
4.Jenkins+svn自动部署
环境准备:
三台服务器
- Jenkins服务器(192.168.10.26)
- JDK
- tomcat
- Maven
- Jenkins
- 也可以用 yum 直接安装
- svn服务器(192.168.10.27)
- 项目服务器(192.168.10.28)
Jenkins部署方式:
war包
rpm包
yum
docker
yum部署Jenkins
# 安装openjdk1.8因为Jenkins是基于Java开发的
yum install -y java-1.8.0-openjdk
# 获取jenkins源文件
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
# 导入jenkins公钥
rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
# yum安装jenkins
yum install -y jenkins
# 启动
systemctl start jenkins
#查看jenkins日志获取admin密码,初始化会用到admin密码
[root@localhost ~]# less /var/log/jenkins/jenkins.log
Please use the following password to proceed to installation:
58a959b68f7f4533afb7974f949291a7
#现在可以使用浏览器访问ip:8080
# 卸载
[root@jenkins ~]# rpm -e jenkins
[root@jenkins ~]# find / -iname jenkins | xargs -n 1000 rm -rf
# JDK配置环境变量
vim /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-1.el7_9.x86_64
export JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
tomcat部署Jenkins
# 下载tomcat安装包
wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.24/bin/apache-tomcat-9.0.24.tar.gz
# 解压
tar xf apache-tomcat-9.0.24.tar.gz -C /usr/local/
# 创建软链接
cd /usr/local
ln -s apache-tomcat-9.0.24/ tomcat
# 下载Jenkins的war包到webapps
cd /usr/local/tomcat/webapps/
wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war
# 启动tomcat
/usr/local/tomcat/bin/startup.sh
# 在浏览器访问Jenkins
http://192.168.10.26:8080/jenkins
svn安装使用
# 安装svn
[root@subversion ~]# yum -y install subversion
# 穿件版本库目录
[root@subversion ~]# mkdir /var/svn/repository -p
# 在版本库目录下创建具体的项目目录
[root@subversion repository]# mkdir pro_oa
[root@subversion repository]# mkdir pro_erp
# 创建svn的版本库
[root@subversion repository]# cd pro_oa/
[root@subversion pro_oa]# svnadmin create .
[root@subversion pro_oa]# ls
conf db format hooks locks README.txt
# 配置文件说明及修改
# conf目录
authz文件是权限控制文件
passwd是帐号密码文件
svnserve.conf SVN服务配置文件
# 设置帐号密码 vim passwd
在[users]块中添加用户和密码,格式:帐号=密码,如:username=123456
# 设置权限 vim authz
在末尾添加如下代码:
1. [/]
2. username=rw # 代表这个用户对svn的根目录有读写权限
# 修改svnserve.conf文件 vi svnserve.conf
打开下面的几个注释:
anon-access = none # 匿名用户不可访问
auth-access = write # 授权用户可写
password-db = passwd # 使用哪个文件作为账号文件
authz-db = authz # 使用哪个文件作为权限文件
realm = /var/svn/svntest # 认证空间名,版本库所在目录
# 启动svn版本库
svnserve -d -r /var/svn/repository(停止SVN命令 killall svnserve)
# 测试
# 在另一台服务器上检出我们的项目目录
[root@jenkins ~]# svn co svn://192.168.10.27:/pro_oa
# 文件已同步过来
[root@jenkins ~]# cd pro_oa/
[root@jenkins ~/pro_oa]# ls
123.txt a.txt test1.txt
# 创建一个文件测试提交
[root@jenkins ~/pro_oa]# touch haha.txt
[root@jenkins ~/pro_oa]# svn add haha.txt
[root@jenkins ~/pro_oa]# svn commit -m "test"
正在增加 haha.txt
传输文件数据.
提交后的版本为 4
# 然后去Windows上检出项目目录
# 安装svn客户端
svn checkout svn://192.168.10.27/pro_oa
# 可以同步过来文件
# 以后那边操作了然后提交后,另一边执行svn up 就可以同步版本
maven安装
# 官网下载安装包 http://maven.apache.org/download.cgi
# 解压
tar xf apache-maven-3.8.1-bin.tar.gz -C /usr/local/
# 配置环境变量
vim /etc/profile
export MAVEN_HOME=/usr/local/apache-maven-3.8.1
export PATH=$MAVEN_HOME/bin:$PATH
source /etc/profile
# 验证
mvn -v
配置
安装插件 Publish over SSH 、Subversion
系统配置,如果没有这个选项,注意是否安装此插件
新建工程
配置工程
测试
# 创建一个新文件,提交到svn
[root@localhost data]# echo 'test' >test.txt
[root@localhost data]# svn add test.txt
[root@localhost data]# svn commit -m 'test'
[root@localhost data]# ls
test.txt
# 在远程服务器上查看
[root@subversion server]# cat test.txt
test
# 发现已经同步过来了
5. jenkins+gittee自动化部署nginx
安装完成之后配置
1、服务器放置项目位置克隆 Gitee 上项目
cd /
git clone https://gitee.com/whell/firsthouse.git # 我项目位置/firsthouse
2、检查 jenkins 配置配置文件,将执行用户改成 root,不然后面可能出现执行 shell 没有权限
vim /etc/sysconfig/jenkins # 编辑文件
JENKINS_USER="root" # 改成root
systemctl restart jenkins.service # 重启服务
安装必要插件
- gitee
- Publish over SSH
- Deploy to container Plugin
配置gitee
配置远程服务器
全局安全配置
全局工具配置
新建一个工程
配置工程
测试
自己弄一个nginx网站
在Windows上修改123.txt并提交
浏览器上刷一下就同步过来了