当前位置: 首页 > news >正文

Jenkins: 配置自动化发布脚本

Jenkins 配置自动化发布脚本

  • 在Jenkins的 一个工程项目任务中, 点击左侧 配置 栏
  • 在下面的 Build Steps 中,点击上面的 可用的环境变量列表
    • 找到里面有一个 WORKSPACE 的变量
    • 这个变量指向我们的jenkins下工程项目源码的目录
    • 需要把这个变量利用起来
  • 在 Build Steps 下执行 shell,假设这是一个前端的工程
    echo $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 中 填入
      rm -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 配置成 /项目名称目录
  • 这时候,整个发布流程就搞定了

相关文章:

  • 蓝桥杯2022年第十三届省赛真题-GCD
  • CSS3病毒病原体图形特效
  • iOS 开发 block 等待 block 或 block 等待
  • 基于opencv的图像处理系统的设计与实现
  • 如何在“Microsoft Visual Studio”中使用OpenCV编译应用程序
  • spring boot-操作excel(EasyExcel 快速开始)/ spring boot接受文件参数 File
  • 如何在Windows系统搭建Emby影音平台并实现远程访问本地文件【内网穿透】
  • 二进制安全找实习记录
  • unity内存优化之AB包篇(微信小游戏)
  • 动手学习深度学习之环境配置
  • STM32中MicroLIB的关闭为什么会导致卡死----解析
  • 【数据结构】堆
  • zookeeper快速入门二:zookeeper基本概念
  • 145 Linux 网络编程1 ,协议,C/S B/S ,OSI 7层模型,TCP/IP 4层模型,
  • 2.3 物理层设备
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • ES6--对象的扩展
  • ES6语法详解(一)
  • Fastjson的基本使用方法大全
  • JavaScript函数式编程(一)
  • JavaScript异步流程控制的前世今生
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • PHP面试之三:MySQL数据库
  • SQL 难点解决:记录的引用
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • Vue2 SSR 的优化之旅
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 分类模型——Logistics Regression
  • 经典排序算法及其 Java 实现
  • 前端攻城师
  • 数据仓库的几种建模方法
  • 网页视频流m3u8/ts视频下载
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 因为阿里,他们成了“杭漂”
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • # .NET Framework中使用命名管道进行进程间通信
  • #考研#计算机文化知识1(局域网及网络互联)
  • $(selector).each()和$.each()的区别
  • (16)Reactor的测试——响应式Spring的道法术器
  • (23)Linux的软硬连接
  • (js)循环条件满足时终止循环
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (NSDate) 时间 (time )比较
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (十一)图像的罗伯特梯度锐化
  • (万字长文)Spring的核心知识尽揽其中
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例