43 lines
1.2 KiB
Nix
43 lines
1.2 KiB
Nix
{ pkgs }:
|
|||
|
|
|
||
|
|
let
|
||
|
|
hooks = pkgs.writeText "pigeon-hooks.json" (builtins.toJSON [{
|
||
|
|
id = "release";
|
||
|
|
execute-command = "{./pigeon.sh}";
|
||
|
|
include-command-output-in-response = false;
|
||
|
|
pass-arguments-to-command = [
|
||
|
|
{ source = "payload"; name = "project.git_http_url"; }
|
||
|
|
{ source = "payload"; name = "project.id"; }
|
||
|
|
{ source = "payload"; name = "tag"; }
|
||
|
|
{ source = "payload"; name = "commit.id"; }
|
||
|
|
];
|
||
|
|
trigger-rule.and = [
|
||
|
|
{
|
||
|
|
match = {
|
||
|
|
type = "value";
|
||
|
|
parameter = { source = "header"; name = "X-Gitlab-Event"; };
|
||
|
|
value = "Release Hook";
|
||
|
|
};
|
||
|
|
match = {
|
||
|
|
type = "value";
|
||
|
|
parameter = { source = "payload"; name = "action"; };
|
||
|
|
value = "create";
|
||
|
|
};
|
||
|
|
match = {
|
||
|
|
type = "value";
|
||
|
|
parameter = { source = "header"; name = "X-Gitlab-Token"; };
|
||
|
|
value = "{{ getenv `PIGEON_GITLAB_TOKEN` | js }}";
|
||
|
|
};
|
||
|
|
}
|
||
|
|
];
|
||
|
|
}]);
|
||
|
|
in
|
||
|
|
pkgs.writeShellApplication {
|
||
|
|
name = "pigeon";
|
||
|
|
runtimeInputs = [ pkgs.webhook ];
|
||
|
|
text = ''
|
||
|
|
: ''${PIGEON_GITLAB_TOKEN:?}
|
||
|
|
exec webhook -hooks ${hooks} -template -port "''${PIGEON_PORT:-9000}" -verbose
|
||
|
|
'';
|
||
|
|
}
|