Skip to content

Commit

Permalink
fix: tekton null status (#78)
Browse files Browse the repository at this point in the history
Why:
- fix some bug on parsing event
- log enough information

Signed-off-by: lijie <lijie@pingcap.com>
  • Loading branch information
lijie authored Feb 23, 2024
1 parent b18da56 commit e3dbbc8
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 10 deletions.
4 changes: 4 additions & 0 deletions tibuild/pkg/rest/service/dev_build_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
6 changes: 3 additions & 3 deletions tibuild/pkg/webhook/handler/cloudevent_handler.go
Original file line number Diff line number Diff line change
@@ -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"
Expand All @@ -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)
}
18 changes: 11 additions & 7 deletions tibuild/pkg/webhook/service/cloudevent.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"context"
"encoding/json"
"fmt"
"log"
"log/slog"
"strconv"
"strings"

Expand All @@ -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
}
}
Expand Down Expand Up @@ -68,15 +72,15 @@ 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":
pipeline.Status = rest.BuildStatusSuccess
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 {
Expand Down Expand Up @@ -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)
}
Expand Down

0 comments on commit e3dbbc8

Please sign in to comment.