一三六、从零到一实现自动化部署
上一篇讲到服务器部署Node项目、Vue spa静态项目、ssr项目
- 个人blob地址
- csdn地址
然而每次都要去手动部署,不仅麻烦,对Nginx,Linux不熟悉的也不友好,目前的常见的自动化部署有jenkins
、docker
等,但是有一定的学习成本,本文通过Node+vue的实现一键自动化部署。
技术栈
前端:
- vue (MVVM 框架)
- element-ui (ui框架)
- axios (接口请求)
- socket.io-client (创建 io 实例)
- vue-socket.io ($socket挂载到vue实例)
服务端:
- Node.js
- koa
- socket.io
- log4js
- pm2
实现思路
前端选择要部署的项目点击部署按钮,调用node提供的部署接口,node拿到参数执行部署脚本,并将部署 log 通过websocket返回给前端
流程图如下
具体实现
服务端
1、开启socket服务
// app.js
// 开启 socket 服务
// socket模块
const {Server} = require('socket.io');
// 为socket新起个端口
const io = new Server(9001, {// 是否启用与 Socket.IO v2 客户端的兼容性。allowEIO3: true,transports: ['websocket', 'polling'],cors: {origin: '*',methods: ['GET', 'POST']}
});io.on('connection', socket => {console.log('connection socket连接成功');app.context.socketIo = socket;
});
2. 实现deploy接口
// app/api/v1/deploy.js
const Router = require('koa-router');const {DeployValidator} = require('@validators/deploy');
const {Deploy} = require('@deploy/index.js');
const {Resolve} = require('@lib/helper');
const res = new Resolve();const router = new Router({prefix: '/api/v1'
});//
router.post('/deploy', async ctx => {// 通过验证器校验参数是否通过const v = await new DeployValidator().validate(ctx);// 搜索写真const [err, data] = await Deploy.runSh({kw: v.get('body.kw'),socketIo: ctx.socketIo});console.log('
一三六、从零到一实现自动化部署相关推荐
- 打包node服务端_如何基于NodeJS从零构建线上自动化打包工作流?
前言 NodeJS在前端领域正扮演着越越重要的地位,它不仅可以让前端工作者使用javascript编写后端代码,还能方便地搭建响应速度快.易于扩展的网络应用.Node.js 使用事件驱动,非阻塞I/O ...
- 【nodejs原理源码赏析(9)】用node-ssh实现轻量级自动化部署
[摘要] node脚本实现轻量级自动化部署 示例代码托管在:http://www.github.com/dashnowords/blogs 一. 需求描述 前端工程出包后实现简易的自动化部署. 二. ...
- K8S实战集训第一课 Ansible自动化部署k8s、弹性伸缩、Helm包管理、k8s网络模型介绍
Ansible自动化部署K8S集群 一.Ansible自动化部署K8S集群 1.1 Ansible介绍 Ansible是一种IT自动化工具.它可以配置系统,部署软件以及协调更高级的IT任务,例如持续部 ...
- kubectl查看node状态_全栈之路:使用pm2自动化部署node项目
相关前三篇 全栈之路:前端工程师如何从 0 开始了解 Docker 全栈之路:vue-cli3 项目从搭建优化到docker部署 全栈之路:从零搭建docker+jenkins+node.js自动化部 ...
- centos+jenkins+nginx+gitlab前端自动化部署全记录
0. 前言 我们在开发一个新的项目时,总是需要将前端部署到测试服务器上,给测试或者产品访问.简单的来说,如果想部署前端到服务器,服务器需要提供一个服务来访问前端.如果我们在开发中没有涉及Node.js ...
- 全能代码生成器,自动生成前后端代码、生成项目框架、生成JavaBean、生成数据库文档、自动化部署项目(TableGo v8.0.0)
TableGo_20220801 v8.0.0 正式版发布,此次版本累计更新如下: 1.生成项目功能新增支持若依框架,可同时生成若依框架代码和所有业务表的前后端基础CRUD代码,一键搞定所有 2. ...
- Jenkins 流水线 获取git 分支列表_jenkins的安装和配置 自动化部署 码云 gitee
目前项目使用的jenkins 自动化部署的还是比较多的 ,所以趁着脑瓜子还清醒,来写一下如何使用 jenkins 使用码云更新代码后,重新构建就是最新的代码,费话不多少了 直接上货, 首先要做一下准备 ...
- Azure自动化部署运维浅谈
本次来谈一谈如何在Azure中实现一些简单的自动化运维的需求,一般来讲自动化运维我们通过很多第三方的工具平台实现,比较流行的目前有很多,比如老牌的chef, puppet,新兴的PowerShell ...
- 公有云环境下应用程序的自动化部署与水平扩展问题
先介绍了一下公有云计算环境下的一些特点,再根据这些特点探讨一下作为云计算用户而言,如何对应用程序做好自动化部署和水平扩展(弹性计算)的问题.阅读本文需要有一定的云计算知识.开发运维知识. 公有云环境的 ...
最新文章
- BERT各个场景实例代码
- 第二周 第七节 列表的使用
- Qt修炼手册2_动态设计
- 一些C和C++的常见问题集锦 ----不停更新
- 15.8.2 泛型数组
- 九把巨剑,为什么会从天而降?
- 深入理解Javascript中构造函数和原型对象的区别
- C++程序调用python3
- php header 刷新,一个离奇的php header函数问题的解决
- sqlserver 组内排序
- 《信号与系统学习笔记》—周期信号的博里叶级数表示(二)
- 6款支持中文语音识别开源软件的简单使用
- 计算机识别人脸原理,人脸识别:原理、方法与技术
- 【回眸】哈希值是什么
- ubuntu 18改MAC桌面
- 第三次小班讨论课——海明检验码、用晶体管而不是逻辑门实现异或门
- WEB网站压力测试方案 压力测试如何换算并发用户数
- 智能手环---设计与实现
- 客户端与服务端的区别
- Deepin禁用usb声卡
热门文章
- 沈阳5年java月薪多少钱_沈阳java工资怎么样,沈阳java工资很高吗,沈阳java工资水平如何...
- base64解析图片 【转】
- 计算机组装大赛的新闻稿,重庆科创职业学院开展“科创IT杯”计算机技能竞赛(新闻稿)...
- 服务器多如何开虚拟机,服务器可以多开虚拟机
- tp5开发PayPal
- 模拟演讲者视图_PPT中设置演讲者视图的方法
- 在腾讯会议中如何让别人看不到演讲者视图,只有自己能看到?
- Unity基础-物理系统
- 转载二分 01 分数规划即最大化平均值的证明0/1分数规划、最优比率生成树、最优比率环
- 六成大学生认为自己毕业10年内会年入百万!网友:知乎上多了,没被社会毒打过吧!...