docker安装jenkins自动部署springBoot+springCloud+vue项目

目录

  1. Docker安装 1

  2. jenkins安装部署 2

  3. jenkins部署maven项目 6
    3.1. 环境配置(仅第一次使用需要配置) 6
    3.2. 构建maven项目 12

  4. jenkins部署vue项目 23
    4.1. 环境配置(仅第一次使用需要配置) 23
    4.2. 构建vue项目 25

  5. Docker安装
    可使用国内 daocloud 一键安装命令,等待安装完成
    curl -sSL https://get.daocloud.io/docker | sh
    安装完成后,启动 Docker
    sudo systemctl start docker
    使用以下命令,如图所示即安装成功
    docker --help
    在这里插入图片描述

  6. jenkins安装部署
    拉取jenkins镜像
    可通过下面链接可选择需要的版本,我这里jenkins要使用nodeJs,服务器使用的centos,所以拉取的最新版2.277.1
    https://hub.docker.com/r/jenkins/jenkins/tags?page=1&ordering=last_updated
    docker pull jenkins/jenkins:2.277.1-lts-centos7
    在这里插入图片描述

docker images
在这里插入图片描述

为方便管理配置,我们在服务器上创建一个jenkins工作目录,目录可根据自己习惯创建,这以/mydata/jenkins_home为例
创建目录
mkdir -p /mydata/jenkins_home
赋予需要的权限
chown -R 1000:1000 /mydata/jenkins_home/
创建并启动Jenkins容器
  -d 后台运行镜像
  -p 8080:8080 将镜像的8080端口映射到服务器的8080端口。
  -p 50000:50000 将镜像的50000端口映射到服务器的50000端口
  -v /mydata/jenkins_home:/var/jenkins_mount /var/jenkins_home目录为容器jenkins工作目录,我们将硬盘上的一个目录挂载到这个位置,方便后续更新镜像后继续使用原来的工作目录。这里我们设置的就是上面我们创建的 /mydata/jenkins_home目录
  -v /etc/localtime:/etc/localtime让容器使用和服务器同样的时间设置。
  --name jenkins 给容器起一个别名
docker run -d -p 8080:8080 -p 50000:50000 -v /mydata/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime --name jenkins jenkins/jenkins:2.277.1-lts-centos
在这里插入图片描述

查看jenkins是否启动成功,如下图出现端口号,就为启动成功了
docker ps -a
在这里插入图片描述

访问部署服务器的ip:8080,如访问到如下界面,即部署成功
在这里插入图片描述

输入管理员密码
在这里插入图片描述

这里要求输入初始的管理员密码,根据提示密码在
/var/jenkins_home/secrets/initialAdminPassword这个文件中,注意这个路径是 Docker 容器中的,所以我们通过如下命令获取一下
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
复制打印出的密码,在jenkins输入密码后,点击继续
安装插件
在这里插入图片描述

这里选择安装推荐的插件,然后 Jenkins 会自动开始安装

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210322095721987.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xvdmUxMDI2OTk5MDQ1,size_16,color_FFFFFF,t_70

安装完成后会自动跳转到下一步
创建管理员
在这里插入图片描述

实例配置
在这里插入图片描述

注意IP地址和端口就行了
配置完成
在这里插入图片描述

  1. jenkins部署maven项目
    3.1. 环境配置(仅第一次使用需要配置)
    进入Jenkins页面
    在这里插入图片描述

点击系统管理->插件管理,安装需要的插件
在这里插入图片描述

需要安装如下几个插件
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

点击系统管理,配置Maven、JDK等
在这里插入图片描述

jenkins容器自带jdk,只需要进入到容器内部执行echo $JAVA_HOME查看jdk路径,如果echo $JAVA_HOME无输出,可尝试以下方式:
docker exec -it [containerId] /bin/bash
which java
ls -lrt /usr/bin/java
ls -lrt /etc/alternatives/java
在这里插入图片描述

将路径复制进配置,路径不正确时会有提示
在这里插入图片描述

下图为Maven配置,可选择自动安装
在这里插入图片描述
在这里插入图片描述

Git可使用自动安装
在这里插入图片描述

配置完成后点击保存
点击系统管理->系统配置,找到Publish over SSH,添加打包后部署的服务器ssh方式,配置帐号密码后点击Test Configuration,如提示Success,则添加信息正确

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3.2. 构建maven项目
点击新建任务 -> 随便输入一个任务名称 -> 选择构建一个Maven项目 -> 点击确定
在这里插入图片描述
在这里插入图片描述

版本更新后不可添加中文名称项目,确认后配置如下,可根据实际情况进行修改,配置完成后点击确认

在这里插入图片描述
在这里插入图片描述

轮询SCM设置为5分钟轮询一次,gitLab设定分支代码有变化会自动打包,如不需要自动打包,可不勾选
H/5 * * * *
在这里插入图片描述

clean package -Dmaven.test.skip=true
在这里插入图片描述
在这里插入图片描述

下面SSH Server的Name为环境配置中配置的Publish over SSH,Exec command中为打包完成后执行的脚本,复制打包后的jar包和启动程序均在此脚本中
在这里插入图片描述

以下batchRestart脚本仅供参考,可根据实际情况修改和优化
批量复制jenkins打包后的jar文件到项目部署文件夹并启动部署脚本,该脚本需要根据实际部署位置和jar包名称修改
#!/bin/sh -l
#author:jiangya
#date:2021-1-20
#description:批量复制jenkins打包后的jar文件到项目部署文件夹并启动部署脚本
#需要部署的工程jar包所在目录完整路径
package_path=/home/jiangya/zufenhouduan
cd $package_path
#jenkins打包后的路径前缀
jenkins_prefix_path=/mydata/jenkins_home/workspace/组分分析系统
#复制jenkins中打包好的jar包
cp $jenkins_prefix_path/rate-auth/target/rate_vocs_auth.jar $package_path
cp $jenkins_prefix_path/rate-modules/rate-system/target/rate_vocs_system.jar $package_path
cp $jenkins_prefix_path/rate-gateway/target/rate_vocs_gateway.jar $package_path
cp $jenkins_prefix_path/rate-modules/rate-vocs/target/rate_vocs_vocs.jar $package_path
#授予部署脚本执行权限
chmod 777 $package_path/rate_vocs_vocs
chmod 777 $package_path/rate_vocs_system
chmod 777 $package_path/rate_vocs_gateway
chmod 777 $package_path/rate_vocs_auth
#执行脚本
$package_path/rate_vocs_auth restart
$package_path/rate_vocs_system restart
$package_path/rate_vocs_gateway restart
$package_path/rate_vocs_vocs restart
内容完成后,复制该脚本到服务器,给脚本执行权限
chmod +x /home/jiangya/zufenhouduan/batchRestart
在这里插入图片描述

一键部署脚本,该脚本如无特殊需求,内容可不进行修改,保持名称和需要部署的jar包名称一致即可,每个jar包需要配备一个该脚本,脚本文件不带后缀
#!/bin/sh
#author:jiangya
#date:2020-10-21
#获取脚本所在完整路径
current_path= ( c d " (cd " (cd"(dirname KaTeX parse error: Expected 'EOF', got '#' at position 22: …SOURCE})";pwd) #̲获取脚本名称 App_NAME…(basename B A S H S O U R C E ) J A R N A M E = {BASH_SOURCE}) JAR_NAME= BASHSOURCE)JARNAME=App_NAME.jar
#PID 代表是PID文件
PID= c u r r e n t p a t h / current_path/ currentpath/App_NAME.pid

#使用说明,用来提示输入参数
usage() {
echo “请使用: ${App_NAME} [start|stop|restart|status]来运行”
exit 1
}

#检查程序是否在运行
is_exist(){
pid=ps -ef|grep $JAR_NAME|grep -v grep|awk '{print $JAR_NAME}'
#如果不存在返回1,存在返回0
if [ -z “${pid}” ]; then
return 1
else
return 0
fi
}

#启动方法
start(){
echo “=启动时间======”
echo $(date “+%Y-%m-%d %H:%M:%S”)
is_exist
if [ ? − e q " 0 " ] ; t h e n e c h o " > > > 雷 特 j a v a 组 项 目 : ? -eq "0" ]; then echo ">>> 雷特java组项目: ?eq"0"];thenecho">>>java:{App_NAME} 已经在运行,PID= p i d < < < " e l s e e c h o " > > > 雷 特 j a v a 组 项 目 : {pid} <<<" else echo ">>> 雷特java组项目: pid<<<"elseecho">>>javaApp_NAME 正在启动,请稍后… <<<"
nohup java -Xms512m -Xmx512m -jar c u r r e n t p a t h / current_path/ currentpath/JAR_NAME > c u r r e n t p a t h / current_path/ currentpath/App_NAME.log 2>&1 &
echo $! > $PID
echo “>>> 雷特Java组项目: A p p N A M E 启 动 P I D 为 = {App_NAME} 启动PID为= AppNAMEPID=(cat $PID),项目正在跑代码,请稍后查看启动是否成功! <<<”
fi
}

#停止方法
stop(){
echo “=停止时间======”
echo KaTeX parse error: Expected 'EOF', got '#' at position 31: …d %H:%M:%S") #̲is_exist pidf…(cat KaTeX parse error: Expected 'EOF', got '#' at position 8: PID) #̲echo "pidf"
echo “>>> 雷特Java组项目:$App_NAME的PID = $pidf进程正在尝试优雅停止… <<<”
kill $pidf
rm -rf $PID
sleep 2
is_exist
if [ ? − e q " 0 " ] ; t h e n e c h o " > > > 雷 特 J a v a 组 项 目 : ? -eq "0" ]; then echo ">>> 雷特Java组项目: ?eq"0"];thenecho">>>JavaApp_NAME 的PID = $pidf优雅停止失败,再次尝试强制停止… <<<"
kill -9 p i d s l e e p 2 e c h o " > > > 雷 特 J a v a 组 项 目 : pid sleep 2 echo ">>> 雷特Java组项目: pidsleep2echo">>>JavaApp_NAME 的PID = p i d f 进 程 已 强 制 停 止 . . . . . . < < < " e l s e e c h o " > > > 雷 特 J a v a 组 项 目 : pidf进程已强制停止...... <<<" else echo ">>> 雷特Java组项目: pidf......<<<"elseecho">>>Java{App_NAME} 的PID = $pidf进程已优雅停止运行 <<<"
fi
}

#输出运行状态
status(){
is_exist
if [ ? − e q " 0 " ] ; t h e n e c h o " > > > 雷 特 J a v a 组 项 目 : ? -eq "0" ]; then echo ">>> 雷特Java组项目: ?eq"0"];thenecho">>>Java{App_NAME} 正在运行 PID 是 p i d < < < " e l s e e c h o " > > > 雷 特 J a v a 组 项 目 : {pid} <<<" else echo ">>> 雷特Java组项目: pid<<<"elseecho">>>Java:{App_NAME} 没有运行 <<<"
fi
}

#重启
restart(){
echo “=重启时间======”
echo $(date “+%Y-%m-%d %H:%M:%S”)
stop
start
}

#根据输入参数,选择执行对应方法,不输入则执行使用说明
case “$1” in
“start”)
start
;;
“stop”)
stop
;;
“status”)
status
;;
“restart”)
restart
;;
*)
usage
;;
esac
exit 0
完成后的目录结构大致如下,初次部署是不包含.jar、.log、.pid文件的
在这里插入图片描述

保存后返回工程,点击立即构建,进行打包部署
在这里插入图片描述

  1. jenkins部署vue项目
    4.1. 环境配置(仅第一次使用需要配置)
    安装nodeJs插件

在这里插入图片描述
在这里插入图片描述

如出现该提示,表示Structs还未生效,重启Jenkins即可
在这里插入图片描述

重启后,点击全局工具配置
在这里插入图片描述

新增nodeJs,保存
在这里插入图片描述

这里踩过坑,使用NodeJS 15.11.0的由于版本太高,会报以下错误,如出现以下错误,可降级解决
在这里插入图片描述

4.2. 构建vue项目
在这里插入图片描述

基本配置如下,可根据实际情况修改,丢弃旧的构建代表会保留的最多构建天数和最大个数,超出的会被丢弃
在这里插入图片描述
在这里插入图片描述

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210322100225588.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xvdmUxMDI2OTk5MDQ1,size_16,color_FFFFFF,t_70
轮询SCM设置为5分钟轮询一次,gitLab设定分支代码有变化会自动打包,如不需要自动打包,可不勾选
H/5 * * * *
在这里插入图片描述

这里会使用上面环境配置中的nodeJs
在这里插入图片描述
在这里插入图片描述

添加以下脚本
#!/bin/bash
echo $PATH
npm config set proxy null
npm config set https-proxy null
#使用淘宝镜像
npm config set registry https://registry.npm.taobao.org
#查看版本
node -v
npm -v
#安装依赖
npm install
#如果项目使用了windy,需要执行该步骤
npm install leaflet@1.4 --save
#删除旧的文件
rm -rf ./vocs/*
#打包生产环境
npm run build:prod --report
在这里插入图片描述
在这里插入图片描述

下面SSH Server的Name为环境配置中配置的Publish over SSH,Exec command中为打包完成后执行的脚本,脚本中包含了打包完成后需要执行的操作
在这里插入图片描述

QianDuanDeploy脚本,根据实际情况进行修改
#!/bin/sh -l
#author:jiangya
#date:2021-3-17
#description:复制前端打包后的文件夹到nginx
#需要部署的项目所在目录完整路径
package_path=/usr/local/nginx/html
echo “部署的项目所在目录完整路径如下>>>>>>”
echo $package_path
#jenkins打包后的路径前缀
jenkins_prefix_path=/mydata/jenkins_home/workspace/rate-component-web
echo “jenkins打包后路径如下>>>>>>”
echo $jenkins_prefix_path
#删除旧版本打包文件,为了避免出问题,可修改此处先做备份再删除
echo “正在删除旧版本打包文件>>>>>>”
rm -rf /usr/local/nginx/html/vocs
#复制jenkins中打包好的jar包
echo “正在复制打包文件>>>>>>”
cp -rf $jenkins_prefix_path/vocs $package_path
echo “部署完成!”
内容完成后,复制该脚本到服务器,给脚本执行权限
chmod +x /home/jiangya/QianDuanDeploy
在这里插入图片描述

保存后返回项目,点击立即构建,进行打包部署

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值