使用Jenkins配置+Maven的自动化构建

前言

Jenkins是一个开源的持续集成工具,应用Jenkins搭建持续集成环境,可以进行自动构建、自动编译和部署,非常方便。

在服务器比较少的情况下,Jenkins的优势并不明显,但是随着项目发展,服务器数量的增加,Jenkins的优势就会凸显出来,可以很好的提高效率,减少很多人工操作。

现在公司的开发都是使用Git管理代码,Maven管理多模块和项目依赖,因此,实现自动化打包,构建迫在眉睫。

安装Jenkins

  1. 安装包
    官方下载地址:https://jenkins.io/download/
    点击进去按照平台对应下载安装即可
    tips:网上有jenkins源,添加如下
wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins
sudo /etc/init.d/jenkins start 
  1. Jenkins.war
    直接放在tomcat容器内即可,更加方便(推荐,原因有:简单,跟随tomcat启动发布,减少不必要的开支,坑少,我两种都安装过,直接安装坑不少)

部署Jenkins

按照提示把密文输入即可进入,界面如下:
这里写图片描述

然后接下来会填写用户信息,安装基本插件,提示照做就好。

这里写图片描述
点击系统管理的全局tool配置,如下:

jdk git maven 配置

这里写图片描述

git项目构建(三张图即可)

这里写图片描述
这里写图片描述
这里写图片描述

Jenkins部署到tomcat

方法一:插件
1.
这里写图片描述
2. 插件配置(配置用户)
这里写图片描述
这里写图片描述
3. tomcat配置

找到tomcat-->config-->tomcat-users.xml

打开后在<tomcat-users></tomcat-users>之间增加如下用户信息:


<role rolename="manager-gui"></role>

<role rolename="manager-script"></role>

<user username="tomcat" password="admin" roles="manager-gui,manager-script"/>

方法二:脚本(自行修改我没有测试)

#!/bin/sh
#defined 
TOMCAT_HOME="/usr/java/tomcat/apache-tomcat-7.0.67/"
ID=`ps -ef | grep java | grep tomcat|awk '{print $2}'`
echo $ID 
echo "kill tomcat"
kill -9 $ID
echo "remover war file"
cd "$TOMCAT_HOME"/webapps
rm -rf JavaWeb-0.0.1-SNAPSHOT
rm -rf JavaWeb-0.0.1-SNAPSHOT.war
echo "copy war to webapp"
cd /home/lin
cp JavaWeb-0.0.1-SNAPSHOT.war "$TOMCAT_HOME"/webapps
cd "$TOMCAT_HOME"/bin
echo "start tomcat"
./startup.sh

定时任务

这里写图片描述
Build after other projects are built:在其他项目触发的时候触发,里面有分为三种情况,也就是其他项目构建成功、失败、或者不稳定的时候触发项目;

Poll SCM:定时检查源码变更(根据SCM软件的版本号),如果有更新就checkout最新code下来,然后执行构建动作。
H/5 * * * * (每5分钟检查一次源码变化)

Build periodically:周期进行项目构建(它不关心源码是否发生变化),如下图配置:
H 2 * * * (每天2:00 必须build一次源码)

在 Schedule 中填写 0 * * * *。

第一个参数代表的是分钟 minute,取值 0~59;

第二个参数代表的是小时 hour,取值 0~23;

第三个参数代表的是天 day,取值 1~31;

第四个参数代表的是月 month,取值 1~12;

最后一个参数代表的是星期 week,取值 0~7,0 和 7 都是表示星期天。

所以 0 * * * * 表示的就是每个小时的第 0 分钟执行构建。

构建举例:

  由于项目的代码一般存在放SVN中,而一个SVN往往是有多个项目组在提交代码,而每个项目组又有多人组成,其中每个人也都在对自己的那块代码不停地在进行维护,所以说对于一个公司而言,SVN的提交记录往往是很频繁的,正因为如此,Jenkins在执行自动化构建时往往是以天为单位来执行的,下面举的例子就是在一天中常用的定时构建示例。

  每隔5分钟构建一次

H/5 * * * *

  每两小时构建一次

H H/2 * * *

  每天中午下班前定时构建一次

0 12 * * *

  每天下午下班前定时构建一次

0 18 * * *

项目回滚

虽然实现了项目的自动部署,但是有时部署失败的时候我们需要回滚到指定版本的构建,这样才能更灵活的进行项目的构建部署。我们可以选择“参数化的构建过程”进行传递不同的参数来选择是进行新的构建还是回滚
步骤:
1. 构建后存档
在构建后将,构建完成的文件进行存档,方便以后回滚的时候使用
这里写图片描述
这里写图片描述
2. 参数和构建过程
这里写图片描述
使用参数化构建过程,让后面的脚步可以根据不同的变量执行不同的操作。添加“Choice”参数配置不同的选项,让选择发布还是回滚,添加“String Parameter”参数来传递要回滚的版本号。
3. execult 构建(不能maven)
这里写图片描述
构建选择“Execute Shell”的方式,自己根据变量,自定义构建的脚本,此时如果是发布安装maven的构建过程进行新的构建,如果是回滚,知道历史构建后的文件,复制到当前构建结果目录。
4. 点击构建,根据不同的参数选择发布还是回滚,回滚的时候填写要回滚到的历史版本号
这里写图片描述

分布式部署(暂时不写,不会)

经典报错

1.报错:Solve Git Problem: “tell me who you are” 解决:Enter Git Username and Email ,在Git plugin上添加用户加密码
2. 报错:Maven Error: Cannot run program “mvn” 分析:找不到命令,就是Jenkins用户没有使用权,我解决的方式比较low 解决:在maven全局配置的使用自动安转的maven不自定义就OK了

猴急

  1. 我能不能通过一个脚本解决这些事呢?答案还在解决ing
  2. 实际应用中,Jenkins通常都是应用在分布式系统,同时部署多台服务器,一般都是访问Jenkins所在的机器上下载war包来部署
  3. 最下面的BuildSetting 可以设置邮件收件人列表等,在每次构建结束后可以将相关信息发送到邮箱。
  4. 我个人还是比较喜欢参数化构建的,不推荐使用maven插件那些,仅供参考。
  5. 傻瓜式操作,基本上都是在配置那个页面。

参考文章

https://oliverveits.wordpress.com/2017/02/27/jenkins-part-5-1-using-the-job-dsl-for-automatic-creation-of-jenkins-jobs/ 非常号的一篇文章
http://blog.csdn.net/gld824125233/article/details/52549449
http://blog.csdn.net/e295166319/article/details/52920036
http://www.jianshu.com/p/dceaa1c7bb49

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker、Jenkins、GitLab、Maven、Harbor和Spring Boot是一些常用的IT工具和技术,可以用于实现自动化构建和部署。 Docker是一个开源的容器化平台,可以将应用程序及其依赖项打包到容器中,从而实现应用程序的快速部署和隔离。使用Docker可以方便地创建、分享和管理应用程序的容器化版本。 Jenkins是一个开源的持续集成和持续交付工具,可以帮助团队自动化构建、测试和部署应用程序。使用Jenkins可以通过配置和管理各种构建和部署任务,从而实现自动化的软件开发流程。 GitLab是一个基于Git的代码托管和协作平台,可以帮助团队协同开发、管理代码和进行版本控制。使用GitLab可以方便地管理代码仓库、进行代码审查和版本管理。 Maven是一个软件项目管理和构建工具,可以帮助团队自动化构建、测试和部署Java项目。使用Maven可以方便地管理项目依赖、编译代码、运行单元测试等构建任务。 Harbor是一个开源的企业级Docker镜像仓库,用于管理和存储Docker镜像。使用Harbor可以方便地管理镜像的推送、拉取和版本控制。 Spring Boot是一个轻量级的Java开发框架,可以帮助开发者快速构建和部署基于Spring的应用程序。使用Spring Boot可以简化项目配置和管理,提高开发效率。 将这些工具结合使用,可以实现自动化构建和部署。例如,可以使用Jenkins配置一个定时任务,当代码提交到GitLab时,Jenkins自动触发构建任务。构建任务可以使用Maven编译、打包和测试应用程序,然后使用Docker将应用程序打包成容器镜像,并推送到Harbor中。最后,使用Docker将应用程序部署到服务器上进行运行。这样,我们就可以实现应用程序的自动化构建和部署,提高开发和交付效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值