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. vscode git冲突 1. git stash 2. 更新代码 3. git stash pop 4.提交代码

    vscode git冲突 1. git stash 2. 更新代码 3. git stash pop 4.提交代码

  2. 启用reactRouter,让Navigator支持多页面

    启用reactRouter,让Navigator支持多页面 当前系统就一个页面,感觉是时候让她晋级到多页面程序了. 网上此类教程,我只记录我需要的最小范围. 0.目标 整站由原来的一个页面,变成2个页 ...

  3. Electron 开发过程中主进程的无法看到 console.log 输出怎么办

    开发过程中命令行工具(powershell.terminal)内无法看到 console.log 输出 Eelectron 的在开发过程中主进程 NodeJS 内往往需要 console.log 来进 ...

  4. day02-MySQL基础知识

    MySQL基本知识 1.数据库 1.1.创建数据库 语法: CREATE DATABASE [IF NOT EXISTS] db_name [create_specification[,create_ ...

  5. linux命令行下使用代理

    有两种方法: 1.curl -x <proxy_ip>:<proxy_port> <real_website> 举例:curl -x 12.99.109.52:80 ...

  6. springboot 低于 2.6 版本设置 SameSite=None,springboot 1.x set SameSite=none in embedded tomcat

    speingboot 使用自带的 tomcat 运行,设置 SameSite. springboot 过低的版本没有 SameSite 的属性设置,升级到 1.5.22 版本后,虽然 Rfc6265C ...

  7. 记录--短视频滑动播放在 H5 下的实现

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 短视频已经无数不在了,但是主体还是使用 app 来承载的.本文讲述 H5 如何实现 app 的视频滑动体验. 无声胜有声,一图顶百辩,且看 ...

  8. KafkaProducerDemo

    package com.lxw.kafkademo; import org.apache.kafka.clients.producer.KafkaProducer; import org.apache ...

  9. 用cmd检查端口关闭命令

    1.进入cmd 2.netstat -o -n -a | findstr :8080 TCP 0.0.0.0:3000 0.0.0.0:0 LISTENING 3116 3.taskkill /F / ...

  10. KingbaseES V8R6 集群运维系列 -- 命令行部署repmgr管理集群+switchover测试

    本次部署未使用securecmd/kbha工具,无需普通用户到root用户的互信. 一.环境准备 1.创建OS用户 建立系统数据库安装用户组及用户,在所有的节点执行. root用户登陆服务器,创建用户 ...