CI/CD
概念:
持续集成(ContinuousIntegration,简称CI),是一种软件开发实践,在实践中指只要代码有变更,就自动运行构建和测试,反馈运行结果。通俗一点来讲,就是绑定项目的代码仓库,SVN或者Git库,自动抓取新的代码,完成构建,甚至执行测试,部署到服务器。
优点:
- 能够快速暴露错误。
- 保证代码提交质量。
- 定位错误更加容易。
- 降低整体集成风险。
- 促进产品快速迭代。
流程:
1、用户提交代码到Git仓库
2、Jenkins服务器从指定Git仓库拉去代码,使用maven编译打包。
3、Jenkins服务器ssh连接应用服务器,将打包好的war或者jar包传送到应用服务器指定位置,例如 tomcat/webapps
4、Jenkins服务器在应用服务器远程执行脚本文件 重启应用服务器tomcat 或者 在应用服务器执行 java -jar 启动当前项目
Jenkins安装
Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。
安装步骤:
-
在Linux上准备一个tomcat容器用于部署jenkins
-
将jenkins.war放入tomcat容器的webapps文件夹中
-
为了防止tomcat端口冲突,将部署jenkins的tomcat端口修改
-
在conf/server.xml中将启动端口8080改为8081,停止端口8005改为8015
-
启动tomcat /bin/startup.sh
-
浏览器访问 http://xxxx:8081/jenkins
-
输入密码进行登录
cat /root/.jenkins/secrets/initialAdminPassword
-
先不安装插件,点叉即可
Git安装
Git下载地址
https://mirrors.edge.kernel.org/pub/software/scm/git/
安装所需的依赖
yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel
yum install -y gcc perl-ExtUtils-MakeMaker
安装Git
tar -zxvf git-2.10.0.tar.gz # 解压
yum remove git //删除系统已经有的git ,这个一定要执行
cd /usr/local/soft/git-2.10.0 // 进入到git目录
make prefix=/usr/local/git all //编译
make prefix=/usr/local/git install // 安装
配置环境变量
vim /etc/profile
export GIT_HOME=/usr/local/git
export PATH=$PATH:$GIT/bin
source /etc/profile # 重新加载
git --version # 测试
Maven安装
解压
tar -zxvf apache-maven-3.6.3.tar.gz # 解压
配置环境变量
vim /etc/profile
export MAVEN_HOME=/usr/local/maven/apache-maven-3.6.3
export PATH=$PATH:$MAVEN_HOME/bin
source /etc/profile # 重新加载
mvn --version # 测试
配置本地仓库
<localRepository>/usr/local/maven/repo</localRepository>
配置阿里云镜像加速
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
Jenkins配置
插件安装
-
由于远程下载比较缓慢,此处将之前下载好的plugins,直接拖拽到root/.jenkins目录下即可
-
检查插件是否安装成功
部署项目
- 创建本地项目
- 使用Git推送到远程仓库
- 在jenkins中创建一个项目
-
配置Git拉取代码的路径
-
配置Maven构建命令
-
准备一个用于部署项目的tomcat容器
# 在tomcat/conf/tomcat-users.xml中配置用户 <role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="manager-jmx"/> <role rolename="manager-status"/> <user username="tomcat" password="tomcat" roles="manager-gui,manager-script,manager-jmx,manager-status"/> # 注意:此处配置后,如果不行,需要将META-INF下的Value标签注释掉
-
配置jenkins部署项目
-
配置自动部署
-
设置git自动发送请求触发自动部署
-
测试CI/CD