使用Jenkins自动化部署,节省你的时间

引言

我们在开发过程中经常需要修改本地代码,并提交到git或svn。要运行程序则需要将svn或git上的代码编译并部署到web服务器。这个部署如果是手动的则每次都需要执行编译命令,再手动把war文件之类拷贝到服务器,最后重启tomcat,次数多了就会显得很繁琐。Jenkins就是为了解决自动化部署而生。

我的环境:
本地windows10,服务器centOS 7。两方都安装了jdk跟tomcat。

1. 本地机器下载安装Jenkins

jenkins下载地址:jenkins.io/

安装前提是你的windows已经装好了jdk跟tomcat。在这里我用的是jdk8跟tomcat9。

1.1 以上地址点击download后最后有个war文件下载。点击下载到本地。

然后放到tomcat的webapps目录下,注意文件超过了50M,需要修改Tomcat安装目录下的/manager/WEB-INF/web.xml。把以下配置注释掉。

1
复制代码<!-- <max-file-size>52428800</max-file-size> -->

1.2 启动tomcat,浏览器访问localhost:8080/jenkins

出现以下界面,提示你输入密码。密码在红色字表示的文件中。

选择安装推荐的插件。这里需要一些时间。

创建管理员账户。

这样就是安装完成了。

2. Web服务器端安装Maven、git

下载Maven,用来编译工程。下载git用来自动获取git服务器最新代码。

2.1 Maven官网找到下载地址,通过Wget获取

如果你的服务器没安装wget,通过以下命令安装

1
复制代码yum -y install wget

访问Maven官网找到下载地址 maven.apache.org/download.cg…
执行以下命令

1
2
3
4
5
6
复制代码我们一般下载到这里
cd /usr/local/
下载
wget http://us.mirrors.quenda.co/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
解压缩
tar xvzf apache-maven-3.6.3-bin.tar.gz

2.2 设置Maven环境变量,方便随时随地使用mvn命令

编辑/etc/profile,末尾添加以下两行。

1
2
复制代码M2_HOME=/etc/local/apache-maven-3.6.3
export PATH=${M2_HOME}/bin:${PATH}

重载设置

1
复制代码source /etc/profile

验证是否安装成功

1
复制代码mvn -v

2.3 安装git

1
复制代码yum install git

3. 将Web服务器注册到Jenkins节点中

如果你的Jenkins安装到了Web服务器中,可以省略这个步骤,因为Jenkins默认创建了一个叫做master的节点代表Jenkins安装的机器,但是这样的话后面重启tomcat时,由于Jenkins运行在tomcat中,会随tomcat一起被关闭掉从而失去链接。相反,像我这样将Jenkins装到了本地机器,为了能够部署到远程的Web服务器中,你需要本步骤把Web服务器作为节点注册到Jenkins中。如下图,就是已经系统建好的了master,跟我创建的测试节点TestEnv。

节点的创建步骤如下。首先选择Build Executor Status。

点击新建节点。

输入节点名,选择Permanet Agent,点击OK。

接下来填写配置。

  • Remote root directory 是你的在web服务器上的工作根目录。我这里用root登录,把工作目录放在/root/jenkins下。
  • Launch agent agents via SSH。这个代表用SSH登录。
  • Host 填写你的Web服务器地址
  • Credentials 填写你的登录账户密码
  • Host Key Verification Strategy 选择Known hosts file Verification Strategy

最后点击保存就可以完成节点的创建。

4. Jenkins创建任务

点击 创建新任务 进入项目创建界面

填写任务名,选择自由风格的工程。

这里要选择节点,也就是刚才我们注册的TestEnv节点。

如下图,我使用git,所以需要填写以下内容。

  • Repository URL: git的http仓库地址
  • Credentials: 登录需要的用户名密码
  • Branch Specifer : git的分支
  • Check out to s sub-directory: 任意填写一个子目录名用于下载代码

最后,添加要执行的shell命令,并且保存设置。

代码如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
复制代码BUILD_ID=DONOTKILLME

. /etc/profile

export PROJ_PATH=`pwd`
export TOMCAT_APP_PATH=/usr/local/apache-tomcat-9.0.30

#编译代码(注意siled是任意名称,是之前步骤输入的目录名)
cd $PROJ_PATH/siled
mvn clean install

#删除原有的war文件
rm -rf $TOMCAT_APP_PATH/webapps/*.war

#关闭tomcat
$TOMCAT_APP_PATH/bin/shutdown.sh

#拷贝新的war到tomcat下
cp $PROJ_PATH/siled/target/*.war $TOMCAT_APP_PATH/webapps/

#重启tomcat
$TOMCAT_APP_PATH/bin/startup.sh

5. 尝试部署

点击Build now,立即构建。这样Jenkins就会自动链接服务器,并从git获取最新代码,然后执行上一步中你添加的shell命令。

构建完成后会有如下的结果。蓝色表示构建成功,红色代表失败,灰色代表中途与节点失去联系。数字表示次数。点击数字。我这里是第12次构建,所以点击了#12。

点击控制台输出。

可以确认结果是成功的。

6. 验证部署应用

访问应用地址,可以看到自动部署成功。

7. 定时部署

上面的步骤基本上就没问题了,但是有一点,我们想要每天都部署最新的代码怎么办?当然每次手动点击部署就太麻烦了。Jenkins为我们提供了定时部署功能。

以上配置,表示在6月13日23点触发。

如果配置成 00 06 * * * ,表示每天早上6点触发。如果不是很熟悉这块,可以百度cron表达式。

官方配置说明

总结

初次配置Jenkins有些繁琐,但并不难。中间如果有什么问题网上都有答案,这里我尽量写的详细一点,希望能够帮助到读者。正所谓一时Jenkins一时爽,一直Jenkins一直爽。尤其是越大的项目,通过灵活的自动化命令,你就越省心省力。

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%