CentOS7上GitHub 自动部署的实现

还是尽量维持每月至少一更的节奏吧。最近在玩Azure云,发现它的自动部署功能实在是太棒了。尝试在自己的机器设置Github自动部署功能,其实上是非常简单的。我们只需要一个 几十行的python脚本监听一下就可以了。

 

 

使用工具

一个基于python的脚本,Github地址 https://github.com/logsol/Github-Auto-Deploy

Github 提供的webhooks 工具,在项目 Settings -> Webhooks & Services -> Add webhook

 

 

 

安装Github Auto Deploy 脚本

python 就不讲述怎么安装了,一般机子上面都有。该脚本由两部分组成,GitAutoDeploy.py 是主程序,GitAutoDeploy.conf.json.example是设置文件,将设置文件改成自己喜欢的名字,然后放在喜欢的地方。然后打开主程序,里面很显然有句话是连接到设置文件的,把它改成自己设置文件的位置就可以了。

设置文件的写法

{
        "port": 12345监听的端口,
        "repositories":
        [{
                "url": "https://github.com/masterchan/moegirl_iOS_Server这里是监听的地址",
                "path": "/var/www/html/moegirl项目的地址",
                "deploy": "sh ~/run/deploy.sh >> /var/log/github_auto_deploy.log--webhook触发的事件"
        }]
}

 

 

然后启动程序并保持程序运行

python  GitAutoDeploy.py

 

 

启用Github 的Webhook

在项目的Settings中设置Deploy Key,或者更方便,在Personal Setting里面设置SSH keys,因为服务器经常在各种情况反复使用,所以弄个全局的也无所谓吧。

然后在项目中添加Webhook,非常简单,如果不成功还可以重新发送请求,这时应该能看到服务器那边有响应了,如果没有就进行调试吧。检查放火墙之类的。

 

 

 

使用系统服务开机自动运行Auto Deploy程序

这点跟KanColle服务器构建方法  中设置node.js 的deamon非常相似创建一个文件,然后 systemctl enable 服务、systemctl start 服务

[Unit]
Description=GitHub Auto Deploy Tool
After=network.target remote-fs.target nss-lookup.target


[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/bin/python /var/www/python/GitAutoDeploy.py

# Give the script some time to startup
TimeoutSec=300

[Install]
WantedBy=multi-user.target

 

 

 

 

这篇博文发表在 开发运维 | Dev Ops 目录下,标签为 , , ,
如需引用,请使用链接:https://note.mc256.dev/?p=694

This article published in 开发运维 | Dev Ops with tags , , , .
Cite this page using this link:https://note.mc256.dev/?p=694

您的邮箱地址不会被公开,评论使用Gravatar头像。
Your email address will not be published. This blog is using Gravatar.

正在提交评论... Submitting ...
正在为您准备评论控件 Loading Comment Plugin
Copyright © 2013-2024 mc256. All Rights Reserved.
Powered by WordPress on top of a dual-stack k3s Cluster using JuiceFS.
Wordpress Theme Designed By mc256.
Encrypted By Let's Encrypt.  Hosted On Linode + OVH + AWS.
DNS Provided By Hostker.
Status Page by CloudFlare Worker.