From 4fbb257d5d45bc2d84ecd2ccff74bf977a2bb0a1 Mon Sep 17 00:00:00 2001 From: hiroTamada Date: Mon, 26 Jan 2026 15:14:01 -0500 Subject: [PATCH] feat(builds): expose builder VM instance ID in build response - Add `builder_instance_id` field to Build schema in openapi.yaml - Regenerate lib/oapi/oapi.go with oapi-codegen - Add BuilderInstanceID field to domain Build struct - Update toBuild() to map BuilderInstance -> BuilderInstanceID - Update buildToOAPI() to include the new field in API responses - Update CI to regenerate OpenAPI code before building This exposes the existing BuilderInstance field that was already stored in build metadata but not returned to clients, useful for debugging. --- .github/workflows/test.yml | 3 + cmd/api/api/builds.go | 22 +-- lib/builds/storage.go | 21 +-- lib/builds/types.go | 23 +-- lib/oapi/oapi.go | 301 +++++++++++++++++++------------------ openapi.yaml | 4 + 6 files changed, 193 insertions(+), 181 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 00d46f8c..ee4f8a75 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -37,6 +37,9 @@ jobs: - name: Clean cached binaries run: make clean + - name: Generate OpenAPI code + run: make oapi-generate + - name: Build run: make build diff --git a/cmd/api/api/builds.go b/cmd/api/api/builds.go index 4a8b1536..8f6f9319 100644 --- a/cmd/api/api/builds.go +++ b/cmd/api/api/builds.go @@ -284,16 +284,17 @@ func (r buildEventsStreamResponse) VisitGetBuildEventsResponse(w http.ResponseWr // buildToOAPI converts a domain Build to OAPI Build func buildToOAPI(b *builds.Build) oapi.Build { oapiBuild := oapi.Build{ - Id: b.ID, - Status: oapi.BuildStatus(b.Status), - QueuePosition: b.QueuePosition, - ImageDigest: b.ImageDigest, - ImageRef: b.ImageRef, - Error: b.Error, - CreatedAt: b.CreatedAt, - StartedAt: b.StartedAt, - CompletedAt: b.CompletedAt, - DurationMs: b.DurationMS, + Id: b.ID, + Status: oapi.BuildStatus(b.Status), + QueuePosition: b.QueuePosition, + ImageDigest: b.ImageDigest, + ImageRef: b.ImageRef, + Error: b.Error, + CreatedAt: b.CreatedAt, + StartedAt: b.StartedAt, + CompletedAt: b.CompletedAt, + DurationMs: b.DurationMS, + BuilderInstanceId: b.BuilderInstanceID, } if b.Provenance != nil { @@ -310,4 +311,3 @@ func buildToOAPI(b *builds.Build) oapi.Build { return oapiBuild } - diff --git a/lib/builds/storage.go b/lib/builds/storage.go index 42f7f146..7f65fccc 100644 --- a/lib/builds/storage.go +++ b/lib/builds/storage.go @@ -29,16 +29,17 @@ type buildMetadata struct { // toBuild converts internal metadata to the public Build type func (m *buildMetadata) toBuild() *Build { return &Build{ - ID: m.ID, - Status: m.Status, - ImageDigest: m.ImageDigest, - ImageRef: m.ImageRef, - Error: m.Error, - Provenance: m.Provenance, - CreatedAt: m.CreatedAt, - StartedAt: m.StartedAt, - CompletedAt: m.CompletedAt, - DurationMS: m.DurationMS, + ID: m.ID, + Status: m.Status, + ImageDigest: m.ImageDigest, + ImageRef: m.ImageRef, + Error: m.Error, + Provenance: m.Provenance, + CreatedAt: m.CreatedAt, + StartedAt: m.StartedAt, + CompletedAt: m.CompletedAt, + DurationMS: m.DurationMS, + BuilderInstanceID: m.BuilderInstance, } } diff --git a/lib/builds/types.go b/lib/builds/types.go index 08b05881..0649bcfe 100644 --- a/lib/builds/types.go +++ b/lib/builds/types.go @@ -16,17 +16,18 @@ const ( // Build represents a source-to-image build job type Build struct { - ID string `json:"id"` - Status string `json:"status"` - QueuePosition *int `json:"queue_position,omitempty"` - ImageDigest *string `json:"image_digest,omitempty"` - ImageRef *string `json:"image_ref,omitempty"` - Error *string `json:"error,omitempty"` - Provenance *BuildProvenance `json:"provenance,omitempty"` - CreatedAt time.Time `json:"created_at"` - StartedAt *time.Time `json:"started_at,omitempty"` - CompletedAt *time.Time `json:"completed_at,omitempty"` - DurationMS *int64 `json:"duration_ms,omitempty"` + ID string `json:"id"` + Status string `json:"status"` + QueuePosition *int `json:"queue_position,omitempty"` + ImageDigest *string `json:"image_digest,omitempty"` + ImageRef *string `json:"image_ref,omitempty"` + Error *string `json:"error,omitempty"` + Provenance *BuildProvenance `json:"provenance,omitempty"` + CreatedAt time.Time `json:"created_at"` + StartedAt *time.Time `json:"started_at,omitempty"` + CompletedAt *time.Time `json:"completed_at,omitempty"` + DurationMS *int64 `json:"duration_ms,omitempty"` + BuilderInstanceID *string `json:"builder_instance_id,omitempty"` } // CreateBuildRequest represents a request to create a new build diff --git a/lib/oapi/oapi.go b/lib/oapi/oapi.go index c2cead2e..940b9484 100644 --- a/lib/oapi/oapi.go +++ b/lib/oapi/oapi.go @@ -137,6 +137,9 @@ type AvailableDevice struct { // Build defines model for Build. type Build struct { + // BuilderInstanceId Instance ID of the builder VM (for debugging) + BuilderInstanceId *string `json:"builder_instance_id"` + // CompletedAt Build completion timestamp CompletedAt *time.Time `json:"completed_at"` @@ -10245,155 +10248,155 @@ var swaggerSpec = []string{ "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", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/openapi.yaml b/openapi.yaml index dce1ca3f..e39a0e6d 100644 --- a/openapi.yaml +++ b/openapi.yaml @@ -956,6 +956,10 @@ components: format: int64 description: Build duration in milliseconds nullable: true + builder_instance_id: + type: string + description: Instance ID of the builder VM (for debugging) + nullable: true ResourceStatus: type: object