Skip to content

Commit

Permalink
refract: simplify tekton status (#81)
Browse files Browse the repository at this point in the history
# Why:
- no need to  use multiple status, because now we only use one pipeline
engine

---------

Signed-off-by: lijie <lijie@pingcap.com>
  • Loading branch information
lijie authored Feb 28, 2024
1 parent 63b9f30 commit 7062e3e
Show file tree
Hide file tree
Showing 7 changed files with 23 additions and 58 deletions.
12 changes: 0 additions & 12 deletions tibuild/docs/docs.go
Original file line number Diff line number Diff line change
Expand Up @@ -710,23 +710,11 @@ const docTemplate = `{
"service.TektonStatus": {
"type": "object",
"properties": {
"buildReport": {
"$ref": "#/definitions/service.BuildReport"
},
"pipelineEndAt": {
"type": "string"
},
"pipelineStartAt": {
"type": "string"
},
"pipelines": {
"type": "array",
"items": {
"$ref": "#/definitions/service.TektonPipeline"
}
},
"status": {
"$ref": "#/definitions/service.BuildStatus"
}
}
}
Expand Down
12 changes: 0 additions & 12 deletions tibuild/docs/swagger.json
Original file line number Diff line number Diff line change
Expand Up @@ -698,23 +698,11 @@
"service.TektonStatus": {
"type": "object",
"properties": {
"buildReport": {
"$ref": "#/definitions/service.BuildReport"
},
"pipelineEndAt": {
"type": "string"
},
"pipelineStartAt": {
"type": "string"
},
"pipelines": {
"type": "array",
"items": {
"$ref": "#/definitions/service.TektonPipeline"
}
},
"status": {
"$ref": "#/definitions/service.BuildStatus"
}
}
}
Expand Down
8 changes: 0 additions & 8 deletions tibuild/docs/swagger.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -269,18 +269,10 @@ definitions:
type: object
service.TektonStatus:
properties:
buildReport:
$ref: '#/definitions/service.BuildReport'
pipelineEndAt:
type: string
pipelineStartAt:
type: string
pipelines:
items:
$ref: '#/definitions/service.TektonPipeline'
type: array
status:
$ref: '#/definitions/service.BuildStatus'
type: object
info:
contact: {}
Expand Down
4 changes: 2 additions & 2 deletions tibuild/pkg/rest/repo/dev_build_repo_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ func TestDevBuildUpdate(t *testing.T) {
now := time.Unix(1, 0)
report := BuildReport{GitHash: "a1b2c3"}
report_text, err := json.Marshal(report)
tekton_status := TektonStatus{Status: BuildStatusProcessing}
tekton_status := TektonStatus{}
tekton_text, err := json.Marshal(tekton_status)
require.NoError(t, err)
mock.ExpectBegin()
Expand Down Expand Up @@ -106,7 +106,7 @@ func TestDevBuildGet(t *testing.T) {
require.Empty(t, entity.Status.BuildReportJson)
})
t.Run("tekton_status", func(t *testing.T) {
tekton := TektonStatus{Status: BuildStatusProcessing}
tekton := TektonStatus{}
tekton_text, err := json.Marshal(tekton)
require.NoError(t, err)
rows := sqlmock.NewRows([]string{"id", "status", "tekton_status"}).AddRow(1, BuildStatusSuccess, tekton_text)
Expand Down
24 changes: 11 additions & 13 deletions tibuild/pkg/rest/service/dev_build_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ func (s DevbuildServer) Create(ctx context.Context, req DevBuild, option DevBuil
if err != nil {
return nil, err
}
req.Status.TektonStatus = &TektonStatus{Status: BuildStatusPending}
req.Status.TektonStatus = &TektonStatus{}
}
if option.DryRun {
req.ID = 1
Expand Down Expand Up @@ -359,34 +359,32 @@ func (s DevbuildServer) MergeTektonStatus(ctx context.Context, id int, pipeline
if obj.Status.TektonStatus == nil {
obj.Status.TektonStatus = &TektonStatus{}
}
status := obj.Status.TektonStatus
tekton := obj.Status.TektonStatus
name := pipeline.Name
index := -1
for i, p := range status.Pipelines {
for i, p := range tekton.Pipelines {
if p.Name == name {
index = i
}
}
if index >= 0 {
status.Pipelines[index] = pipeline
tekton.Pipelines[index] = pipeline
} else {
status.Pipelines = append(status.Pipelines, pipeline)
tekton.Pipelines = append(tekton.Pipelines, pipeline)
}
computeTektonStatus(status)
if obj.Spec.PipelineEngine == TektonEngine {
obj.Status.Status = obj.Status.TektonStatus.Status
obj.Status.BuildReport = obj.Status.TektonStatus.BuildReport
computeTektonStatus(tekton, &obj.Status)
}
return s.Update(ctx, id, *obj, options)
}

func computeTektonStatus(status *TektonStatus) {
func computeTektonStatus(tekton *TektonStatus, status *DevBuildStatus) {
status.BuildReport = &BuildReport{}
collectTektonArtifacts(status.Pipelines, status.BuildReport)
status.PipelineStartAt = getTektonStartAt(status.Pipelines)
status.Status = computeTektonPhase(status.Pipelines)
collectTektonArtifacts(tekton.Pipelines, status.BuildReport)
status.PipelineStartAt = getTektonStartAt(tekton.Pipelines)
status.Status = computeTektonPhase(tekton.Pipelines)
if status.Status.IsCompleted() {
status.PipelineEndAt = getLatestEndAt(status.Pipelines)
status.PipelineEndAt = getLatestEndAt(tekton.Pipelines)
}
}

Expand Down
15 changes: 9 additions & 6 deletions tibuild/pkg/rest/service/dev_build_service_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -363,7 +363,7 @@ func TestTektonStatusMerge(t *testing.T) {
endtime := time.Unix(20, 0)

t.Run("success", func(t *testing.T) {
status := &TektonStatus{
tekton := &TektonStatus{
Pipelines: []TektonPipeline{
{Name: "pipelinerun1", Status: BuildStatusSuccess, Platform: LinuxAmd64,
PipelineStartAt: &starttime,
Expand All @@ -376,15 +376,16 @@ func TestTektonStatusMerge(t *testing.T) {
OciArtifacts: []OciArtifact{{Repo: "harbor.net/org/repo", Tag: "master", Files: []string{"c.tar.gz", "d.tar.gz"}}}},
},
}
computeTektonStatus(status)
status := &DevBuildStatus{TektonStatus: tekton}
computeTektonStatus(tekton, status)
require.Equal(t, BuildStatusSuccess, status.Status)
require.Equal(t, endtime.Sub(starttime), status.PipelineEndAt.Sub(*status.PipelineStartAt))
require.Equal(t, 2, len(status.BuildReport.Images))
require.Equal(t, 4, len(status.BuildReport.Binaries))
})

t.Run("processing", func(t *testing.T) {
status := &TektonStatus{
tekton := &TektonStatus{
Pipelines: []TektonPipeline{
{Name: "pipelinerun1", Status: BuildStatusSuccess, Platform: LinuxAmd64,
PipelineStartAt: &starttime,
Expand All @@ -396,11 +397,12 @@ func TestTektonStatusMerge(t *testing.T) {
OciArtifacts: []OciArtifact{{Repo: "harbor.net/org/repo", Files: []string{"c.tar.gz", "d.tar.gz"}}}},
},
}
computeTektonStatus(status)
status := &DevBuildStatus{TektonStatus: tekton}
computeTektonStatus(tekton, status)
require.Equal(t, BuildStatusProcessing, status.Status)
})
t.Run("processing", func(t *testing.T) {
status := &TektonStatus{
tekton := &TektonStatus{
Pipelines: []TektonPipeline{
{Name: "pipelinerun1", Status: BuildStatusSuccess, Platform: LinuxAmd64,
PipelineStartAt: &starttime,
Expand All @@ -412,7 +414,8 @@ func TestTektonStatusMerge(t *testing.T) {
OciArtifacts: []OciArtifact{{Repo: "harbor.net/org/repo", Files: []string{"c.tar.gz", "d.tar.gz"}}}},
},
}
computeTektonStatus(status)
status := &DevBuildStatus{TektonStatus: tekton}
computeTektonStatus(tekton, status)
require.Equal(t, BuildStatusFailure, status.Status)
})

Expand Down
6 changes: 1 addition & 5 deletions tibuild/pkg/rest/service/model.go
Original file line number Diff line number Diff line change
Expand Up @@ -251,11 +251,7 @@ type DevBuildStatus struct {
}

type TektonStatus struct {
Status BuildStatus `json:"status"`
PipelineStartAt *time.Time `json:"pipelineStartAt,omitempty"`
PipelineEndAt *time.Time `json:"pipelineEndAt,omitempty"`
BuildReport *BuildReport `json:"buildReport,omitempty"`
Pipelines []TektonPipeline `json:"pipelines"`
Pipelines []TektonPipeline `json:"pipelines"`
}

type TektonPipeline struct {
Expand Down

0 comments on commit 7062e3e

Please sign in to comment.