jekins介绍部署以及springboot项目构建实践
- 1.基本信息
- 1.1 jenkins介绍
- 1.2 CI/CD
- 3.安装部署
- 3.1 安装jdk环境
- 3.2 Tomcat环境
- 3.3 Jenkins环境
- 3.4 git客户端安装
- 3.5 安装maven
- 4.基础配置
- 4.1 系统配置
- 4.2 配置gitlab
- 4.2 配置Publish over SSH
- 5. 项目配置
- 5.1 新建项目
- 5.2 配置源码管理项
- 5.3 配置Build方式
- 5.4 Post-build Actions配置
- 6. 项目构建
- 7. 参考资料
经常听到有团队使用持续集成持续交付工具进行项目的自动构建、测试、部署等,在2019年度也有幸使接触到部分操作,当时仅作为使用和了解并未考虑到如何自己搭建一套进行实战使用。目前阶段也在接触到所谓的中台工具,一键打包部署等操作。在此背景下,抽时间对线上资料进行学习总结梳理,选择开源工具jenkins,结合maven、gitlab等,实际操作搭建真实的环境,并构建简单springboot工程,完整成功的打通了一个项目的上传代码、自动构建、自动部署流程。本文一方面整理汇总了相关的资料理论知识,另一方面详细介绍了构建的各个过程,即可为后续的持续深入学习做准备,亦可为后来者提供参考借鉴。文中不免疏漏之处,望读者不吝指正,不胜感激!
1.基本信息
1.1 jenkins介绍
Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。
Jenkins特点:
开源免费;
跨平台,支持所有的平台;
master/slave支持分布式的build;
web形式的可视化的管理页面;
安装配置超级简单;
tips及时快速的帮助;
已有的200多个插件
1.2 CI/CD
CI(Continuous integration,中文意思是持续集成)是一种软件开发时间。持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。借用网络图片对CI加以理解。
CD(Continuous Delivery, 中文意思持续交付)是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境。下图反应的是CI/CD 的大概工作模式。
3.安装部署
3.1 安装jdk环境
jdk-8u241-linux-x64
3.2 Tomcat环境
Tomcat8.5.76 下载路径
下载:
wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.76/bin/apache-tomcat-8.5.76.tar.gz
解压、启动
3.3 Jenkins环境
Jenkins 2.319.3
下载:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/2.319.3/jenkins.war
复制到tomcat/webapps下
3.4 git客户端安装
参考centos7安装部署gitlab中centos系统安装git客户端内容
3.5 安装maven
下载
wget https://dlcdn.apache.org/maven/maven-3/3.8.4/binaries/apache-maven-3.8.4-bin.tar.gz
复制到/usr/local/maven下,解压
创建本地仓库文件路径 mkdir repo
修改配置文件,本地仓库地址以及阿里云仓库镜像
<localRepository>/usr/local/maven/repo</localRepository>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
配置环境变量/etc/profile
export MAVEN_HOME=/usr/local/apache-maven-3.6.3
export PATH=$PATH:$MAVEN_HOME/bin
启动tomcat后,访问192.168.109.128:8080/jenkins,admin默认密码在提示页路径下:/root/.jenkins/secrets/initialAdminPassword中
输入密码跳转,插件安装,关闭,可暂时不安装
4.基础配置
4.1 系统配置
配置JDK、Git、Maven,
jenkins所在服务器如已配置jdk、git、maven系统配置,此处可略过
4.2 配置gitlab
Jenkins连接gitlab需要配置access token,所以先在gitlab上生成access token,后将该token配置在Jenkins上。(access token只需配置一次,后续每个工程直接使用即可)
1、安装GitLab插件
2、gitlab 生成token
3、配置系统Gitlab连接信息
登陆Jenkins,点击“系统管理”->“系统设置”-> “gitlab”,配置如下
4.2 配置Publish over SSH
1、参考上文安装gitlab插件流程,安装Publish over SSH插件,该插件在于自动部署时远程登录部署目标机器以及执行脚本使用;
2、生成密钥
现在两台服务器,一台你本地的jenkins虚拟机A,一台部署服务目标服务器B
A服务器
//生成密钥对,执行过程需要输入Passphrase,记住该参数
ssh-keygen
//按照提示输入B密码就可以了
ssh-copy-id -i /root/.ssh/id_rsa.pub root@B服务器ip
//如果报错密钥验证失败,可以删除密钥后,重新用ssh-keygen 生成密钥对重复操作即可
3、jenkins—dashboard—configuration找到Publish over SSH模块,输入上面对应参数
Path key不需要填写,
Key是jenkins所在服务器的id_rsa,
Passphrase为密钥生成过程输入的密码
4、配置ssh server
name:自己命名即可,
hostname:目标服务器域名或服务器,默认端口22
username:用户名
remote directory:配置根目录即可,后文项目可具体配置jar包传递目录
点击 test configuration 可测试配置,出现success 后,保存即可
5. 项目配置
5.1 新建项目
new Item,构建maven项目
5.2 配置源码管理项
选择git,credentials既可选择上文配置的accesstoken,也可以选择账户密码方式
5.3 配置Build方式
选择maven打包指令
5.4 Post-build Actions配置
1、构建后配置,涉及打包后文件上传路径、脚本执行等操作
选择send build artifacts over ssh
2、配置细节
name选择前文配置的ssh名称,
source file为打包后jar包路径,
remove prefix为打包jar包路径,
remote directory为远程部署机器路径,
exec command为jar包上传后的启动jar包命令,可为shell脚本命令
配置完成保存即可,
为确保exec command中shell脚本在实际的构建部署过程中执行,需注意
#!/bin/bash
下方增加一行
source /etc/profile
在启动命令前增加一行
BUILD_ID=dontKillMe
nohup java -jar test_demo.jar > test.log 2>&1 &
3、启动脚本范文
#!/bin/bash
source /etc/profile
DATE=$(date +%Y%m%d)
DIR=/usr/local/project-jar
JARFILE=test-01-1.0-SNAPSHOT.jar
if [ ! -d $DIR/backup ];then
mkdir -p $DIR/backup
fi
cd $DIR
pid=`ps -ef|grep $JARFILE | grep -v grep | awk '{print }'`
echo "pid: $pid "
if [ $pid ];
then
echo "pid: $pid"
kill -9 $pid
echo "服务停止成功"
else
echo "未找到对应服务"
fi
#mv $JARFILE backup/$JARFILE$DATE
BUILD_ID=dontKillMe
nohup java -jar $JARFILE > out.log &
if [ $? = 0 ];then
sleep 30
tail -n 50 out.log
fi
cd backup/
ls -lt|awk 'NR>5{print $NF}'|xargs rm -rf
6. 项目构建
1、点击项目名称,进入项目界面
2、点击 Build Now即可开始构建,左下方可查看构建历史
3、绿色为构建成功,黄色为构建失败,通过console output可查看构建详细信息进行调试
4、构建中常见问题
1)ssh问题,ssh验证不通过,无法向远程目标服务器上传jar包
2)远程jar包上传目标服务器路径问题
3)exec command中shell脚本执行问题
详细参考上文配置过程细节即可避免