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

Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目

gohook

Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目

为了方便开发测试或项目部署至服务器不那么繁琐,搞一个自动部署的小轮子也是必要的。

小轮子需要涉及到 Coding 项目托管平台(也可以用 Github 平台),Linux服务器的Nginx、Python( Tornado框架 )。

同时配置项目托管平台的个人私钥或项目公钥,保证 git pull 能直接拉取。

GitHub 传送门: https://github.com/HavenShen/gohook

安装

1.下载或克隆此项目

git clone git@github.com:HavenShen/gohook.git

2.部署代码的服务器必须安装 Python 的 Tornado框架

pip install tornado
#或
easy_instal tornado

修改配置

1.修改 main.pyfile_path 变量路径

#希望自动部署项目路径
file_path = '/home/wwwroot/xxx'

2.配置 Nginx 的conf文件

# http 节点下增加
upstream frontends{
        server 127.0.0.1:8765;
    }
    
#增加 server 配置
server {
    listen 80;

    server_name xxx.xxx.com; #你的域名

    location / {
            proxy_pass_header Server;
            proxy_set_header Host $http_host;
            proxy_redirect off;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Scheme $scheme;
            proxy_pass http://frontends;
    }
}

在此可以重启下 Nginx

启动

1.运行tornado框架开启后台进程运行

#下面路径修改成你自己gohook存放目录文件夹用户组必须跟nginx一致
setsid python /home/wwwroot/gohook/main.py &

配置 Coding 项目 WebHook

1.url 填你的域名 http://xxx.xxx.com/gohook

2.tokengohook

测试

1.本地于服务器自动部署的git项目中使用 git 提交更新一下代码

touch test.md
git add .
git commit -m "test gohook"
git push -u origin master 

2.查看服务器上自动部署的git项目中是否存在 test.md

done.

相关文章:

  • Android知识点总结
  • 无锁和无等待的定义和例子
  • Leetcode Hot100
  • SpringMVC 源码深度解析lt;context:component-scangt;(扫描和注冊的注解Bean)
  • Django中render_to_response和render的区别(转载)
  • 【烈日炎炎战Android】
  • BZOJ 3168 Heoi2013 钙铁锌硒维生素 矩阵求逆+匈牙利算法
  • 【自定义view-水波纹动画】
  • android studio 修改gradle引用本地文件
  • 【烈日炎炎战后端】JAVA基础(3.4万字)
  • GZFramework代码生成器插件使用教程
  • 【烈日炎炎战后端】JAVA集合(1.8万字)
  • CSS3 伪类选择器 nth-child() 的用法
  • poi导入excel
  • 【烈日炎炎战后端】JAVA虚拟机(3.6万字)
  • [译]CSS 居中(Center)方法大合集
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • css系列之关于字体的事
  • EOS是什么
  • gcc介绍及安装
  • Python_OOP
  • select2 取值 遍历 设置默认值
  • spring security oauth2 password授权模式
  • vue 个人积累(使用工具,组件)
  • 二维平面内的碰撞检测【一】
  • 基于 Babel 的 npm 包最小化设置
  • 基于axios的vue插件,让http请求更简单
  • 浏览器缓存机制分析
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • #define 用法
  • #大学#套接字
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (SpringBoot)第二章:Spring创建和使用
  • (汇总)os模块以及shutil模块对文件的操作
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • .bat批处理(六):替换字符串中匹配的子串
  • .NET Micro Framework 4.2 beta 源码探析
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .NET多线程执行函数
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • @RequestMapping处理请求异常
  • [ vulhub漏洞复现篇 ] JBOSS AS 4.x以下反序列化远程代码执行漏洞CVE-2017-7504
  • [2016.7.Test1] T1 三进制异或
  • [20161214]如何确定dbid.txt
  • [android] 请求码和结果码的作用
  • [C/C++]数据结构 深入挖掘环形链表问题
  • [HackMyVM]靶场 VivifyTech
  • [JavaScript]_[初级]_[关于forin或for...in循环语句的用法]
  • [JMS 3] ActiveMQ实现简单的helloworld
  • [Machine Learning][Part 8]神经网络的学习训练过程
  • [moka同学笔记]yii表单dropdownlist样式