1.为什么采用自动化部署

简而言之,程序员优秀传统:懒 =>高级生产力.

基于gitee进行的自动化部署,服务器环境为Ubuntu

基于webhooks进行的自动化部署更加轻快便捷

2.部署步骤

1).服务器购买

可以购买阿里云抢占式服务器进行实验,花费应该在一大洋以内,或者直接购买一年低配服务器,一百大洋以内.

  • 实例创建完成之后要配置安全组 => 只有配置了安全组,对应端口才可以访问(80,以及webhooks需要使用的7777端口

    • 进入实例

    • 配置安全组

    • 加入安全组,选择对应实例

    • 配置

2).服务器安装一些环境
  • 连接服务器
  • 安装一些环境,例如git,node,pm2
3).gitee创建仓库并配置webhooks
  • 创建仓库,并在服务器端添加ssh连接秘钥
// 服务器端生成秘钥:
ssh-keygen -t rsa -c "你的邮箱之类的标识用的" // 不用加双引号
  • 具体如何查看ssh-key,可以自行百度,系统不同略有不同
  • 在gitee添加ssh-key



  • 给仓库添加webhooks



4).webhooks代码与sh脚本
echo start build

# 获取最新版代码
git pull #安装依赖
npm install # 打包项目
npm run build echo build end
var http = require('http')
var createHandler = require('gitee-webhook-handler')
var handler = createHandler({ path: '/example', secret: 'example' })
// 上面的 secret 保持和 Gitee 后台设置的一致 function run_cmd(cmd, args, callback) {
var spawn = require('child_process').spawn
var child = spawn(cmd, args)
var resp = '' child.stdout.on('data', function (buffer) {
resp += buffer.toString()
})
child.stdout.on('end', function () {
callback(resp)
})
} http
.createServer(function (req, res) {
console.log(req.url)
handler(req, res, function (err) {
res.statusCode = 404
res.end('no such location')
})
})
.listen(7777, () => {
// 此端口要和gitee设置的端口号一致
console.log('WebHooks Listern at 7777')
}) handler.on('error', function (err) {
console.error('Error:', err.message)
}) handler.on('*', function (event) {
console.log('Received *', event.payload.action)
// run_cmd('sh', ['./deploy-dev.sh'], function(text){ console.log(text) });
})
// gitee 判断方式
handler.on('Push Hook', function (event) {
console.log('Received a push event for %s to %s', event.payload.repository.name, event.payload.ref)
// 此处shell脚本,根据自己编写的文件的文件名来决定
run_cmd('sh', ['./deploy-dev.sh'], function (text) {
console.log(text)
})
}) // github 判断方式
// handler.on('push', function (event) {
// console.log('Received a push event for %s to %s', event.payload.repository.name, event.payload.ref)
// // 分支判断
// if (event.payload.ref === 'refs/heads/master') {
// console.log('deploy master..')
// run_cmd('sh', ['./deploy-dev.sh'], function (text) {
// console.log(text)
// })
// }
// })
5).部署

  • 通过git clone ssh地址 将代码拉下来
  • 测试git pull 是否能够拉取最新代码
  • 通过 pm2 执行webhooks.js(可以先通过node 执行代码进行测试,没问题在通过pm2托管程序)
  • 配置nginx文件
      1. 修改nginx.conf 中的用户为服务器用户即服务器登录名 一般为root
cd /etc/nginx
vi nginx.conf

  • 2.添加项目配置
cd /etc/nginx/sites-enabled
vi example // 创建nginx服务配置 server {
listen 80;
# 如果有域名,此处可以根据域名进行映射,没有可以不写
server_name example.zdzspace.cn;
// 对应项目打包静态文件所在地址
root /root/example/dist;
location /{
# root /root/www;
// 当访问 的时候默认直接以dist/index.html 为入口
index index.html;
# 该配置能让vue项目刷新后,仍能正常访问页面
try_files $uri $uri/ /index.html;
}
}
nginx -s reload // 重新加载nginx
  • 所有操作完成之后,就可以直接通过git push操作自定进行代码打包编译
6).一些问题
  • 端口号占用
lsof -i:端口号  // 查看占用端口号pid
sudo kill -9 pid // 结束对应进程
  • nginx命令
nginx -t // 测试配置文件书写是否有误
nginx // 启动nginx
nginx -s stop // 停止nginx
nginx -s reload // 重启nginx
  • 接收到请求,但是没有执行脚本

    是否对应脚本文件名称写错了
  • nginx 不能启动

    配置文件书写错误

gitee基于webhooks实现前端简单自动化部署的更多相关文章

  1. 基于云原生DevOps服务自动化部署前端项目学习总结

    本文主要以部署前端Vue项目为例,讲述了如何基于云原生DevOps服务自动化部署前端项目~从开发完成到线上环境,我们只需提交代码即可~ 一.引言 作为一名开发人员,日常工作中我们除了需要负责代码的开发 ...

  2. 基于Jenkins,docker实现自动化部署(持续交互)

      前言 随着业务的增长,需求也开始增多,每个需求的大小,开发周期,发布时间都不一致.基于微服务的系统架构,功能的叠加,对应的服务的数量也在增加,大小功能的快速迭代,更加要求部署的快速化,智能化.因此 ...

  3. 基于Jenkins,docker实现自动化部署(持续交互)【转】

      前言 随着业务的增长,需求也开始增多,每个需求的大小,开发周期,发布时间都不一致.基于微服务的系统架构,功能的叠加,对应的服务的数量也在增加,大小功能的快速迭代,更加要求部署的快速化,智能化.因此 ...

  4. 基于 Node.js 的服务器自动化部署搭建实录

    基于 Node.js 的服务器自动化部署搭建实录 在服务器上安装 Node.js 编写拉取仓库.重启服务器脚本 配置 Github 仓库的 Webhook 设置 配置 Node.js 脚本 其他问题 ...

  5. 使用webhooks进行代码的自动化部署

    AutoMaticDeployment---自动部署 项目简介 使用Github的webhooks进行代码的自动化部署 本项目是个人最近搞的一个小工具,自己最近在用hexo部署个人博客(地址:http ...

  6. CentOS下Docker与.netcore(四)之 三剑客之一Docker-machine+jenkins简单自动化部署

    CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客 ...

  7. .NetCore基于Jenkins和Gogs的自动化部署方案

    准备工作 Jenkins和gogs的安装配置可以看前两篇:Jenkins安装.配置与说明  和 gogs安装与说明(docker) 此外,因为还要安装.net core的SDK和Git工具: 安装.n ...

  8. 前端 Jenkins 自动化部署

    这两天折腾了一下 Jenkins 持续集成,由于公司使用自己搭建的 svn 服务器来进行代码管理,因此这里 Jenkins 是针对 svn 服务器来进行的配置,Git 配置基本一致,后面也介绍了下针对 ...

  9. 基于 Nebula Operator 的 K8s 自动化部署运维

    摘要:Nebula Operator 是 Nebula Graph 在 Kubernetes 系统上的自动化部署运维插件.在本文,你将了解到 Nebula Operator 的特性及它的工作原理. 从 ...

  10. node项目自动化部署--基于Jenkins,Docker,Github(3)自动化部署

    GitHub仓库 由于现在的代码基本上都是多人合作开发,所以肯定会用到像 git 这样的版本控制工具 所以这里使用 GitHub 来做一个演示 首先我们需要在github上新建一个仓库 点击New来新 ...

随机推荐

  1. 多线程系列(十八) -AQS原理浅析

    一.摘要 在之前的文章中,我们介绍了 ReentrantLock.ReadWriteLock.CountDownLatch.CyclicBarrier.Semaphore.ThreadPoolExec ...

  2. pyecharts + Django你不知道这个架构有多美

    pyecharts + Django你不知道这个架构有多美 何为echarts?   pyecharts 是一个用于生成 Echarts 图表的类库.Echarts 是百度开源的一个数据可视化 JS ...

  3. JavaFx实现倒计时按钮组件(类似发送激活码)

    原文地址: JavaFx实现倒计时按钮组件(类似发送激活码) - Stars-One的杂货小窝 本文基于TornadoFx框架进行编写,封装工具代码是kotlin版本 然后也是顺便把这个封装成了sta ...

  4. Java递归实现全排列改进(一)---利用HashSet实现去重

    import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.Iter ...

  5. Harris/Shi-Tomasi角点检测

    机器视觉--角点检测 什么是角点检测 在几何学里,我们会看到各种各样的三角形.多边形等,它们都有一个显著的特征:包含了角点信息.比如在三角形里,我们有三个角:在矩形里,我们有四个角.我们将找到这些图像 ...

  6. Python实现端口扫描

    实验环境 攻击主机IP:172.18.53.145 目标主机IP:172.18.53.28 脚本编写 思路:使用TCP协议遍历连接目标的所有端口,如果连接成功说明该端口开放,为了提升效率,使用多线程执 ...

  7. cadence软件画版图操作

    cadence软件操作 1.原理图设计 电路的原理图设计和许多的电路设计软件是类似的,这里大致介绍一下基本的操作. 首先是新建一个cell的原理图: library manager>file&g ...

  8. 记一次 .NET某防伪验证系统 崩溃分析

    一:背景 1. 讲故事 昨晚给训练营里面的一位朋友分析了一个程序崩溃的故障,因为看小伙子昨天在群里问了一天也没搞定,干脆自己亲自上阵吧,抓取的dump也是我极力推荐的用 procdump 注册 AED ...

  9. KingbaseES V8R6集群运维系列 -- 修改ssh通信为 sys_securecmdd 通信

    一.适用于: 本文档使用于KingbaseES V008R006版本. 二.关于SYS_SECURECMDD: sys_securecmdd是KingbaseES集群自带的工具,集群监控.管理集群时通 ...

  10. P图神器Lama下载介绍,一键移除图片中任何不想要的元素

    Lama是一个完全自托管的图像处理工具,基于最前沿的AIGC模型,它可以从图片中删除任何不需要的物体.缺陷或对象,却看不到一点修改痕迹~ 在以前,我们想将图片中的文字.水印去除,可以使用ps,但ps的 ...