Skip to content

jenkins配置

更新系统

ubuntu debian系统

none
apt update -y

centos系统

none
yum update -y

jenkins官网

https://www.jenkins.io/

安装java

安装包

链接:https://pan.baidu.com/s/1MK3coD5eGh-05-fqURDbMw 提取码:7k2v

centos系统 https://pkg.jenkins.io/redhat-stable/

image-20221207220213627

debian/ubuntu系统 https://pkg.jenkins.io/debian-stable/

上传jar文件到服务器

start

shell
#jenkins.war
mkdir /root/jenkins -p
cd /root/jenkins
nohup java -jar jenkins.war --httpPort=18080 > system.log 2>&1 &  #自定义端口号 这里是18080

jenkins 服务挂掉

ps -ef | grep java

root      344735 50.7 12.7 4587204 445088 pts/0  Sl   22:32   0:24 java -jar jenkins.war --httpPort=18080
root      345056  0.0  0.0   6300   660 pts/0    S+   22:32   0:00 grep --color=auto jenkins

一个进程是 Jenkins 服务进程,它的命令是 java -jar jenkins.war --httpPort=18080。这个进程的用户是 root,进程 ID 是 344735,它占用了一定的 CPU 和内存资源。
另一个进程是执行 grep 命令搜索 jenkins 关键词的进程。它的命令是 grep --color=auto jenkins,它会显示包含 jenkins 的进程信息。这个进程的用户是 root,进程 ID 是 345056。


kill -9 344735

在start

访问ip:端口号 /域名:端口号

Jenkins 环境安装

1.在系统设置 (盾)> 插件设置 (manager pluins)> 可选插件 > 输入 Generic Webhook Trigger 勾选 安装 跳转安装页 底部勾选下载完成重启jenkins

2.git ssh 服务器配置 > 最好在服务器成功 git clone 项目 > 再去配置jenkins

ps: 调试最好让里面的命令 在窗口通过

Jenkins Nodejs项目部署

image-20230208001719309

image

# 选择参数(Choise Parameter)
名称
status

选项
Deploy
Rollback

描述
Deploy:【发布】
Rollback:【回滚】
# 字符串参数(string parameter)
version

0

回滚的版本号

img

添加选项参数

image-20220628022949363

添加字符参数

image-20220628023008672

添加构建shell脚本

定义参数

shell
PUSH_IP="IP"                                      #服务器IP
EXCUTE_PATH="/www/wwwroot/lara4"                 #服务器上传位置路径
PROJECT_PATH="blue-collar"                       #要跟jenkins 任务名称一样
PROJECT_NAME="blue-collar.tar.gz"                #打包名称

根据送参执行构建

shell
case $status in
Deploy)
    echo "======status:$status========="
echo $PATH
echo "========编译打包开始,刷新下环境变量文件========="

source /etc/profile
echo "====查看npm版本,看npm命令是否失效===="

npm -v
pnpm -v
pnpm install
npm run build
## 打开jenkins工作目录项目文件夹

cd /root/.jenkins/workspace/$PROJECT_PATH/
ls
## 将打包好的文件夹,压缩,方便后续scp传输

echo "================将dist文件夹打成压缩包========================="

tar czvf /root/.jenkins/workspace/$PROJECT_PATH/$PROJECT_NAME  dist
echo "========开始上传dist文件到测试服============="


scp  $PROJECT_NAME  root@$PUSH_IP:$EXCUTE_PATH/$PROJECT_NAME
echo "==================上传完成===================="
echo "==================解压===================="

ssh  root@$PUSH_IP << eeooff
cd $EXCUTE_PATH
tar -xzvf $PROJECT_NAME
exit
eeooff
## 可以先手动在jenkins工作目录下新建一个backup_web文件夹,省的在脚本里写判断,再去建文件夹=====
echo "======移动压缩包到备份文件夹========================="

mv $PROJECT_NAME  /root/.jenkins/workspace/backup_web/$PROJECT_NAME.$BUILD_NUMBER
  echo "deploy done!"
    ;;
Rollback)
echo "======status:$status========"
echo "======build_id:$version======="
backup_path="${JENKINS_HOME}/workspace/backup_web"
cd $backup_path
echo "==============把想要回滚的jar包发送到测试服务器==================="
scp  $PROJECT_NAME.$version  root@$PUSH_IP:$EXCUTE_PATH/$PROJECT_NAME
echo "==================上传完成===================="
echo "==================解压===================="
ssh  root@$PUSH_IP "cd $EXCUTE_PATH;tar -xzvf $PROJECT_NAME;exit"
    echo "roll_back done!"
    ;;
*)
esac

第二版

shell
#!/bin/bash
CURRENT_PATH=`pwd`                               #目录
PUSH_IP="49.232.***.**"                         #服务器IP
EXCUTE_PATH="/www/wwwroot/****"                       #服务器上传位置路径
PROJECT_PATH="blue-dollar-admin-rebuild"                      #要跟jenkins 任务名称一样
PROJECT_NAME="blue-dollar-admin-rebuild.tar.gz"                        #打包名称

case $status in
Deploy)
    echo "======status:$status========="
echo $PATH
echo "========编译打包开始,刷新下环境变量文件========="

source /etc/profile
echo "====查看npm版本,看npm命令是否失效===="
cd /root/.jenkins/workspace/$PROJECT_PATH/
ls
npm -v
pnpm -v
pnpm install --no-frozen-lockfile
pnpm run build:test
## 打开jenkins工作目录项目文件夹

## 将打包好的文件夹,压缩,方便后续scp传输

echo "================将dist文件夹打成压缩包========================="
#tar czvf $PROJECT_NAME -C /root/.jenkins/workspace/$PROJECT_PATH dist .
tar zcvf $PROJECT_NAME -C dist .
echo "===检测npm打包是否成功==="
if [ -d "./dist" ];then
    echo "打包文件存在,程序继续执行"
else
    echo "打包文件不存在,程序终止,请检查打包失败原因"
    exit 1
fi
#tar czvf /root/.jenkins/workspace/$PROJECT_PATH/$PROJECT_NAME.  dist .
echo "========开始上传dist文件到测试服============="

scp  ../$PROJECT_PATH.sh    root@$PUSH_IP:$EXCUTE_PATH/$PROJECT_PATH.sh
scp  $PROJECT_NAME  root@$PUSH_IP:$EXCUTE_PATH/$PROJECT_NAME
echo "==================上传完成===================="

echo "==================解压===================="

#ssh  root@$PUSH_IP "cd $EXCUTE_PATH;tar -xzvf $PROJECT_NAME;chmod -R 755 $EXCUTE_PATH;chown -R www:www $EXCUTE_PATH;bash $PROJECT_PATH.sh"
ssh  root@$PUSH_IP "cd $EXCUTE_PATH;chmod +x $PROJECT_PATH.sh;bash $PROJECT_PATH.sh"
## 可以先手动在jenkins工作目录下新建一个backup_web文件夹,省的在脚本里写判断,再去建文件夹=====
echo "======移动压缩包到备份文件夹========================="
mkdir -p /root/.jenkins/workspace/backup_web/$PROJECT_PATH
find /root/.jenkins/workspace/backup_web/$PROJECT_PATH -mtime +1 -delete
mv $PROJECT_NAME  /root/.jenkins/workspace/backup_web/$PROJECT_PATH/$PROJECT_NAME.$BUILD_NUMBER
echo "==================删除本地的源文件=========="
rm -rf ../$PROJECT_PATH
  echo "deploy done!"
    ;;
Rollback)
echo "======status:$status========"
echo "======build_id:$version======="
backup_path="${JENKINS_HOME}/workspace/backup_web/$PROJECT_PATH"
cd $backup_path
echo "==============把想要回滚的包发送到测试服务器==================="
scp  $PROJECT_NAME.$version  root@$PUSH_IP:$EXCUTE_PATH/$PROJECT_NAME
echo "==================上传完成===================="
echo "==================解压===================="
ssh  root@$PUSH_IP "cd $EXCUTE_PATH;tar -xzvf $PROJECT_NAME;exit"
    echo "roll_back done!"
    ;;
*)
esac

第三版

shell
#!/bin/bash
CURRENT_PATH=`pwd`                               #目录
PUSH_IP="119.91.71.164"                         #服务器IP
EXCUTE_PATH="/www/wwwroot/www.hellocode.vip"                       #服务器上传位置路径
PROJECT_PATH="blog"                      #要跟jenkins 任务名称一样
PROJECT_NAME="blog.tar.gz"  #打包名称
DIST_PATH="docs/.vuepress/dist"  #打包路径

case $status in
Deploy)
    echo "======status:$status========="
echo $PATH
echo "========编译打包开始,刷新下环境变量文件========="

source /etc/profile
echo "====查看npm版本,看npm命令是否失效===="
cd /root/.jenkins/jobs/$PROJECT_PATH/workspace/
ls
npm -v
yarn -v
yarn install --no-frozen-lockfile
yarn run build
## 打开jenkins工作目录项目文件夹

## 将打包好的文件夹,压缩,方便后续scp传输

echo "================将dist文件夹打成压缩包========================="
#tar czvf $PROJECT_NAME -C /root/.jenkins/jobs/$PROJECT_PATH/workspace dist .
tar zcvf $PROJECT_NAME -C $DIST_PATH .
echo "===检测npm打包是否成功==="
if [ -d "./docs/.vuepress/dist" ];then
    echo "打包文件存在,程序继续执行"
else
    echo "打包文件不存在,程序终止,请检查打包失败原因"
    exit 1
fi
#tar czvf /root/.jenkins/jobs/$PROJECT_PATH/workspace.  dist .
#echo "========开始上传dist文件到测试服============="

#scp  ../$PROJECT_PATH.sh    root@$PUSH_IP:$EXCUTE_PATH/$PROJECT_PATH.sh
#scp  $PROJECT_NAME  root@$PUSH_IP:$EXCUTE_PATH/$PROJECT_NAME
#echo "==================上传完成===================="

echo "==================删除网站的源文件,创建文件夹===================="
rm -rf $EXCUTE_PATH
mkdir -p $EXCUTE_PATH

echo "==================解压===================="
tar -xzvf $PROJECT_NAME -C $EXCUTE_PATH

#ssh  root@$PUSH_IP "cd $EXCUTE_PATH;tar -xzvf $PROJECT_NAME;chmod -R 755 $EXCUTE_PATH;chown -R www:www $EXCUTE_PATH;bash $PROJECT_PATH.sh"
ssh  root@$PUSH_IP "cd $EXCUTE_PATH;chmod +x $PROJECT_PATH.sh;bash $PROJECT_PATH.sh"
## 可以先手动在jenkins工作目录下新建一个backup_web文件夹,省的在脚本里写判断,再去建文件夹=====
echo "======移动压缩包到备份文件夹========================="
mkdir -p /root/.jenkins/jobs/$PROJECT_PATH/backup_web
find /root/.jenkins/jobs/$PROJECT_PATH/backup_web -mtime +1 -delete
mv $PROJECT_NAME  /root/.jenkins/jobs/$PROJECT_PATH/backup_web/$PROJECT_NAME.$BUILD_NUMBER
echo "==================删除本地的源文件=========="
rm -rf ../$PROJECT_PATH
  echo "deploy done!"
    ;;
Rollback)
echo "======status:$status========"
echo "======build_id:$version======="
backup_path="${JENKINS_HOME}/jobs/$PROJECT_PATH/backup_web"
cd $backup_path
echo "==============把想要回滚的包发送到测试服务器==================="
scp  $PROJECT_NAME.$version  root@$PUSH_IP:$EXCUTE_PATH/$PROJECT_NAME
echo "==================上传完成===================="
echo "==================解压===================="
ssh  root@$PUSH_IP "cd $EXCUTE_PATH;tar -xzvf $PROJECT_NAME;exit"
    echo "roll_back done!"
    ;;
*)
esac

目标机器脚本

shell
#!/bin/bash
PROJECT_NAME="blue-dollar-admin-rebuild"
EXCUTE_PATH="/www/wwwroot/******"
echo "*********删除上一版本的文件*********"
rm -rf assets
echo "*********解压***********"
tar -xzvf $PROJECT_NAME.tar.gz
chmod -R 755 $EXCUTE_PATH
chown -R www:www $EXCUTE_PATH
chmod 644 `find ../pc -type f`
echo "列出本目录文件权限"
ls -al
echo "修改文件权限完成"
echo "删除打包文件和远程脚本"
rm -rf ./$PROJECT_NAME.tar.gz
rm -rf ./$PROJECT_NAME.sh

Lucking