使用Jenkins来构建GIT+Maven项目
前言
最近写了一篇博客是关于 使用 Jenkins来构建SVN+Maven项目 ,这里使用的的代码版本工具是 SVN
,但是事实上也有很多公司使用 GIT
来进行代码管理,那么我们如何使用 Jenkins
去自动发布 GIT
+ Maven
项目呢?
正文
Jenkins
Jenkins 是一个开源的、可扩展的持续集成、交付、部署的基于 web
界面的平台。允许持续集成和持续交付项目,无论用的是什么平台,可以处理任何类型的构建或持续集成。
通常我们使用 Jenkins
主要实现以下功能:
- 持续集成 指的是,频繁地(一天多次)将代码集成到主干。将软件个人研发的部分向软件整体部分交付,频繁进行集成以便更快地发现其中的错误。
- 持续交付 指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。
- 持续部署 是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。持续部署的目标是,代码在任何时刻都是可部署的,可以进入生产阶段。
使用Jenkins来构建GIT+Maven项目
1.安装GIT
其实很多系统都会自带 git
工具,但是由于自带的 git
版本太低,无法满足 jenkins
对 git
工具版本的需求,所以建议升级 git
后,再进行 jenkins
的安装和配置。
第一步:安装所需的依赖
yum install curl - devel expat - devel gettext - devel openssl - devel zlib - devel
yum install gcc perl - ExtUtils - MakeMaker
yum install perl - ExtUtils - MakeMaker package
第二步:卸载原有GIT
yum remove - y git
git -- version
第三步:安装新的GIT
cd / usr / local / src / wget https : / / www . kernel . org / pub / software / scm / git / git - 2.15 .1 . tar . xz
tar - vxf git - 2.15 .1 . tar . xz
cd git - 2.15 .1 make prefix = / usr / local / git all
make prefix = / usr / local / git install
echo "export PATH=$PATH:/usr/local/git/bin" >> / etc / profile
source / etc / profile
git -- version
第四步:创建GIT链接
ln - s / usr / local / git / bin / git - upload - pack / usr / bin / git - upload - pack
ln - s / usr / local / git / bin / git - receive - pack / usr / bin / git - receive - pack
2.配置git免密登陆
第一步:jenkins服务器生成公钥和密钥
/root/.ssh/id_rsa.pub
:公钥,通常用于加密会话密钥。/root/.ssh/id_rsa
:密钥,用于验证数字签名。/root/.ssh/authorized_keys
:存放其他服务器的公钥。
执行下面的命令后将自动生成对应文件
ssh - keygen - t rsa
第二步:将jenkins生成的公钥 id_rsa.pub
加入到git服务器 authorized_keys
文件中
chattr - ia authorized_keys
chmod 777 authorized_keys
vim authorized_keys
第三步:获取密钥 id_rsa
的内容
cat / root / . ssh / id_rsa
3.安装与配置Jenkins
第一步:下载war安装包
官方下载地址: https://www.jenkins.io/download/
第二步:安装并配置Jenkins
nohup java - jar jenkins . war &
jenkins 默认的路径: IP:8080
,进入管理界面后根据提示进行配置
- 根据提示从指定的位置获取初始的管理员密码
- 配置一个用户
- 安装系统推荐
Jenkins
插件
第三步:根据需要安装Jenkins插件
在 jenkins——Manage Jenkins——插件管理 中安装以下插件:
- Publish Over SSH :用于通过
ssh 英语考试
方式连接远程服务器,从而实现代码远程推送。
第四步:配置本地工具
在 jenkins——Manage Jenkins——Global Tool Configuration 中配置 Maven
、 JDK
和 GIT
:
- 使用
Maven
来构建项目 JDK
为项目提供了运行环境GIT
为代码的版本控制仓库。
Maven
配置 JDK
的配置 GIT
的配置
第五步:配置系统配置
在 jenkins——Manage Jenkins——System Configuration 中配置远程服务器,这个服务器即为项目的运行容器。
第六步:配置GIT密钥
在 jenkins-凭据-系统-全局凭据 中配置 git
密钥
第七步:创建一个新任务,配置源码管理、构建和构建后操作
源码管理
构建
构建后操作
run.sh :脚本用于启动 spring-dubbo-producer.jar
APP_NAME = spring - dubbo - producer . jar
path = `pwd`
#使用说明 , 用来提示输入参数 usage ( ) { echo "Usage: sh 执行脚本.sh [start|stop|restart|status]" exit 1 } #检查程序是否在运行 is_exist ( ) { pid = `ps - ef | grep $APP_NAME | grep - v grep | awk '{print $2}' `
#如果不存在返回 1 , 存在返回 0 if [ - z "${pid}" ] ; then return 1 else return 0 fi } #启动方法 start ( ) { is_exist if [ $ ? - eq "0" ] ; then
echo "${APP_NAME} is already running. pid=${pid} ." else source / etc / profile
nohup java - jar $APP_NAME > $path / logs . txt 2 > & 1 & fi } #停止方法 stop ( ) { is_exist if [ $ ? - eq "0" ] ; then
kill - 9 $pid else echo "${APP_NAME} is not running" fi } #输出运行状态 status ( ) { is_exist if [ $ ? - eq "0" ] ; then
echo "${APP_NAME} is running. Pid is ${pid}" else echo "${APP_NAME} is NOT running." fi } #重启 restart ( ) { stop
start } #根据输入参数 , 选择执行对应方法 , 不输入则执行使用说明 case "$1" in "start" ) start ; ; "stop" ) stop ; ; "status" ) status ; ; "restart" ) restart ; ; * ) usage ; ; esac
第七步:构建项目,进行验证
构建项目
验证
访问自己的项目的界面进行验证,我这里以 knife4j
为例: ip:8080/doc.html