go-git-webhook

command module
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 1, 2017 License: MIT Imports: 4 Imported by: 0

README

go-git-webhook

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 请求头发送到客户端进行认证连接。

如何使用?

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
#监听的端口号
httpport = 8080
runmode = dev
sessionon = true
#保存到客户端的 session 名称
sessionname = smart_webhook_id
copyrequestbody = true

#时区设置
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=admin@163.com

后台运行

使用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_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 中反馈。

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
package commands 为命令行定义.
package commands 为命令行定义.
package conf 为配置相关.
package conf 为配置相关.
Package controllers 控制器相关.
Package controllers 控制器相关.
Package models 为项目所需的模型对象定义.
Package models 为项目所需的模型对象定义.
modules
filters
Package filters 为过滤器定义.
Package filters 为过滤器定义.
gob
hooks
Package hooks 解析 Git WebHook 的内容信息
Package hooks 解析 Git WebHook 的内容信息
Package routers 路由定义.
Package routers 路由定义.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL