• Stars
    star
    203
  • Rank 192,958 (Top 4 %)
  • Language
    Go
  • License
    MIT License
  • Created over 7 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Golang 实现的自动化部署和运维工具,支持:Github / GitLab / GitOsc。

SmartWebHook

Build Status Build status

一个基于 Golang 开发的用于迅速搭建并使用 WebHook 进行自动化部署和运维系统,支持:Github / GitLab / GitOsc。

界面和开发思路参考于 git-webhook

在原作者的基础上解耦了WebHook和Server之间关系,实现了多对多关系。

因与服务器通信使用的是SSH方式,请注意保管服务器账号和密码。

同时支持 C/S 模式,配合客户端可以实现不用SSH也可以远程执行命令。

当使用 C/S 模式时,server 的账号和密码是服务器端跟 Client 第一次通信时的认证信息,服务器端将通过 http://remote url/token 地址换取连接 WebSocket 的密钥,该密钥会作为 x-smarthook-token 请求头发送到客户端进行认证连接。

如何使用?

Docker & docker-compose

文档

源码安装使用

1、拉取源码

git clone github.com/lifei6671/go-git-webhook.git

2、编译源码

#更新依赖
go get -d ./...

#编译项目
go build -v -tags "pam" -ldflags "-w"

3、配置

系统的配置文件位于 conf/app.conf 中:

appname = smartwebhook
#监听的地址,如果要使用 nginx 作为前端代理
#httpaddr = 127.0.0.1
#监听的端口号
httpport = 8080
runmode = dev
sessionon = true
#保存到客户端的 session 名称
sessionname = smart_webhook_id
copyrequestbody = true

#生成回调地址时完整的域名
base_url = https://hook.iminho.me

#时区设置
timezone = Asia/Shanghai

#数据库配置
db_host=127.0.0.1
db_port=3306
db_database=webhook_db
db_username=root
db_password=123456

queue_size=50

请将 conf/的app.conf.example 重命名为 app.conf ,并修改 数据和端口号配置。

4、运行

chmod 0777 go-git-webhook

#恢复数据库,请提前创建一个空的数据库
./go-git-webhook orm syncdb webhook

#创建管理员账户
./go-git-webhook install -account=admin -password=123456 [email protected]

注意

添加 SSH Server

  • 当添加的是一台 SSH 方式的服务器时,Server IP 为SSH外网IP地址,端口号为SSH端口号,账号为登录账号,SSH Private Key 可以是密码也可以是登录密钥,系统会自动识别密码类型。

  • 如果添加的是一台 Client 模式的服务器时,Server IP 则为带有访问协议的网址,例如 http://client.iminho.me,端口号为HTTP端口号,如果为HTTP可是80,如果是HTTPS则是443. 账号和密码需要跟 Client 配置一致。

添加 WebHook

  • WebHook 的回调脚本不支持换行,建议用服务器 shell 脚本代替命令。

  • 添加完 WebHook 后,会自动生成对应的url回调地址,将改地址填写到对应git服务的webhooks中即可。其中 Secure 字段暂时不支持。

后台运行

使用nohup后台运行

nohup ./go-git-webhook &

使用supervisor运行

[program:go-git-webhook-client]
#设置为你的程序工作目录,否则会找不到配置文件
directory=/opt/go/src/github.com/lifei6671/go-git-webhook
command=/opt/go/src/github.com/lifei6671/go-git-webhook/go-git-webhook
autostart=true
autorestart=true
startsecs=10
stdout_logfile=/var/log/go-git-webhook/access.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stderr_logfile=/var/log/go-git-webhook/error.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB

请将配置中的 command 配置为你服务器的实际程序地址

使用 nginx 作为前端代理

如果使用nginx 作为前端代理,需要配置 WebSocket 支持,具体配置如下:

server {
    listen       80;
    server_name  webhook.iminho.me;

    charset utf-8;
    access_log  /var/log/nginx/webhook.iminho.me/access.log;

    root "/var/go/src/go-git-webhook";

    location ~ .*\.(ttf|woff2|eot|otf|map|swf|svg|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {
        root "/var/go/src/go-git-webhook";
        expires 30m;
    }
    
    # 这是为了配合任务执行时自动刷新任务状态,需要开启 WebSocket 支持,请将 proxy_pass 参数配置为你的服务地址
    location /hook/scheduler/status {
        proxy_pass http://127.0.0.1:8080;
        proxy_redirect off;

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
    location / {
        try_files /_not_exists_ @backend;
    }
    
    # 这里为具体的服务代理配置
    location @backend {
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host            $http_host;
        proxy_set_header   X-Forwarded-Proto $scheme;

        proxy_pass http://127.0.0.1:8080;
    }
}

使用技术

go-git-webhook 基于beego框架1.7.2版本开发。编译于golang 1.8版本。使用glide作为包管理工具。

界面预览

WebHook

New WebHook

WebHook And Server List

New Server

Scheduler List

问题反馈

如发现 BUG 请在 issues 中反馈。

More Repositories

1

interview-go

golang面试题集合
Go
4,240
star
2

SmartWiki

因个人精力有限,不在维护此项目,推荐用MinDoc代替
JavaScript
508
star
3

gocaptcha

A captcha library written in golang
Go
180
star
4

NeteaseCloudMusicFlac

根据网易云音乐的歌单, 下载flac无损音乐到本地.。
Go
158
star
5

php-captcha

一个PHP实现的验证码库
PHP
72
star
6

DouYinBot

抖音无水印下载
Go
42
star
7

php7-fpm-phalcon-alpine

PHP7 + Phalcon 3.0 的Docker镜像
Shell
13
star
8

ssproxy

Golang实现的socks5、http代理协议,支持黑名单和白名单。支持通过二级代理包括shadowsocks连接。
Go
12
star
9

structure

PHP算法与数据结构学习
PHP
10
star
10

docker-smartwiki

SmartWiki的Docker镜像
Shell
9
star
11

gorand

Golang 随机字符串生成库
Go
9
star
12

go-git-webhook-client

go-git-webhook配合使用的客户端
Go
7
star
13

micro-service

基于go-micro开发微服务并部署到kubetnetes
Go
7
star
14

goio

Golang实现的即时通讯框架
Go
7
star
15

gocache

Golang实现的高性能进程内缓存
Go
7
star
16

bootstrap4-admin

基于Bootstrap4的后台主题
JavaScript
5
star
17

TaskScheduler

一个用Unity实现依赖注入的定时任务Windows服务。
C#
5
star
18

gopher-reading-list

GoCN每日新闻集合
5
star
19

php72-msf-alpine

PHP7.2 集成了swoole4.0以及MSF框架
Dockerfile
4
star
20

php-extension-examples

PHP7扩展开发演示实例
PHP
4
star
21

snowflake

Golang实现的 sonwflake 算法的分布式ID生成算法
Go
3
star
22

gosession

基于Go实现的Session组件
Go
2
star
23

passwords

Golang实现的密码加密方法
Go
2
star
24

clashx-convert

将vmesss订阅转换为clashx配置
Go
2
star
25

godeploy

Go实现的Github/Gitlab自动部署工具
Go
2
star
26

php72-fpm-yaf-alpine

YAF框架镜像
Dockerfile
2
star
27

goapollo

携程 apollo 项目 golang 客户端
Go
2
star
28

concurrent

Go语言下的线程安全集合
Go
2
star
29

nginx-docker

基于Docker的nginx镜像
1
star
30

gotexttoepub

将TEXT格式的小说转换为epub格式
Go
1
star
31

requests

基于Golang的HTTP请求封装
Go
1
star
32

docker-php7-fpm-cphalcon

docker-php7-fpm-cphalcon
1
star
33

algorithms

数据结构与算法学习
Go
1
star
34

filesystem

抽象文件系统
Go
1
star
35

phalcondocs

phalcon3.0中文文档
HTML
1
star
36

bootstrap4-admin-vultr

vultr后台模板
JavaScript
1
star
37

FluentCaptcha

简单验证码生成
C#
1
star
38

smartdns-tools

将科学上网域名转换为smartdns的分流配置
1
star
39

GoWebAccess

Go语言实现的日志分析程序
Smarty
1
star
40

fink-download

翻咔高清图下载
Go
1
star
41

goutils

Golang常用工具类
Go
1
star
42

docker-php56-fpm-phalcon

基于官方php5.6为基础镜像的phalcon运行环境
Shell
1
star