工作总结之Jenkins篇

复盘Jenkins的安装到项目构建调通

前言

之前有一篇文章大概的讲了一下Jenkins的安装配置,但是那篇文章不够细节。

安装

  1. 首先要注意版本
    笔者安装的是2.315配合java8使用,但是此版本有个小bug,在部署中的项目可能不会显示进度,需要刷新页面,可以尝试一下其他版本;除此之外,得注意一下jenkins的版本和java的版本,从某个版本开始最低的java版本为11,具体哪个版本,请自行百度。
    ps:请安装前配置好java8环境变量
  2. 详细的安装教程
  1. 需要安装的插件、jenkins配置和编写shell脚本
    请参考俺的另一篇博客,偷个懒,不重复写啦,不过,最新的脚本已经变啦,是为了将日志挂载出来改的脚本(需要以特权privileged的方式启动,否则要改服务器配置,然后重启,我选择了前者),这里贴一下:
#!/bin/bash -il
#maven打包


mvn clean package -Dmaven.test.skip=true
echo 'package ok!'
echo 'build start!'
# cd ./

service_name="administrate"
service_prot=8070
log_address="/workplat/logs/logback/admin"

mount_address="/mydata/app/logs/admin"

echo "mount_address $mount_address"

#查看镜像id
IID=$(docker images | grep "$service_name" | awk '{print $3}')
echo "IID $IID"
if [ -n "$IID" ]
then
    echo "exist $service_name image,IID=$IID"
    #删除镜像
    docker rmi -f $service_name
    echo "delete $service_name image"
    #构建
    cd administrate/
    docker build -t $service_name .
    echo "build $service_name image"
else
    echo "no exist $service_name image,build docker"
    #构建
    cd administrate/
    docker build -t $service_name .
    echo "build $service_name image"
fi
#查看容器id
CID=$(docker ps | grep "$service_name" | awk '{print $1}')
echo "CID $CID"
if [ -n "$CID" ]
then
    echo "exist $service_name container,CID=$CID"
    #停止
    docker stop $service_name
    #删除容器
    docker rm $service_name
else
    echo "no exist $service_name container"
fi
#启动
cd /
echo "启动语句  docker run -d --name $service_name --net=host -p $service_prot:$service_prot -v $mount_address:$log_address $service_name"
docker run --privileged=true -d --name $service_name --net=host -p $service_prot:$service_prot -v $mount_address:$log_address $service_name
#查看启动日志
# docker logs -f -t --tail 100  $service_name
#!/bin/bash -il
#maven打包


mvn clean package -Dmaven.test.skip=true
echo 'package ok!'
echo 'build start!'
# cd ./

service_name="business"
service_prot=8060
log_address="/workplat/logs/logback/business"

mount_address="/mydata/app/logs/business"

echo "mount_address $mount_address"

#查看镜像id
IID=$(docker images | grep "$service_name" | awk '{print $3}')
echo "IID $IID"
if [ -n "$IID" ]
then
    echo "exist $service_name image,IID=$IID"
    #删除镜像
    docker rmi -f $service_name
    echo "delete $service_name image"
    #构建
    cd business/
    docker build -t $service_name .
    echo "build $service_name image"
else
    echo "no exist $service_name image,build docker"
    #构建
    cd business/
    docker build -t $service_name .
    echo "build $service_name image"
fi
#查看容器id
CID=$(docker ps | grep "$service_name" | awk '{print $1}')
echo "CID $CID"
if [ -n "$CID" ]
then
    echo "exist $service_name container,CID=$CID"
    #停止
    docker stop $service_name
    #删除容器
    docker rm $service_name
else
    echo "no exist $service_name container"
fi
#启动
cd /
echo "启动语句  docker run -d --name $service_name --net=host -p $service_prot:$service_prot -v $mount_address:$log_address $service_name"
docker run --privileged=true -d --name $service_name --net=host -p $service_prot:$service_prot -v $mount_address:$log_address $service_name
#查看启动日志
# docker logs -f -t --tail 100  $service_name
rm -rf node_modules/
rm -rf yarn.lock
rm -rf package-lock.json 
npm cache clean --force 
npm cache verify
echo "运行 npm install"
jenkins_shell_path=$(pwd)
echo "jenkins_shell_path: $jenkins_shell_path"
npm install
npm i --unsafe-perm
echo "运行 run build"
npm run build
echo "构建成功"
rm -rf /www/workplat-front/
mkdir -p /www/workplat-front/
mv ./dist/* /www/workplat-front/

遇到的问题归总

结语

至此,在使用Jenkins去部署调通前后端项目遇到的各种各样的问题,便复盘完了,解决这些问题期间,熬夜已经是家常便饭了,我是一个不太喜欢做复盘的人,因为个中酸楚太多(自己性格又不是比较乐观的那种),但是不复盘,不总结就不会有收获,希望读到这篇文章的朋友可以开心,这就足够了

posted @ 2022-12-22 23:29  xiaoxiaoguai98  阅读(69)  评论(0编辑  收藏  举报