From 272181e00db830735267ecf6cd6be1b7f7ca00ff Mon Sep 17 00:00:00 2001 From: Martin/Geno Date: Sat, 9 Mar 2019 00:09:45 +0100 Subject: [PATCH] handle system events --- .gitlab-ci.yml | 3 ++- gitlab/main.go | 21 +++++++++++++++++++++ gitlab/request.go | 1 + 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f73e981..2bcb687 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -46,5 +46,6 @@ deploy: - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )' - eval $(ssh-agent -s) - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null + - ssh -6 -o StrictHostKeyChecking=no -p $SSH_PORT "$CI_PROJECT_NAME@$SSH_HOST" sudo /usr/bin/systemctl stop $CI_PROJECT_NAME - scp -6 -o StrictHostKeyChecking=no -P $SSH_PORT "/go/bin/$CI_PROJECT_NAME" "$CI_PROJECT_NAME@$SSH_HOST":/opt/$CI_PROJECT_NAME/bin - - ssh -6 -o StrictHostKeyChecking=no -p $SSH_PORT "$CI_PROJECT_NAME@$SSH_HOST" sudo /usr/bin/systemctl restart $CI_PROJECT_NAME + - ssh -6 -o StrictHostKeyChecking=no -p $SSH_PORT "$CI_PROJECT_NAME@$SSH_HOST" sudo /usr/bin/systemctl start $CI_PROJECT_NAME diff --git a/gitlab/main.go b/gitlab/main.go index f889616..92f0b1b 100644 --- a/gitlab/main.go +++ b/gitlab/main.go @@ -1,6 +1,7 @@ package gitlab import ( + "encoding/json" "fmt" "net/http" @@ -89,6 +90,26 @@ func init() { err = libHTTP.Read(r, &pl) msg = pl.String() + case SystemEvents: + var data map[string]interface{} + err = json.NewDecoder(r.Body).Decode(data) + if err != nil { + msg = fmt.Sprintf("unable to decode gitlab system event") + } else if event, ok := data["event_name"]; ok { + switch event { + case "push": + var pl PushEventPayload + err = libHTTP.Read(r, &pl) + msg = fmt.Sprintf("S > %s", pl.String()) + default: + err = nil + msg = fmt.Sprintf("unknown gitlab system event '%s' received", event) + } + } else { + err = nil + msg = fmt.Sprintf("unable to get event_name of gitlab system event") + } + default: err = nil msg = fmt.Sprintf("unknown gitlab event '%s' received", gitLabEvent) diff --git a/gitlab/request.go b/gitlab/request.go index 56c354f..52608ca 100644 --- a/gitlab/request.go +++ b/gitlab/request.go @@ -19,6 +19,7 @@ const ( WikiPageEvents Event = "Wiki Page Hook" PipelineEvents Event = "Pipeline Hook" BuildEvents Event = "Build Hook" + SystemEvents Event = "System Hook" ) type customTime struct {