热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Github托管项目完成自动化布置

当我们运用github来托管项目时,每次布置项目都要走一样的流程,敲击一样的敕令行,特别的我们的node项目更是无法忍受这类反复事情。那究竟有无一种能够解放我们双手,当我们提交代码

当我们运用github来托管项目时,每次布置项目都要走一样的流程,敲击一样的敕令行,特别的我们的node项目更是无法忍受这类反复事情。

那究竟有无一种能够解放我们双手,当我们提交代码后,服务器自动实行我们已制定好的敕令行,答案是我们能够运用Github自有的Webhooks

Webhooks

Webhooks是来监测你在github上的种种事宜,我们能够经由过程定制它来监测一个push事宜,每当我们提交代码时Webhooks会被触发,这是我们能够经由过程设置一个HOST POST要求到你所须要的地点。

怎样设置

找到你在Github上的项目地点上的SettingWebhooks,如下图设置:

《Github托管项目完成自动化布置》

项目设置

  • 编写实行shell敕令

在项目根目次下新建deployed.sh文件,输入你想在服务器上实行的敕令行,如:

cd /front/docs/
git pull origin master

  • 编写实行剧本

在项目根目次下新建deployed.js文件

var http = require('http')
var spawn = require('child_process').spawn
var createHandler = require('github-webhook-handler')
var handler = createHandler({
path: '/pushCode',
secret: '12345678'
})
http.createServer(function (req, res) {
handler(req, res, function (err) {
res.statusCode = 404;
res.end('no such location')
})
}).listen(3000)
handler.on('error', function (err) {
console.error('Error:', err.message)
})
handler.on('push', function (event) {
console.log('Received a push event for %s to %s',
event.payload.repository.name,
event.payload.ref)
rumCommand('sh', ['./deployed.sh'], function (txt) {
console.log(txt)
})
})
function rumCommand(cmd, args, callback) {
var child = spawn(cmd, args)
var respOnse= ''
child.stdout.on('data', function (buffer) {
response += buffer.toString()
})
child.stdout.on('end', function () {
callback(response)
})
}

nginx设置

实行剧本跑在了3000端口,我们服务器对应启用到 3000 端口

upstream test {
server 127.0.0.1:3000;
}
server {
location /pushCode {
proxy_pass http://test;
proxy_redirect off;
}
}

布置项目

初次布置到服务器时,仍然是须要我们手动实行敕令git pull项目,当我们在服务器上clone下我们的项目后,在当地尝试修正下代码,然后再次提交,可看到背景的日记

《Github托管项目完成自动化布置》

再次检察Webhooks

《Github托管项目完成自动化布置》

示意已自动触发了接口,项目自动化布置胜利。

治理运用

在服务器上实行node敕令后,当我们脱离服务器后,实际上顺序历程封闭了,所以我们运用pm2来治理我们的node历程。

在项目根目次下新建pm2.json

[{
"name": "test",
"script": "deployed.js",
"env_dev": {
"NODE_ENV": "development"
},
"env_production": {
"NODE_ENV": "production"
}
}]

把一切的代码推奉上服务器,进入服务器项目目次,实行

// 启动敕令
pm2 start pm2.json
// 检察是不是启动
pm2 list
// 检察日记
pm2 logs

本文谢谢SkyCai供应的思绪。原文地点


推荐阅读
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • 烤鸭|本文_Spring之Bean的生命周期详解
    烤鸭|本文_Spring之Bean的生命周期详解 ... [详细]
  • 开始之前CompositionAPI可以说是Vue3的最大特点,那么为什么要推出CompositionApi,解决了什么问题?通常使用 ... [详细]
  • 深入理解Tornado模板系统
    本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 将Web服务部署到Tomcat
    本文介绍了如何在JDeveloper 12c中创建一个Java项目,并将其打包为Web服务,然后部署到Tomcat服务器。内容涵盖从项目创建、编写Web服务代码、配置相关XML文件到最终的本地部署和验证。 ... [详细]
  • 作为一名新手,您可能会在初次尝试使用Eclipse进行Struts开发时遇到一些挑战。本文将为您提供详细的指导和解决方案,帮助您克服常见的配置和操作难题。 ... [详细]
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
  • 本文详细介绍了Java中org.w3c.dom.Text类的splitText()方法,通过多个代码示例展示了其实际应用。该方法用于将文本节点在指定位置拆分为两个节点,并保持在文档树中。 ... [详细]
  • 在维护公司项目时,发现按下手机的某个物理按键后会激活相应的服务,并在屏幕上模拟点击特定坐标点。本文详细介绍了如何使用ADB Shell Input命令来模拟各种输入事件,包括滑动、按键和点击等。 ... [详细]
  • 深入了解 Windows 窗体中的 SplitContainer 控件
    SplitContainer 控件是 Windows 窗体中的一种复合控件,由两个可调整大小的面板和一个可移动的拆分条组成。本文将详细介绍其功能、属性以及如何通过编程方式创建复杂的用户界面。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
author-avatar
mobiledu2502930413
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有