From e3dbbc87f62ef7e9a67438f4a4d8347ac5b3e587 Mon Sep 17 00:00:00 2001 From: lijie Date: Fri, 23 Feb 2024 17:18:28 +0800 Subject: [PATCH] fix: tekton null status (#78) Why: - fix some bug on parsing event - log enough information Signed-off-by: lijie --- tibuild/pkg/rest/service/dev_build_service.go | 4 ++++ .../pkg/webhook/handler/cloudevent_handler.go | 6 +++--- tibuild/pkg/webhook/service/cloudevent.go | 18 +++++++++++------- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/tibuild/pkg/rest/service/dev_build_service.go b/tibuild/pkg/rest/service/dev_build_service.go index 932496e..89eff8f 100644 --- a/tibuild/pkg/rest/service/dev_build_service.go +++ b/tibuild/pkg/rest/service/dev_build_service.go @@ -42,6 +42,7 @@ func (s DevbuildServer) Create(ctx context.Context, req DevBuild, option DevBuil if err != nil { return nil, err } + req.Status.TektonStatus = &TektonStatus{Status: BuildStatusPending} } if option.DryRun { req.ID = 1 @@ -353,6 +354,9 @@ func (s DevbuildServer) MergeTektonStatus(ctx context.Context, id int, pipeline if err != nil { return nil, err } + if obj.Status.TektonStatus == nil { + obj.Status.TektonStatus = &TektonStatus{} + } status := obj.Status.TektonStatus name := pipeline.Name index := -1 diff --git a/tibuild/pkg/webhook/handler/cloudevent_handler.go b/tibuild/pkg/webhook/handler/cloudevent_handler.go index e6147d1..c9ebbaa 100644 --- a/tibuild/pkg/webhook/handler/cloudevent_handler.go +++ b/tibuild/pkg/webhook/handler/cloudevent_handler.go @@ -1,7 +1,7 @@ package handler import ( - "log" + "log/slog" rest "github.com/PingCAP-QE/ee-apps/tibuild/pkg/rest/service" "github.com/PingCAP-QE/ee-apps/tibuild/pkg/webhook/service" @@ -20,12 +20,12 @@ func NewHandler(ds rest.DevBuildService) CloudEventHandler { func (h CloudEventHandler) Receive(c *gin.Context) { p, err := cloudevents.NewHTTP() if err != nil { - log.Print(err, "Failed to create protocol") + slog.Error("Failed to create protocol", "error", err) } ceh, err := cloudevents.NewHTTPReceiveHandler(c, p, h.svc.Handle) if err != nil { - log.Print(err, "failed to create handler") + slog.Error("failed to create handler", "error", err) } ceh.ServeHTTP(c.Writer, c.Request) } diff --git a/tibuild/pkg/webhook/service/cloudevent.go b/tibuild/pkg/webhook/service/cloudevent.go index c8db7bb..95d3692 100644 --- a/tibuild/pkg/webhook/service/cloudevent.go +++ b/tibuild/pkg/webhook/service/cloudevent.go @@ -4,7 +4,7 @@ import ( "context" "encoding/json" "fmt" - "log" + "log/slog" "strconv" "strings" @@ -27,18 +27,22 @@ func NewDevBuildCEServer(ds rest.DevBuildService) DevBuildCEServer { } func (s DevBuildCEServer) Handle(event cloudevents.Event) { + if slog.Default().Enabled(context.Background(), slog.LevelDebug) { + eventjson, _ := event.MarshalJSON() + slog.Debug("received event", "ev", string(eventjson)) + } pipeline, bid, err := eventToDevbuildTekton(event) if err != nil { - log.Printf("parse tekton event failed: %s", err.Error()) + slog.Error("parse tekton event failed", "error", err.Error()) return } if bid == 0 { - log.Printf("parse tekton event build id failed") + slog.Error("parse tekton event failed", "error", err.Error()) return } _, err = s.ds.MergeTektonStatus(context.TODO(), bid, *pipeline, rest.DevBuildSaveOption{}) if err != nil { - log.Print("not devbuild event") + slog.Error("not devbuild event") return } } @@ -68,7 +72,7 @@ func eventToDevbuildTekton(event cloudevents.Event) (pipeline *rest.TektonPipeli if err != nil { return nil, 0, err } - switch event.Context.GetType() { + switch ty := event.Context.GetType(); ty { case "dev.tekton.event.pipelinerun.started.v1": pipeline.Status = rest.BuildStatusProcessing case "dev.tekton.event.pipelinerun.successful.v1": @@ -76,7 +80,7 @@ func eventToDevbuildTekton(event cloudevents.Event) (pipeline *rest.TektonPipeli case "dev.tekton.event.pipelinerun.failed.v1": pipeline.Status = rest.BuildStatusFailure default: - log.Print("unknown tekton event type") + slog.Error("unknown tekton event type", "type", ty) } return pipeline, bid, nil } else { @@ -134,7 +138,7 @@ func parse_oras_files(pipeline *tekton.PipelineRun) []rest.OrasArtifact { if r.Name == "pushed-binaries" { v, err := parse_oras_file(r.Value.StringVal) if err != nil { - log.Printf("can not parse oras file %s", err.Error()) + slog.Error("can not parse oras file", "error", err.Error()) } rt = append(rt, *v) }