jenkins配置
# jenkins配置
# 更新系统
ubuntu debian系统
apt update -y
1
centos系统
yum update -y
1
# jenkins官网
https://www.jenkins.io/
# 安装java
安装包
链接:https://pan.baidu.com/s/1MK3coD5eGh-05-fqURDbMw 提取码:7k2v
centos系统 https://pkg.jenkins.io/redhat-stable/
debian/ubuntu系统 https://pkg.jenkins.io/debian-stable/
# 上传jar文件到服务器
start
#jenkins.war
mkdir /root/jenkins -p
cd /root/jenkins
nohup java -jar jenkins.war --httpPort=18080 > system.log 2>&1 & #自定义端口号 这里是18080
1
2
3
4
2
3
4
# 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
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
访问ip:端口号 /域名:端口号
# Jenkins 环境安装
1.在系统设置 (盾)> 插件设置 (manager pluins)> 可选插件 > 输入 Generic Webhook Trigger 勾选 安装 跳转安装页 底部勾选下载完成重启jenkins
2.git ssh 服务器配置 > 最好在服务器成功 git clone 项目 > 再去配置jenkins
ps: 调试最好让里面的命令 在窗口通过
# Jenkins Nodejs项目部署
# 选择参数(Choise Parameter)
名称
status
选项
Deploy
Rollback
描述
Deploy:【发布】
Rollback:【回滚】
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 字符串参数(string parameter)
version
0
回滚的版本号
1
2
3
4
5
6
2
3
4
5
6
1
# 添加选项参数
# 添加字符参数
# 添加构建shell脚本
定义参数
PUSH_IP="IP" #服务器IP
EXCUTE_PATH="/www/wwwroot/lara4" #服务器上传位置路径
PROJECT_PATH="blue-collar" #要跟jenkins 任务名称一样
PROJECT_NAME="blue-collar.tar.gz" #打包名称
1
2
3
4
2
3
4
根据送参执行构建
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
第二版
#!/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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
第三版
#!/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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
目标机器脚本
#!/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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
上次更新: 2023/07/18, 00:17:35