From 289c054957ed4b502a1b2c3d39bed51a41190392 Mon Sep 17 00:00:00 2001 From: lloydzhou Date: Thu, 13 Jul 2017 16:11:52 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BB=8Escript=E4=BC=A0=E9=80=92=E5=8F=82?= =?UTF-8?q?=E6=95=B0=EF=BC=8C=E5=A2=9E=E5=8A=A0=E8=8E=B7=E5=8F=96github=20?= =?UTF-8?q?event=20name?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- webhookit/app.py | 7 +++++++ webhookit/parser.py | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/webhookit/app.py b/webhookit/app.py index 76f3ce9..8cfdcad 100644 --- a/webhookit/app.py +++ b/webhookit/app.py @@ -49,9 +49,15 @@ def post(self): # webhook configs config = WEBHOOKIT_CONFIGURE or {} + event_name = parser.get_event_name(self.request) or '' repo_name = parser.get_repo_name(data) or '' repo_branch = parser.get_repo_branch(data) or '' webhook_key = '%s/%s' % (repo_name, repo_branch) + params = { + 'event_name': event_name, + 'repo_name': repo_name, + 'repo_branch': repo_branch + } # 需要出发操作的服务器 server 数组 servers = config.get(webhook_key, []) if servers and len(servers) > 0: @@ -59,6 +65,7 @@ def post(self): cnt = 0 for s in servers: # 遍历执行 + s['SCRIPT'] = s.get('SCRIPT').format(**params) utils.log('Starting to execute %s' % s.get('SCRIPT', '')) utils.do_webhook_shell(s, data) webhook_cnt += 1 diff --git a/webhookit/parser.py b/webhookit/parser.py index 187cefb..fd7069b 100644 --- a/webhookit/parser.py +++ b/webhookit/parser.py @@ -6,6 +6,11 @@ ''' +# event name +def get_event_name(request): + return request.headers.get('X-GitHub-Event') + + # repo name def get_repo_name(hook_data): return hook_data.get('repository', {}).get('name', '') \ From 05c4e4ae7a59c3ed77356cd6bf1307e9c688c799 Mon Sep 17 00:00:00 2001 From: lloydzhou Date: Thu, 13 Jul 2017 16:47:44 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=85=BC=E5=AE=B9?= =?UTF-8?q?=E8=8E=B7=E5=8F=96event=5Fname?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- webhookit/app.py | 2 +- webhookit/parser.py | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/webhookit/app.py b/webhookit/app.py index 8cfdcad..d4113d7 100644 --- a/webhookit/app.py +++ b/webhookit/app.py @@ -49,7 +49,7 @@ def post(self): # webhook configs config = WEBHOOKIT_CONFIGURE or {} - event_name = parser.get_event_name(self.request) or '' + event_name = parser.get_event_name(self.request, data) or '' repo_name = parser.get_repo_name(data) or '' repo_branch = parser.get_repo_branch(data) or '' webhook_key = '%s/%s' % (repo_name, repo_branch) diff --git a/webhookit/parser.py b/webhookit/parser.py index fd7069b..f9d0450 100644 --- a/webhookit/parser.py +++ b/webhookit/parser.py @@ -7,8 +7,11 @@ # event name -def get_event_name(request): - return request.headers.get('X-GitHub-Event') +def get_event_name(request, hook_data): + return request.headers.get('X-GitHub-Event') \ + or request.get('X-Gitlab-Event') \ + or hook_data.get('hook_name') \ + or request.get('X-Gogs-Event') # repo name