首页 > 其他分享 >服务器自动git pull拉代码

服务器自动git pull拉代码

时间:2023-02-25 14:02:11浏览次数:64  
标签:__ pull git logging get tornado self 服务器 logger


我使用的环境是:

服务器自动git pull拉代码_post请求


地址:​​https://dev.tencent.com/production​​项目的WebHook的配置:

服务器自动git pull拉代码_服务器_02

最后在你的服务器上配置一个网站,我这里指向的是https://code.telabytes.com ,该域名指向了我搭建的Python网站环境,只有一个文件,代码如下:

import tornado.ioloop
import tornado.web
import os
import hmac
import logging

from tornado.options import define, options
define("port", default=7777, help="run on the given port", type=int)

class PPLogger:
def __init__(self):
self.logger = logging.getLogger('/home/telabytes_www/www/CodeManager.log')
self.logger.setLevel(logging.INFO)
# formatter = logging.Formatter('[%(asctime)s] p%(process)s {%(pathname)s:%(lineno)d} %(levelname)s - %(message)s','%m-%d %H:%M:%S')
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
ch.setFormatter(formatter)
self.logger.addHandler(ch)

def write(self, msg):
self.logger.info(msg)


class MainHandler(tornado.web.RequestHandler):

def __init__(self, application, request, **kwargs):
super(MainHandler, self).__init__(application, request, **kwargs)
self.SECRET_TOKEN = "你配置的项目的WebHook的令牌字符串"

def get(self):
self.write("hello")
self.finish()

def post(self):
# 返回值可以参考
# https://dev.tencent.com/u/dtid_719055549c7236f4/p/PrintPlusPlus/setting/webhook/119556/edit
headers = self.request.headers
logger = PPLogger()
webHook_version = headers.get('X-Coding-WebHook-Version')
if webHook_version != "v2":
logger.write("仅支持WebHook 2.0版本操作的!")
return
event = headers.get('X-Coding-Event')
if event != "push":
print("仅支持push操作的!")
return
delivery = headers.get('X-Coding-Delivery')
signature = headers.get('X-Coding-Signature')
content = self.request.body
sha1 = hmac.new(bytes(self.SECRET_TOKEN, encoding="utf8"), content, 'sha1')
sha1 = sha1.hexdigest()
calculate_signature = 'sha1=' + sha1
# if not calculate_signature == signature:
# print('验证签名失败!')
# return
# pusher = self.get_arguments("pusher")
# sender = self.get_arguments("sender")
# repository = self.get_arguments("repository")
# ssh_url = repository["ssh_url"]
# default_branch = repository["default_branch"] # 一般是master

# 切换目录到项目里
projectPath = "/home/telabytes_www/PrintPlusPlus"
os.chdir(projectPath)
# pull代码
os.system("git pull origin master")

def Application():
settings = dict(xsrf_cookies=False,debug=False)
return tornado.web.Application(
[(r"/", MainHandler)],
**settings
)

if __name__ == "__main__":
tornado.options.parse_command_line()
Application().listen(options.port)
tornado.ioloop.IOLoop.instance().start()

当部署完该拉取代码的项目后到服务器后,你在浏览器上可以浏览 https://code.telabytes.com ,然后每次你push代码到服务器后,腾讯的代码管理平台就会检测​​push事件​​,然后发送一个post请求到你的绑定的服务器地址https://code.telabytes.com , 你在该访问的post请求中处理git拉取代码功能。

每次的接收到的post请求都会在coding.net平台的webhook这里产生一条记录,如图所示:

服务器自动git pull拉代码_post请求_03

很明显的是,绿色表示,请求成功,红色表示我们的服务器发生了某些错误。具体可以点击详情查看


标签:__,pull,git,logging,get,tornado,self,服务器,logger
From: https://blog.51cto.com/u_14062833/6085437

相关文章

  • 服务器常用端口一览
    title:服务器常用端口一览author:杨晓东permalink:服务器常用端口一览date:2021-10-0211:27:04categories:-服务器tags:-端口Windows端口和所提供的服务......
  • Github首次上传代码测试
    1.首先到你要上传代码的文件夹下;2.点击gitbashhere,弹出git界面;3.要注意的是,第一次上传代码时,可能会出现为创建基础分支“branch”,所以要上传一个单独的测试文档;git......
  • git提交命令
    链接:https://www.waimaiguai.com/technology/article/5425017来源:外卖怪 外卖怪技术学习git更新代码命令2022-08-1702:56:11gitgit常使用的命令1、gitinit—在当前目......
  • 信息安全之linux服务器基线安全(等保要求参考)
    linux服务器基线安全(等保配置)备注:公司要求做服务器的基线安全配置,通过相关软件扫描出来结果,以下配置作为参考CU_OS_Linux_B_5.3.10_1限制root用户远程登录-telnet自动......
  • 信息安全之windows服务器的基线安全(等保要求)
    windows服务器的基线安全(等保要求参考)下图是需要做基线配置的选项备注:具体都已经贴出来了,按照这个参考可以达标合格,有部分需要人工现场核实确认,这个要根据具体环境进行操......
  • 澳门服务器这么少优缺点详解
         最近有不少网友咨询澳门服务器,澳门服务器属于比较冷门的服务器,虽然和香港服务器一样不需要备案,但国内很多IDO不提供澳门服务器租用,这是为什么呢?这里给大家介......
  • VSCode配置git
    1.背景vscode中基础git;前提:本地已经安装好了git 有这样的菜单,并且可以正常上传下载代码2.步骤步骤一:找的git的安装路径:D:\ProgramFiles\Git步骤二:配置环......
  • error:0308010C:digital envelope routines::unsupported
    Node.jsv18.14.1运行项目node:internal/crypto/hash:71this[kHandle]=new_Hash(algorithm,xofLen);^Error:error:0308010C:digitalenve......
  • 服务器原理与架构分析
    服务器原理与架构分析微服务架构实施原理详解基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发、部署、运维管理、持续开发......
  • 利用Github Action自动化部署SpringBoot项目
    环境准备一台拥有公共IP的1核1G以上配置的Linux云服务器。笔者选用的Linux发行版为CentOSLinuxrelease7.0.1406(Core)已安装好JDK8与Maven。若是还未安装,可以参考以......