Skip to content

thomasblass/node-gitlab-hook

 
 

Repository files navigation

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({/* options */} [, 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. [email protected]: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

About

This is a very simple, easy to use web hook for GitLab.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 91.7%
  • Makefile 8.3%