diff --git a/webhookit/app.py b/webhookit/app.py index 76f3ce9..d4113d7 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, 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) + 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..f9d0450 100644 --- a/webhookit/parser.py +++ b/webhookit/parser.py @@ -6,6 +6,14 @@ ''' +# event name +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 def get_repo_name(hook_data): return hook_data.get('repository', {}).get('name', '') \