Jenkins持续集成

jenkins 是一款持续集成,快速部署项目的工具,入行以来一直用来作为javaweb的自动部署,方便快捷,省去了繁琐的打包发布过程,这些操作经过jenkins的简单配置即可达到快捷部署。

以前也经常配置javaweb快速部署,时间长了难免有些配置过程记不清,网上也有相关的教程,但大都比较零散,今天再一次配置javaweb部署,把配置的过程记录于此,以备再次用到方便查阅。

1. 准备工作

本次配置是在window环境下操作(linux环境的操作和windows相同),javaweb开发是基于Maven来管理jar包和打包部署的,用到的工具有:

这些工具的安装和使用在这里就不一一赘述了,作为开发人员,这都是些常规操作。

2. Jenkins 全局配置

这里认为已经安装好了以上提到的这几种工具,接下来直接进入主题:

2.1 全局工具配置

  • 首先登录到Jenkins界面如下 :

  • 这时我们点击“系统管理”–>“全局工具配置”,Maven,jdk,git配置如下(这里的配置也就相当于配置环境变量):

2.2 插件安装

  • 安装构建Maven项目插件
    “系统管理”–>”插件管理”,选择可选插件搜索Maven Integration plugin

直接安装即可。

  • Publish Over SSH插件安装
    按照上一步操作,搜索Publish Over SSH

安装完成,这里需要配置你部署的远程服务器:”系统管理”–>”系统设置”,找到Publish over SSH配置处,如图:

  • Passphrase: 这个是登录远程服务器配置的密码。
  • Name: 这个可以随便写。
  • Hostname: 远程服务器地址。
  • Username: 服务器用户名。
  • Remote Directory: 这个是打包好的文件要上传到服务器的那个目录。
  • 配置完可以点击Test configuration测试是否配置成功。

配置完成点击保存。

3. 构建Maven项目

以上配置工作完成,接下来来完整的构建一个快速部署项目。

3.1 创建一个Maven项目

jenkins主界面点击,”新建任务”,输入任务名称,选择 “构建一个Maven项目”如下图:

最后点击确定。

3.2 一般配置(General)

这里我选择的是”丢弃旧的构建”,这里有两个保持构建的天数,可以随意写,我设置为5

3.3 源码管理

选择Git选项,如下图:

  • 配置源码仓库:Repository URL是仓库的地址
  • Credentials:证书或者是Git的用户名和密码,如果在git服务器上配置了ssh密钥,这里可以不填写。但是Repository URL需要配置成‘git@仓库’
  • 分支配置:默认是*/master

3.4 构建

这里项目构建分为三个步骤:构建前、构建、构建后。构建前这一步我没有做任何操作,可以直接跳过,如图:

  • Root POM: 这个是javaweb工程根目录中的pom.xml文件,直接填入即可。
  • Goals and options: 这个是配置Maven打包编译时的操作命令。一般情况下填入clean install,当然在install还可以跟一些打包参数,如指定打包时的环境配置-Ptest-Pdev-Ppro等等。还有其它的可配置参数可自行google。

因为我这里是在本地构建,需要远程部署到云服务器上,所以这里用到了上面安装的插件publish over ssh,构建后的操作,在Post Steps选择Run only if build succeeds or is unstable这个选项,在添加构建步骤的下拉框选择如下图:

选择Execute shell script on remote host using ssh出现下图配置:

  • SSH Server Name: 这个就是在配置publish Over ssh中填写的名称。

  • Source files: 这个参数是要部署的源文件的路径,它是相对jenkins的工作空间的相对路径(我的jenkins的工作空间是在D:\software\Jenkins\workspace)

  • Remove prefix: 这个参数是上传到远程服务的时要去掉源文件前面的目录。这个和source files 相对应,比如:我的source files路径是 api/target/api.war,那么我的Remove prefix就填写为api/target,传输到远程服务器的目录就是api.war

  • Remote directory: 这个参数是上传远程服务器的目录。如果不填默认是publish over ssh中配置的路径。

  • Exec command: 这个参数是在源文件已经上传到远程服务器这后所执行的脚本。这里我将我的脚本贴出来。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/bin/sh
source /etc/profile
export BUILD_ID=api-test
# tomcat 地址
TOMCAT_HOME=/usr/local/tomcat-api
PROJECT_PATH=/opt/workspaces

cd ${TOMCAT_HOME}/bin
echo ${TOMCAT_HOME}/bin
#run
./shutdown.sh
echo "tomcat shutdown"
sleep 10
cd ${TOMCAT_HOME}/webapps
echo cd ${TOMCAT_HOME}/webapps

rm -rf ${TOMCAT_HOME}/webapps/*
echo "rm -rf " ${TOMCAT_HOME}/webapps/*

cd $PROJECT_PATH
echo "cd" ${PROJECT_PATH}
WAR=`ls ${PROJECT_PATH} | grep war`
echo "新的war包" ${WAR}

if [ ! -f "${WAR}" ]; then
echo 'this are not have war here '
echo ${WAR}
exit 1
fi

cp ${WAR} ${TOMCAT_HOME}/webapps

cd ${TOMCAT_HOME}/bin
echo cd ${TOMCAT_HOME}/bin "开启项目"
#run
./startup.sh
echo run ./shartup.sh

点击保存,立刻构建,查看是否配置成功。

以上就是这次构建maven项目的简单配置,还其它的配置本次没有提到,如下次用到再做总结。仅供大家参考,哪有不合适的或者错误的地方,还请指出改正。

原文作者: dgb8901,yinxing

原文链接: https://www.itwork.club/2018/07/09/Jenkins-integrate/

版权声明: 转载请注明出处

为您推荐

体验小程序「简易记账」

关注公众号「特想学英语」

HashCode相等两个类一定相等码?equals呢?