From c89e48a3e2ca16af3bfcb552017ee1ee5657c961 Mon Sep 17 00:00:00 2001 From: Soren Mathiasen Date: Wed, 20 Jun 2018 14:02:05 +0200 Subject: [PATCH] Better error handling in the scripts Some container did a hard exit, so we didn't touch the done file. This will ensure that by creating a trap --- builder/builder.go | 12 +++++++----- web/web.go | 1 - 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/builder/builder.go b/builder/builder.go index 5498cae..6e950fc 100644 --- a/builder/builder.go +++ b/builder/builder.go @@ -128,6 +128,7 @@ func ExecuteBuild(kubectl *kubernetes.Clientset, service storage.Service, build } ns := &v1.Namespace{} ns.Name = pod.Name + ns.Annotations = map[string]string{"type": "build", "managedby": "seneferu"} ns.Namespace = pod.Name _, err = kubectl.CoreV1().Namespaces().Create(ns) if err != nil { @@ -342,7 +343,8 @@ func getConfigfile(build *model.Build, token string) (*yaml.Config, error) { func doneCmd(count int) string { doneStr := fmt.Sprintf("build%v", count) - doneCmd := "touch " + shareddir + "/" + doneStr + ".done" + touchStr := "touch " + shareddir + "/" + doneStr + ".done;" + doneCmd := `clean() { rc=$?; ` + touchStr + ` exit $rc; }; trap clean EXIT` return doneCmd } @@ -387,11 +389,12 @@ func createBuildSteps(build *model.Build, cfg *yaml.Config) ([]v1.Container, err } workspace = shareddir + "/" + workspace + doneCmd := doneCmd(count) + cmds = append(cmds, doneCmd) + for _, v := range cont.Commands { cmds = append(cmds, v) } - doneCmd := doneCmd(count) - cmds = append(cmds, doneCmd) // Set environment variables var buildEnv []v1.EnvVar @@ -591,9 +594,8 @@ func waitForContainerTermination(kubectl *kubernetes.Clientset, b v1.Container, reason, err := printPod(pod) if err != nil { log.Println("print pod error", err) - } else { - log.Println("REASON: ", reason) } + log.Println("REASON: ", reason) for _, v := range pod.Status.ContainerStatuses { if v.Name == b.Name { diff --git a/web/web.go b/web/web.go index 04cf5b2..3ec9888 100644 --- a/web/web.go +++ b/web/web.go @@ -38,7 +38,6 @@ func HandlePullRequest(service storage.Service, kubectl *kubernetes.Clientset, t log.Println("Handling Push Request") pl := payload.(github.PullRequestPayload) - fmt.Println(pl) repo, err := service.LoadByOrgAndName(pl.Repository.Owner.Login, pl.Repository.Name) if err != nil { -- GitLab