diff --git a/internal/clients/gitea_sdk/gitea_sdk.go b/internal/clients/gitea_sdk/gitea_sdk.go index 1b566c9..c0f1d77 100644 --- a/internal/clients/gitea_sdk/gitea_sdk.go +++ b/internal/clients/gitea_sdk/gitea_sdk.go @@ -10,7 +10,7 @@ import ( type GiteaSdkInterface interface { PostComment(settings.GiteaRepository, int, string) error - UpdateStatus(settings.GiteaRepository, string, string, string, gitea.StatusState) error + UpdateStatus(settings.GiteaRepository, string, StatusDetails) error DetermineHEAD(settings.GiteaRepository, int64) (string, error) } @@ -28,14 +28,16 @@ func (sdk *GiteaSdk) PostComment(repo settings.GiteaRepository, idx int, msg str return err } -func (sdk *GiteaSdk) UpdateStatus(repo settings.GiteaRepository, ref string, targetUrl string, description string, status gitea.StatusState) error { +func (sdk *GiteaSdk) UpdateStatus(repo settings.GiteaRepository, ref string, details StatusDetails) error { opt := gitea.CreateStatusOption{ - TargetURL: targetUrl, + TargetURL: details.Url, Context: "gitea-sonarqube-pr-bot", - Description: description, - State: status, + Description: details.Message, + State: gitea.StatusState(details.State), } + opt.TargetURL = "gitea-sonarqube-pr-bot" + _, _, err := sdk.client.CreateStatus(repo.Owner, repo.Name, ref, opt) if err != nil { log.Printf("Error updating status: %s", err.Error()) diff --git a/internal/clients/gitea_sdk/status.go b/internal/clients/gitea_sdk/status.go new file mode 100644 index 0000000..c1bdb07 --- /dev/null +++ b/internal/clients/gitea_sdk/status.go @@ -0,0 +1,16 @@ +package gitea_sdk + +import "code.gitea.io/sdk/gitea" + +type State gitea.StatusState + +const ( + StatusOK State = State(gitea.StatusSuccess) + StatusFailure State = State(gitea.StatusFailure) +) + +type StatusDetails struct { + Url string + Message string + State State +} diff --git a/internal/webhook_handler/sonarqube.go b/internal/webhook_handler/sonarqube.go index 723a365..b893df2 100644 --- a/internal/webhook_handler/sonarqube.go +++ b/internal/webhook_handler/sonarqube.go @@ -12,8 +12,6 @@ import ( sqSdk "gitea-sonarqube-pr-bot/internal/clients/sonarqube_sdk" "gitea-sonarqube-pr-bot/internal/settings" webhook "gitea-sonarqube-pr-bot/internal/webhooks/sonarqube" - - "code.gitea.io/sdk/gitea" ) type SonarQubeWebhookHandler struct { @@ -56,14 +54,15 @@ func (h *SonarQubeWebhookHandler) processData(w *webhook.Webhook, repo settings. h.fetchDetails(w) - status := gitea.StatusPending - switch w.QualityGate.Status { - case "OK": - status = gitea.StatusSuccess - case "ERROR": - status = gitea.StatusFailure + status := giteaSdk.StatusOK + if w.QualityGate.Status != "OK" { + status = giteaSdk.StatusFailure } - _ = h.giteaSdk.UpdateStatus(repo, w.Revision, w.Branch.Url, w.QualityGate.Status, status) + _ = h.giteaSdk.UpdateStatus(repo, w.Revision, giteaSdk.StatusDetails{ + Url: w.Branch.Url, + Message: w.QualityGate.Status, + State: status, + }) comment, err := h.composeGiteaComment(w) if err != nil { diff --git a/internal/webhook_handler/sonarqube_test.go b/internal/webhook_handler/sonarqube_test.go index b403277..82648a3 100644 --- a/internal/webhook_handler/sonarqube_test.go +++ b/internal/webhook_handler/sonarqube_test.go @@ -6,11 +6,11 @@ import ( "net/http/httptest" "testing" + giteaSDK "gitea-sonarqube-pr-bot/internal/clients/gitea_sdk" sqSDK "gitea-sonarqube-pr-bot/internal/clients/sonarqube_sdk" "gitea-sonarqube-pr-bot/internal/settings" webhook "gitea-sonarqube-pr-bot/internal/webhooks/sonarqube" - "code.gitea.io/sdk/gitea" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" ) @@ -35,7 +35,7 @@ func (h *GiteaSdkMock) DetermineHEAD(_ settings.GiteaRepository, _ int64) (strin return "", nil } -func (h *GiteaSdkMock) UpdateStatus(_ settings.GiteaRepository, _ string, _ string, _ string, _ gitea.StatusState) error { +func (h *GiteaSdkMock) UpdateStatus(_ settings.GiteaRepository, _ string, _ giteaSDK.StatusDetails) error { return nil } diff --git a/internal/webhooks/gitea/webhook.go b/internal/webhooks/gitea/webhook.go index addfddf..3e7212c 100644 --- a/internal/webhooks/gitea/webhook.go +++ b/internal/webhooks/gitea/webhook.go @@ -9,8 +9,6 @@ import ( giteaSdk "gitea-sonarqube-pr-bot/internal/clients/gitea_sdk" sqSdk "gitea-sonarqube-pr-bot/internal/clients/sonarqube_sdk" "gitea-sonarqube-pr-bot/internal/settings" - - "code.gitea.io/sdk/gitea" ) type BotAction string @@ -77,11 +75,13 @@ func (w *Webhook) ProcessData(gSDK giteaSdk.GiteaSdkInterface, sqSDK sqSdk.Sonar log.Printf("Error retrieving HEAD ref: %s", err.Error()) return } - _ = gSDK.UpdateStatus(w.ConfiguredProject.Gitea, headRef, "", "Analysis pending...", gitea.StatusPending) - log.Printf("Fetching SonarQube data...") - _ = gSDK.UpdateStatus(w.ConfiguredProject.Gitea, headRef, "", "OK", gitea.StatusSuccess) + _ = gSDK.UpdateStatus(w.ConfiguredProject.Gitea, headRef, giteaSdk.StatusDetails{ + Url: "", + Message: "OK", + State: giteaSdk.StatusOK, + }) } func New(raw []byte) (*Webhook, bool) {