From f78fafd3c49f882f458f710a5954f02aeb5e2ada Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Fri, 9 Oct 2020 08:34:46 +0000 Subject: [PATCH] bugfix double kill process, update scripts --- examples/deploy.sh | 24 ++++++++++++++---------- main.go | 14 ++++++++++++-- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/examples/deploy.sh b/examples/deploy.sh index 502163b..0852fe3 100644 --- a/examples/deploy.sh +++ b/examples/deploy.sh @@ -1,18 +1,22 @@ #!/bin/bash -for x in $@; do - echo "$x" -done - +# These environment variables are set by the caller my_envs='GIT_REF_NAME GIT_REF_TYPE +GIT_REPO_ID GIT_REPO_OWNER GIT_REPO_NAME GIT_CLONE_URL' -echo 'Doing "work" ...' -sleep 5 - -for x in $my_envs; do - echo "$x=${!x}" -done +base_dir="$(dirname "$(readlink -f "$0")")" +if [[ -f "scripts/${GIT_REPO_ID}/deploy.sh" ]] +then + echo "Running deplay script for ${GIT_REPO_ID}" + bash "scripts/${GIT_REPO_ID}/deploy.sh" +else + echo "Nothing to do for ${GIT_REPO_ID}" + for x in $my_envs; do + echo "$x=${!x}" + done + sleep 1 +fi diff --git a/main.go b/main.go index de7fd88..4fccd82 100644 --- a/main.go +++ b/main.go @@ -10,6 +10,7 @@ import ( "net/http" "os" "os/exec" + "strings" "time" "git.ryanburnette.com/ryanburnette/git-deploy/assets" @@ -316,11 +317,18 @@ func runHook(hook webhooks.Ref) { } cmd := exec.Command("bash", args...) + // https://git.example.com/example/project.git + // => git.example.com/example/project + repoID := strings.TrimPrefix(hook.HTTPSURL, "https://") + repoID = strings.TrimPrefix(repoID, "https://") + repoID = strings.TrimSuffix(repoID, ".git") + env := os.Environ() envs := []string{ "GIT_DEPLOY_JOB_ID=" + jobID, "GIT_REF_NAME=" + hook.RefName, "GIT_REF_TYPE=" + hook.RefType, + "GIT_REPO_ID=" + repoID, "GIT_REPO_OWNER=" + hook.Owner, "GIT_REPO_NAME=" + hook.Repo, "GIT_CLONE_URL=" + hook.HTTPSURL, @@ -349,8 +357,10 @@ func runHook(hook webhooks.Ref) { go func() { log.Printf("git-deploy job for %s#%s started\n", hook.HTTPSURL, hook.RefName) - _ = cmd.Wait() - killers <- jobID + if err := cmd.Wait(); nil != err { + log.Printf("git-deploy job for %s#%s exited with error: %v", hook.HTTPSURL, hook.RefName, err) + return + } log.Printf("git-deploy job for %s#%s finished\n", hook.HTTPSURL, hook.RefName) // TODO check for backlog }()