node-gitlab-hook
This is an easy to use nodeJS based web hook for GitLab.
To Install:
npm install gitlabhook
To Use:
var gitlabhook = require('gitlabhook');
var gitlab = gitlabhook({} [, callback]);
gitlab.listen();
Configure a WebHook URL to whereever the server is listening.
Available options are:
- host: the host to listen on, defaults to
0.0.0.0
- port: the port to listen on, defaults to
3420
- configFile: the json config file. May located at configPathes, defaults to
gitlabhook.conf
- configPathes: the search pathes for configFile, defaults to
['/etc/gitlabhook/', '/usr/local/etc/gitlabhook/', '.']
- keep: if true, temporary files are not deleted, defaults to
false
. Mostly only for debugging purposes. - logger: an optional instance of a logger that supports the "info" and "error" methods and one parameter for data (like console), default is to not log (
logger:{info:function(s){}, error:function(s){}}
). Mostly only for debugging purposes. - tasks: relations between repositories and shell commands (e.g.
{repo1:'cmd1', repo2:['cmd2a','cmd2b','cmd2c']}
) - cmdshell: the command-line interpreter to be used, defaults to
/bin/sh
The config file will be ignored if a callback function is declared.
Example config file with task definitions:
{
"tasks": {
"myRepo": "/usr/local/bin/myDeploy %g",
"*": ["echo 'GitLab Server %s'",
"echo 'Repository: %r'",
"echo 'Event: %k'",
"echo 'User: %u'",
"echo 'Branch: %b'",
"echo 'Git Url: %g'",
"echo 'Last Commit: %i'",
"echo '\tMessage: %m'",
"echo '\tTime: %t'"]
},
"keep":false,
"logger": false,
"cmdshell":"/bin/bash"
}
The *
matches any tasks.
The place holders are:
%s
: GitLab server's IP address%r
: name of the repository (e.g. myRepo
)%k
: kind of event (e.g. tag_push
)%u
: owner of the repository (user name)%b
: branch reference (e.g. refs/heads/master
)%g
: ssh-based cloning url on the GitLab server (e.g. git@gitlab.host:rolf.niepraschk/myRepo.git
)%h
: http-based cloning url on the GitLab server (e.g. http://gitlab.host/rolf.niepraschk/myRepo.git
)%i
: id of the last commit%t
: timestamp of the last commit%m
: message of the last commit
The file gitlabhook-server.js
shows an example GitLab Hook server listen at port 3420.
Installation hints for Linux
The file gitlabhook.service
is intended to use as a systemd sercvice. The Makefile
helps to create an rpm archive for a systemd based OS. Call
make rpm
License
MIT