Jenkins 配置自动化发布脚本
-
在Jenkins的 一个工程项目任务中, 点击左侧 配置 栏
-
在下面的 Build Steps 中,点击上面的 可用的环境变量列表
- 找到里面有一个 WORKSPACE 的变量
- 这个变量指向我们的jenkins下工程项目源码的目录
- 需要把这个变量利用起来
-
在 Build Steps 下执行 shell,假设这是一个前端的工程
shellecho $WORKSPACE cd $WORKSPACE npm install npm run build
- 以上,就可以进行构建了, build 完成后, 会生成dist目录
- 我们要发布的就位于 dist 目录下
-
接下来就是ssh上传, 将 dist 目录下的文件部署到远程服务器
- 回顾下之前 Dashboard / 系统管理 / 系统配置
- 找到下面的 SSH Server, 找到 Hostname, 这里可能是一个 ip地址, 比如:192.168.3.22
- 可以通过 ssh 登录服务器: $
ssh root@192.168.3.22
- 假设之前在jenkins上填写默认的路径是 /root, 我们想要发布到 /root/resource/nginx 中
-
现在要做文件上传发布,回到之前填写 执行 shell的地方,点击 增加构建步骤
-
选择 Send files or execute commands over SSH
-
这时候出现了 Send files orexecute commands over SSH 面板
-
这里,出现 SSH Server面板, 之前配置好了,直接选择默认的 Server
-
下面是 Transfers, Transfer Set Source files
- 这里,填入
dist/**
- 这里,填入
-
下面的 Remote directory 填入
/resource/nginx/项目名称目录
- 按照之前配置,默认登录在了 /root 目录,所以这里只要如上填写即可
- 前面不能添加 /root
-
特别注意
-
这里,直接上传到
/resource/nginx/项目名称目录
其实是不行的 -
因为,如果之前有过发布,可能会导致上传不成功
-
所以,这里上传目录应该填入
/resource/nginx/项目名称目录-tmp
-
这里,先上传到一个临时目录,下面还有一个
Exec command
的表单需要填写命令 -
在
Exec command
中 填入shellrm -rf /root/resource/nginx/项目名称目录 mv /root/resource/nginx/项目名称目录-tmp/dist /root/resource/nginx/项目名称目录 rm -rf /root/resource/nginx/项目名称目录-tmp
-
可以看出,这里对目录文件删除后进行更新
-
点击最下面的 应用 按钮
-
-
重新测试,回调项目中,点击 立即构建
-
还有
- 如果 /root/resource/nginx/ 映射已经绑定了某个域名,如 https://abc.com
- 在访问 nginx 目录下的
项目名称目录
文件夹时候,这时候需要访问 https://abc.com/项目名称目录 - 如果这个前端项目是一个vue2的项目,注意在 vue.config.js 中 publicPath 配置成
/项目名称目录
-
这时候,整个发布流程就搞定了