Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程

服务器系统 centOS 8.2

1. 运行环境安装

1.1 安装 jdk

上传安装包,然后解压

[root@ianly ~]# tar -zxvf jdk-8u144-linux-x64.tar.gz -C /usr/local/

配置环境变量

[root@ianly ~]# vim /etc/profile

JAVA_HOME=/usr/local/jdk1.8.0_144
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME
export PATH

[root@ianly ~]# source /etc/profile

检测是否安装完成

[root@ianly ~]# java -version

1.2 安装 maven

上传安装包,然后解压 官网:Maven – Download Apache Mavenhttps://maven.apache.org/download.cgiJenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第1张图片

tar zxf apache-maven-3.3.9-bin.tar.gz –C /usr/local/

配置环境变量

[root@ianly ~]# vim /etc/profile

export MAVEN_HOME=/usr/local/maven-3.3.9
export PATH=$PATH:$MAVEN_HOME/bin

[root@ianly ~]# source /etc/profile

检测是否安装完成

[root@ianly ~]# mvn -version

Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: /usr/local/maven-3.3.9
Java version: 1.8.0_144, vendor: Oracle Corporation
Java home: /usr/local/jdk1.8.0_144/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-862.11.6.el7.x86_64", arch: "amd64", family: "unix"

1.3 安装 git

[root@ianly ~]# yum install git

检测是否安装完成

[root@ianly ~]# git --version

git version 1.8.3.1

1.4 安装 tomcat

上传安装包,然后解压 官网:

Apache Tomcat® - Apache Tomcat 8 Software Downloadshttps://tomcat.apache.org/download-80.cgiJenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第2张图片

[root@ianly ~]# tar zxf apache-tomcat-8.5.20.tar.gz -C /usr/local/

拷贝一份tomcat用来运行项目

[root@ianly ~]# cp -r /usr/local/apache-tomcat-8.5.20 /usr/local/tomcat-jenkins/

2. 安装配置 Jenkins

2.1 下载 Jenkins的 war 包并运行 上传安装包 地址:

http://mirrors.jenkins.io/war-stable/latest/jenkins.warhttp://mirrors.jenkins.io/war-stable/latest/jenkins.war拷贝一个用来运行 Jenkins 的 tomcat,并修改 tomcat 的 server.xml配置文件中的端口号:「8080」->「8888」,「8005」->「8006」,「8009」->「8010」,这里改端口号是因为后面还要启动一个运行项目的tomcat服务,如果你是在两台机器上操作,可以用默认的端口。

[root@ianly ~]# cp jenkins.war /usr/local/tomcat-jenkins/webapps/

启动Jenkins的tomcat

[root@ianly tomcat-jenkins]# ./bin/startup.sh

2.2 访问并初始化

ip:8888/jenkins

提示输入密码,查看初始密码

[root@ianly ~]# cat /root/.jenkins/secrets/initialAdminPassword

 Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第3张图片

输入密码之后点击「继续」,跳转到下一个页面,选在插件安装

 Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第4张图片

安装完成之后,创建用户与密码 

Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第5张图片

 Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第6张图片

完成后就可以进入首页界面进行配置与管理 

Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第7张图片

2.3 安装一些基础的插件

通过系统管理—管理插件

Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第8张图片

 在这里,我只安装本测试需要的几个插件
「Maven Integration」,「Deploy to container」,你可以根据具体场景需求,下载对应需要的插件

Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第9张图片

2.4 在Jenkins上配置maven,git,jdk

系统管理 -> 全局工具配置

Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第10张图片


具体配置的路径根据你jenkins所在服务器环境路径来配置

Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第11张图片

保存。

至此,Jenkins的安装配置完成。

3.使用jenkins来运行实例

3.1 回到主页,点击「创建一个新任务」

Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第12张图片

3.2 选择「构建一个maven项目」

Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第13张图片

源码管理,配置git仓库地址和授权用户

Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第14张图片

3.3 添加git仓库授权用户

Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第15张图片

添加后选择刚添加的用户

Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第16张图片

指定获取git的分支 

Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第17张图片

git文件下载默认目录:/root/.jenkins/workspace

3.4 构建,填入maven安装命令 clean install -Dmaven.test.stop=true   

Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第18张图片

3.5 Post Step中选择「执行shell」,使用一个自动化发布的脚本

Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第19张图片

先在Jenkins所在的服务器创建一个脚本文件

[root@ianly ~]# vim /scripts/auto_push.sh

#!/bin/bash -ilex
#根据查询进程的pid
source /etc/profile;
pid=$(jps -l | grep test-main-1.0.jar | awk '{print $1}');
#杀掉对应的进程,如果pid不存在,则不执行
if [  -n  "$pid"  ];  then
    kill $pid;
    while [ -n "$pid" ]
    do pid=$(jps -l | grep test-main-1.0.jar | awk '{print $1}');echo "Waitting...";sleep 1s;
    done
fi
#启动进程并忽略所有控制台日志
cd /root/.jenkins/workspace/java-test/test-main/target
nohup java -Xms500m -Xmx500m -jar test-main-1.0.jar >/dev/null 2>&1 &
echo "Started testmain-1.0 Success."

赋值执行权限 

[root@ianly ~]# chmod a+x /scripts/auto_push.sh

在Post Step的shell Command中填写执行脚本的语句 /bin/sh -x /scripts/auto_push.sh

Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第20张图片

配置完成,保存

在首页就可以看到刚刚创建的JOB,点立即构建

Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第21张图片

然后在控制台看输出信息

Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第22张图片

4. 访问项目

http://122.152.192.227:8080/springMvcDemo/

看到正常访问。

接下来,修改git仓库源码,然后重新构建,再次访问

目标

在本地写好代码,一旦提交到Git,通过web-hook,触发Jenkins的自动构建任务,Jenkins自动从Git上面拉取代码>安装依赖>打包>发送到部署的服务器等一系列操作。

简单来说,我本地写好代码,我提交到Git之后,就有个东西帮我打包发送到服务器。我不需要管这些事,我只要写代码、测试、推代码就完事了。

目前需要实现的就是这样的功能,但Jenkins能做的不只是这么多。不过对于我目前的项目来说足够了。

实现
安装ssh发送插件 - Publish Over SSH
见名知意,通过ssh发布,用来将打包好的项目用ssh连接的方式发送到部署的服务器,并且执行其他的命令。

1.通过系统管理—管理插件

页面直接ctrl+f搜索ssh,直接安装Publish Over SSH插件Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第23张图片

2.配置ssh插件
这里要配置的部署网站的服务器,我采用的方式是密码登录,也可以配置密钥文件登录的。看你的喜好。

选择系统管理-系统配置
拉到最后面找到Publish over SSH
新增SSH - Server
name标识该服务器的
Hostname服务器的IP
Username填写服务器的用户
点开高级设置
勾选Use password authentication, or use a different key
Passphrase填写密码

  1. 填写完了点击Test Configuration测试下是否连接成功

Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第24张图片

3 安装nodejs插件

页面直接ctrl+f搜索nodejs,直接安装  插件

Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第25张图片

  1. 安装nodejs插件

下载nodejs编译包

我们在window上是直接下载exe,双击安装就可以了,而在linux上不太一样。

我们先打开nodejs下载页面:http://nodejs.cn/download/,选择合适的linux版本编译包

Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第26张图片

上传解压 

tar   -xvf /dataDak/node-v16.14.0-linux-x64.tar.xz -C /usr/local/ 

配置软链接

 为了使nodejs能够全局使用,我们需要配置一下软链接(类似于快捷方式,如果安装的路径在/usr/local/bin/下不需要这一步操作),当然也是软连接到用户目录下/usr/local/bin/

软链接的命令很简单: ln    -s   源文件   目标路径

1

2

3

ln -s  /usr/local/node-v16.14.0-linux-x64/bin/node    /usr/local/bin/

ln -s  /usr/local/node-v16.14.0-linux-x6/bin/npm    /usr/local/bin/


选择系统管理-全局工具配置
选择新增 NodeJS
别名node 12.16.3

保存

Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第27张图片


4.新建项目配置


1 新建项目 - 选择自由风格项目
2 输入名称

Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第28张图片
3 源码管理选择你的项目的Git
我的文档项目访问是公开的,可以直接访问,如果是私有项目还需要配置一个可访问的账号才可以。就是下面Credentials选项。

 Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第29张图片

4 构建触发器
勾选 GitHub hook trigger for GITScm polling,这是一旦我们推送代码就会触发构建。

5 构建环境
勾选Provide Node & npm bin/ folder to PATH,这是提供Node命令给我们使用。

Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第30张图片

6 增加构建步骤 - 执行shell

Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第31张图片
执行shell内容 

由于内部的node环境和外部隔离,所以我们第一次使用的时候需要安装yarn和设置一些国内源。

这一步我们进行安装依赖和打包项目,并且将打包的项目压缩等待后续发送到部署的服务器上。

# 进入Jenkins工作空间下cxt-web项目目录
cd /var/jenkins_home/workspace/cxt-web

# 下面的命令只需要执行一次,后续可以删除
###
# npm切换为淘宝源
npm config set registry http://registry.npm.taobao.org/
# 安装yarn
npm i yarn -g
# yarn切换为淘宝源
yarn config set registry https://registry.npm.taobao.org
###

# 安装项目中的依赖
yarn
# 打包
yarn build
# 进入生成打包文件的目录
cd dist
# 把生成的项目打包成压缩包,方便移动到项目部署目录
tar -zcvf cxt-web.tar.gz * 

vue-admin 事件使用的

npm install -g cnpm --registry=https://registry.npm.taobao.org
# 安装项目中的依赖
cnpm i
#删除dist目录下的所有文件
rm -rf ./dist/*

cnpm install --save core-js
# 打包
npm run build:prod
# 进入生成打包文件的目录
cd dist
# 把生成的项目打包成压缩包,方便移动到项目部署目录
tar -zcvf cxt-web.tar.gz * 


执行完成之后会在服务器生成cxt-web.tar.gz,下一步就是把这个文件发送到指定部署的服务器。进行解压。

7 增加构建后的步骤

Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第32张图片
这一步将上一步打包好的文件发送到服务器,并且解压。

 push over ssh文件复制有个限制 只能复制当前任务所在目录下的文件,很多时候文件无法复制就是因为这个限制导致的。那么我们可以换一种思路,在使用push over ssh插件之前,先把需要的文件复制到当前任务所在目录下。如:我的绝对路径是 /root/.jenkins/workspace/cxt-web/dist/cxt-web.tar.gz ,那么Source files:dist/cxt-web.tar.gz , Remove prefix:dist/

Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第33张图片

特别注意:远程主机目录,这里是相对目录,即使目录前加 / 也会自动转为相对目录。绝对路径在定义远程主机时指定,如下图
备注:当Remote Directory为空时,目录默认为username所在的home目录(如root用户就是/root, test用户就是/home/test)
Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第34张图片

cd /datadisk/official_web
\echo ">>>当前工作路径:"`pwd`
\shopt -s extglob
\echo ">>>删除:(.htaccess|.user.ini|cxt-web.tar.gz)之外的文件"
\rm -rf !(.htaccess|.user.ini|cxt-web.tar.gz)
\echo ">>>解压:cxt-web.tar.gz"
\tar -zxvf cxt-web.tar.gz -C ./
\echo ">>>移除:cxt-web.tar.gz"
\rm -rf cxt-web.tar.gz
\echo ">>>执行成功"

解决Nginx出现403 forbidden (13: Permission denied)

查看nginx的启动用户,发现是nobody,而为是用root启动的

命令:ps aux | grep "nginx: worker process"

将nginx.config的user改为和启动用户一致,

命令:vi conf/nginx.conf

Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程_第35张图片

8 测试构建
可以看到服务器有了构建之后的文件

9 访问下网站试试,nice

你可能感兴趣的:(tomcat,jenkins,maven,git,运维)