diff --git a/experiments/tibuild-v2/README.md b/experiments/tibuild-v2/README.md index e7980076..886bea1f 100644 --- a/experiments/tibuild-v2/README.md +++ b/experiments/tibuild-v2/README.md @@ -20,10 +20,13 @@ It provide the CD functions for PingCAP, Welcome bros! ## Quick Start - ### Design the backend server -go to [design/design.go](./design/design.go) and update it. +go to [internal/service/design/design.go](./internal/service/design/design.go) and update it. + +### Design the database + +go to [internal/database/schema/](./internal/database/schema/) and update them. ### Generate code from design @@ -31,9 +34,7 @@ go to [design/design.go](./design/design.go) and update it. run: ```bash -rm -rf gen cmd oci.go -goa gen github.com/PingCAP-QE/ee-apps/tibuild/design -goa example github.com/PingCAP-QE/ee-apps/tibuild/design +go generate -x ./... ``` ### Run it diff --git a/experiments/tibuild-v2/cmd/tibuild-cli/http.go b/experiments/tibuild-v2/cmd/tibuild-cli/http.go index 12a37ce4..0fcf87eb 100644 --- a/experiments/tibuild-v2/cmd/tibuild-cli/http.go +++ b/experiments/tibuild-v2/cmd/tibuild-cli/http.go @@ -4,7 +4,7 @@ import ( "net/http" "time" - cli "github.com/PingCAP-QE/ee-apps/tibuild/gen/http/cli/tibuild" + cli "github.com/PingCAP-QE/ee-apps/tibuild/internal/service/gen/http/cli/tibuild" goahttp "goa.design/goa/v3/http" goa "goa.design/goa/v3/pkg" ) diff --git a/experiments/tibuild-v2/cmd/tibuild/http.go b/experiments/tibuild-v2/cmd/tibuild/http.go index 57eeef00..472cf752 100644 --- a/experiments/tibuild-v2/cmd/tibuild/http.go +++ b/experiments/tibuild-v2/cmd/tibuild/http.go @@ -7,13 +7,14 @@ import ( "sync" "time" - artifact "github.com/PingCAP-QE/ee-apps/tibuild/gen/artifact" - devbuild "github.com/PingCAP-QE/ee-apps/tibuild/gen/devbuild" - artifactsvr "github.com/PingCAP-QE/ee-apps/tibuild/gen/http/artifact/server" - devbuildsvr "github.com/PingCAP-QE/ee-apps/tibuild/gen/http/devbuild/server" "goa.design/clue/debug" "goa.design/clue/log" goahttp "goa.design/goa/v3/http" + + artifact "github.com/PingCAP-QE/ee-apps/tibuild/internal/service/gen/artifact" + devbuild "github.com/PingCAP-QE/ee-apps/tibuild/internal/service/gen/devbuild" + artifactsvr "github.com/PingCAP-QE/ee-apps/tibuild/internal/service/gen/http/artifact/server" + devbuildsvr "github.com/PingCAP-QE/ee-apps/tibuild/internal/service/gen/http/devbuild/server" ) // handleHTTPServer starts configures and starts a HTTP server on the given diff --git a/experiments/tibuild-v2/cmd/tibuild/main.go b/experiments/tibuild-v2/cmd/tibuild/main.go index 6e297e6f..a552ac2b 100644 --- a/experiments/tibuild-v2/cmd/tibuild/main.go +++ b/experiments/tibuild-v2/cmd/tibuild/main.go @@ -11,12 +11,13 @@ import ( "sync" "syscall" - artifact "github.com/PingCAP-QE/ee-apps/tibuild/gen/artifact" - devbuild "github.com/PingCAP-QE/ee-apps/tibuild/gen/devbuild" - tibuild "github.com/PingCAP-QE/ee-apps/tibuild/pkg/impl" "github.com/rs/zerolog" "goa.design/clue/debug" "goa.design/clue/log" + + artifact "github.com/PingCAP-QE/ee-apps/tibuild/internal/service/gen/artifact" + devbuild "github.com/PingCAP-QE/ee-apps/tibuild/internal/service/gen/devbuild" + tibuild "github.com/PingCAP-QE/ee-apps/tibuild/pkg/impl" ) func main() { @@ -67,7 +68,7 @@ func main() { } { logger := zerolog.New(os.Stderr).With().Timestamp().Str("service", devbuild.ServiceName).Logger() - devbuildSvc = tibuild.NewDevbuild(&logger) + devbuildSvc = tibuild.NewDevbuild(&logger, nil /* TODO: add db client */) } } diff --git a/experiments/tibuild-v2/gen/http/artifact/client/cli.go b/experiments/tibuild-v2/gen/http/artifact/client/cli.go deleted file mode 100644 index 4b3fea2a..00000000 --- a/experiments/tibuild-v2/gen/http/artifact/client/cli.go +++ /dev/null @@ -1,41 +0,0 @@ -// Code generated by goa v3.20.0, DO NOT EDIT. -// -// artifact HTTP client CLI support package -// -// Command: -// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/design - -package client - -import ( - "encoding/json" - "fmt" - - artifact "github.com/PingCAP-QE/ee-apps/tibuild/gen/artifact" - goa "goa.design/goa/v3/pkg" -) - -// BuildSyncImagePayload builds the payload for the artifact syncImage endpoint -// from CLI flags. -func BuildSyncImagePayload(artifactSyncImageBody string) (*artifact.SyncImagePayload, error) { - var err error - var body SyncImageRequestBody - { - err = json.Unmarshal([]byte(artifactSyncImageBody), &body) - if err != nil { - return nil, fmt.Errorf("invalid JSON for body, \nerror: %s, \nexample of valid JSON:\n%s", err, "'{\n \"ImageSyncRequest\": {\n \"source\": \"Culpa possimus.\",\n \"target\": \"Perferendis nisi non quia debitis.\"\n }\n }'") - } - if body.ImageSyncRequest == nil { - err = goa.MergeErrors(err, goa.MissingFieldError("ImageSyncRequest", "body")) - } - if err != nil { - return nil, err - } - } - v := &artifact.SyncImagePayload{} - if body.ImageSyncRequest != nil { - v.ImageSyncRequest = marshalImageSyncRequestRequestBodyToArtifactImageSyncRequest(body.ImageSyncRequest) - } - - return v, nil -} diff --git a/experiments/tibuild-v2/gen/http/cli/tibuild/cli.go b/experiments/tibuild-v2/gen/http/cli/tibuild/cli.go deleted file mode 100644 index 37789ea5..00000000 --- a/experiments/tibuild-v2/gen/http/cli/tibuild/cli.go +++ /dev/null @@ -1,611 +0,0 @@ -// Code generated by goa v3.20.0, DO NOT EDIT. -// -// tibuild HTTP client CLI support package -// -// Command: -// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/design - -package cli - -import ( - "flag" - "fmt" - "net/http" - "os" - - artifactc "github.com/PingCAP-QE/ee-apps/tibuild/gen/http/artifact/client" - devbuildc "github.com/PingCAP-QE/ee-apps/tibuild/gen/http/devbuild/client" - goahttp "goa.design/goa/v3/http" - goa "goa.design/goa/v3/pkg" -) - -// UsageCommands returns the set of commands and sub-commands using the format -// -// command (subcommand1|subcommand2|...) -func UsageCommands() string { - return `artifact sync-image -devbuild (list|create|get|update|rerun) -` -} - -// UsageExamples produces an example of a valid invocation of the CLI tool. -func UsageExamples() string { - return os.Args[0] + ` artifact sync-image --body '{ - "ImageSyncRequest": { - "source": "Culpa possimus.", - "target": "Perferendis nisi non quia debitis." - } - }'` + "\n" + - os.Args[0] + ` devbuild list --size 9048917590767144830 --offset 2393528839850969203 --hotfix false --created-by "Fugiat voluptatibus quia."` + "\n" + - "" -} - -// ParseEndpoint returns the endpoint and payload as specified on the command -// line. -func ParseEndpoint( - scheme, host string, - doer goahttp.Doer, - enc func(*http.Request) goahttp.Encoder, - dec func(*http.Response) goahttp.Decoder, - restore bool, -) (goa.Endpoint, any, error) { - var ( - artifactFlags = flag.NewFlagSet("artifact", flag.ContinueOnError) - - artifactSyncImageFlags = flag.NewFlagSet("sync-image", flag.ExitOnError) - artifactSyncImageBodyFlag = artifactSyncImageFlags.String("body", "REQUIRED", "") - - devbuildFlags = flag.NewFlagSet("devbuild", flag.ContinueOnError) - - devbuildListFlags = flag.NewFlagSet("list", flag.ExitOnError) - devbuildListSizeFlag = devbuildListFlags.String("size", "10", "") - devbuildListOffsetFlag = devbuildListFlags.String("offset", "", "") - devbuildListHotfixFlag = devbuildListFlags.String("hotfix", "", "") - devbuildListCreatedByFlag = devbuildListFlags.String("created-by", "", "") - - devbuildCreateFlags = flag.NewFlagSet("create", flag.ExitOnError) - devbuildCreateBodyFlag = devbuildCreateFlags.String("body", "REQUIRED", "") - devbuildCreateDryrunFlag = devbuildCreateFlags.String("dryrun", "", "") - - devbuildGetFlags = flag.NewFlagSet("get", flag.ExitOnError) - devbuildGetIDFlag = devbuildGetFlags.String("id", "REQUIRED", "ID of build") - devbuildGetSyncFlag = devbuildGetFlags.String("sync", "", "") - - devbuildUpdateFlags = flag.NewFlagSet("update", flag.ExitOnError) - devbuildUpdateBodyFlag = devbuildUpdateFlags.String("body", "REQUIRED", "") - devbuildUpdateIDFlag = devbuildUpdateFlags.String("id", "REQUIRED", "ID of build") - devbuildUpdateDryrunFlag = devbuildUpdateFlags.String("dryrun", "", "") - - devbuildRerunFlags = flag.NewFlagSet("rerun", flag.ExitOnError) - devbuildRerunIDFlag = devbuildRerunFlags.String("id", "REQUIRED", "ID of build") - devbuildRerunDryrunFlag = devbuildRerunFlags.String("dryrun", "", "") - ) - artifactFlags.Usage = artifactUsage - artifactSyncImageFlags.Usage = artifactSyncImageUsage - - devbuildFlags.Usage = devbuildUsage - devbuildListFlags.Usage = devbuildListUsage - devbuildCreateFlags.Usage = devbuildCreateUsage - devbuildGetFlags.Usage = devbuildGetUsage - devbuildUpdateFlags.Usage = devbuildUpdateUsage - devbuildRerunFlags.Usage = devbuildRerunUsage - - if err := flag.CommandLine.Parse(os.Args[1:]); err != nil { - return nil, nil, err - } - - if flag.NArg() < 2 { // two non flag args are required: SERVICE and ENDPOINT (aka COMMAND) - return nil, nil, fmt.Errorf("not enough arguments") - } - - var ( - svcn string - svcf *flag.FlagSet - ) - { - svcn = flag.Arg(0) - switch svcn { - case "artifact": - svcf = artifactFlags - case "devbuild": - svcf = devbuildFlags - default: - return nil, nil, fmt.Errorf("unknown service %q", svcn) - } - } - if err := svcf.Parse(flag.Args()[1:]); err != nil { - return nil, nil, err - } - - var ( - epn string - epf *flag.FlagSet - ) - { - epn = svcf.Arg(0) - switch svcn { - case "artifact": - switch epn { - case "sync-image": - epf = artifactSyncImageFlags - - } - - case "devbuild": - switch epn { - case "list": - epf = devbuildListFlags - - case "create": - epf = devbuildCreateFlags - - case "get": - epf = devbuildGetFlags - - case "update": - epf = devbuildUpdateFlags - - case "rerun": - epf = devbuildRerunFlags - - } - - } - } - if epf == nil { - return nil, nil, fmt.Errorf("unknown %q endpoint %q", svcn, epn) - } - - // Parse endpoint flags if any - if svcf.NArg() > 1 { - if err := epf.Parse(svcf.Args()[1:]); err != nil { - return nil, nil, err - } - } - - var ( - data any - endpoint goa.Endpoint - err error - ) - { - switch svcn { - case "artifact": - c := artifactc.NewClient(scheme, host, doer, enc, dec, restore) - switch epn { - case "sync-image": - endpoint = c.SyncImage() - data, err = artifactc.BuildSyncImagePayload(*artifactSyncImageBodyFlag) - } - case "devbuild": - c := devbuildc.NewClient(scheme, host, doer, enc, dec, restore) - switch epn { - case "list": - endpoint = c.List() - data, err = devbuildc.BuildListPayload(*devbuildListSizeFlag, *devbuildListOffsetFlag, *devbuildListHotfixFlag, *devbuildListCreatedByFlag) - case "create": - endpoint = c.Create() - data, err = devbuildc.BuildCreatePayload(*devbuildCreateBodyFlag, *devbuildCreateDryrunFlag) - case "get": - endpoint = c.Get() - data, err = devbuildc.BuildGetPayload(*devbuildGetIDFlag, *devbuildGetSyncFlag) - case "update": - endpoint = c.Update() - data, err = devbuildc.BuildUpdatePayload(*devbuildUpdateBodyFlag, *devbuildUpdateIDFlag, *devbuildUpdateDryrunFlag) - case "rerun": - endpoint = c.Rerun() - data, err = devbuildc.BuildRerunPayload(*devbuildRerunIDFlag, *devbuildRerunDryrunFlag) - } - } - } - if err != nil { - return nil, nil, err - } - - return endpoint, data, nil -} - -// artifactUsage displays the usage of the artifact command and its subcommands. -func artifactUsage() { - fmt.Fprintf(os.Stderr, `The artifact service provides operations to manage artifacts. -Usage: - %[1]s [globalflags] artifact COMMAND [flags] - -COMMAND: - sync-image: Sync hotfix image to dockerhub - -Additional help: - %[1]s artifact COMMAND --help -`, os.Args[0]) -} -func artifactSyncImageUsage() { - fmt.Fprintf(os.Stderr, `%[1]s [flags] artifact sync-image -body JSON - -Sync hotfix image to dockerhub - -body JSON: - -Example: - %[1]s artifact sync-image --body '{ - "ImageSyncRequest": { - "source": "Culpa possimus.", - "target": "Perferendis nisi non quia debitis." - } - }' -`, os.Args[0]) -} - -// devbuildUsage displays the usage of the devbuild command and its subcommands. -func devbuildUsage() { - fmt.Fprintf(os.Stderr, `The devbuild service provides operations to manage dev builds. -Usage: - %[1]s [globalflags] devbuild COMMAND [flags] - -COMMAND: - list: List devbuild - create: Create and trigger devbuild - get: Get devbuild - update: Update devbuild status - rerun: Rerun devbuild - -Additional help: - %[1]s devbuild COMMAND --help -`, os.Args[0]) -} -func devbuildListUsage() { - fmt.Fprintf(os.Stderr, `%[1]s [flags] devbuild list -size INT -offset INT -hotfix BOOL -created-by STRING - -List devbuild - -size INT: - -offset INT: - -hotfix BOOL: - -created-by STRING: - -Example: - %[1]s devbuild list --size 9048917590767144830 --offset 2393528839850969203 --hotfix false --created-by "Fugiat voluptatibus quia." -`, os.Args[0]) -} - -func devbuildCreateUsage() { - fmt.Fprintf(os.Stderr, `%[1]s [flags] devbuild create -body JSON -dryrun BOOL - -Create and trigger devbuild - -body JSON: - -dryrun BOOL: - -Example: - %[1]s devbuild create --body '{ - "createdBy": "mortimer@herzogfranecki.biz", - "request": { - "buildEnv": "Sunt nihil quia numquam suscipit corrupti qui.", - "builderImg": "Sint ut blanditiis.", - "edition": "enterprise", - "features": "Aperiam natus in ut quae accusantium.", - "gitRef": "Numquam possimus possimus ipsum rerum unde.", - "githubRepo": "Numquam neque reiciendis quaerat.", - "isHotfix": true, - "isPushGCR": true, - "pipelineEngine": "tekton", - "pluginGitRef": "Laboriosam esse dicta.", - "product": "tidb", - "productBaseImg": "Tempore ut dolores.", - "productDockerfile": "Iusto suscipit.", - "targetImg": "Et aut error doloremque non itaque.", - "version": "Voluptas quia reprehenderit fugit quo debitis numquam." - } - }' --dryrun true -`, os.Args[0]) -} - -func devbuildGetUsage() { - fmt.Fprintf(os.Stderr, `%[1]s [flags] devbuild get -id INT -sync BOOL - -Get devbuild - -id INT: ID of build - -sync BOOL: - -Example: - %[1]s devbuild get --id 1 --sync false -`, os.Args[0]) -} - -func devbuildUpdateUsage() { - fmt.Fprintf(os.Stderr, `%[1]s [flags] devbuild update -body JSON -id INT -dryrun BOOL - -Update devbuild status - -body JSON: - -id INT: ID of build - -dryrun BOOL: - -Example: - %[1]s devbuild update --body '{ - "DevBuild": { - "id": 8670468037696883245, - "meta": { - "createdAt": "Nihil soluta aut adipisci est.", - "createdBy": "Qui necessitatibus possimus ab quos facere.", - "updatedAt": "Repudiandae voluptatem rem earum aut at nulla." - }, - "spec": { - "buildEnv": "Natus totam esse maxime aliquid sunt.", - "builderImg": "At illo voluptas dolor.", - "edition": "community", - "features": "Beatae sunt nesciunt amet autem.", - "gitHash": "Sit accusamus aspernatur aut laboriosam.", - "gitRef": "Perspiciatis perspiciatis atque inventore id.", - "githubRepo": "Ut libero magnam sapiente dolores qui.", - "isHotfix": false, - "isPushGCR": true, - "pipelineEngine": "jenkins", - "pluginGitRef": "Deleniti at consequatur doloribus culpa velit et.", - "product": "pd", - "productBaseImg": "Voluptas hic.", - "productDockerfile": "Ut eum iusto id officiis.", - "targetImg": "Laboriosam ut perspiciatis porro.", - "version": "Distinctio aliquid eum." - }, - "status": { - "buildReport": { - "binaries": [ - { - "component": "Neque velit maiores culpa rerum accusamus.", - "ociFile": { - "file": "Consectetur et officia necessitatibus et necessitatibus sint.", - "repo": "Enim minima et vel qui nulla qui.", - "tag": "Maiores aut rerum." - }, - "platform": "Similique nesciunt dolorum quisquam qui odio.", - "sha256OciFile": { - "file": "Consectetur et officia necessitatibus et necessitatibus sint.", - "repo": "Enim minima et vel qui nulla qui.", - "tag": "Maiores aut rerum." - }, - "sha256URL": "Praesentium facilis corrupti ullam impedit incidunt.", - "url": "Aut quas pariatur qui." - }, - { - "component": "Neque velit maiores culpa rerum accusamus.", - "ociFile": { - "file": "Consectetur et officia necessitatibus et necessitatibus sint.", - "repo": "Enim minima et vel qui nulla qui.", - "tag": "Maiores aut rerum." - }, - "platform": "Similique nesciunt dolorum quisquam qui odio.", - "sha256OciFile": { - "file": "Consectetur et officia necessitatibus et necessitatibus sint.", - "repo": "Enim minima et vel qui nulla qui.", - "tag": "Maiores aut rerum." - }, - "sha256URL": "Praesentium facilis corrupti ullam impedit incidunt.", - "url": "Aut quas pariatur qui." - } - ], - "gitHash": "Harum repellat qui eos est velit.", - "images": [ - { - "platform": "Ut rerum dolorum aspernatur necessitatibus.", - "url": "Laborum iste nobis omnis quae." - }, - { - "platform": "Ut rerum dolorum aspernatur necessitatibus.", - "url": "Laborum iste nobis omnis quae." - }, - { - "platform": "Ut rerum dolorum aspernatur necessitatibus.", - "url": "Laborum iste nobis omnis quae." - }, - { - "platform": "Ut rerum dolorum aspernatur necessitatibus.", - "url": "Laborum iste nobis omnis quae." - } - ], - "pluginGitHash": "Assumenda itaque necessitatibus eligendi qui qui illum.", - "printedVersion": "Aliquam quia eum quia id qui." - }, - "errMsg": "Fugiat sint aut minus aperiam quod.", - "pipelineBuildID": 6941289464511149, - "pipelineEndAt": "Deleniti natus reprehenderit nihil animi hic fugiat.", - "pipelineStartAt": "Accusamus velit ipsam.", - "pipelineViewURL": "Enim harum dolorum.", - "pipelineViewURLs": [ - "Illo blanditiis totam in.", - "Dignissimos tempore aut." - ], - "status": "PENDING", - "tektonStatus": { - "pipelines": [ - { - "endAt": "Excepturi ipsa veniam aspernatur quae.", - "gitHash": "Voluptatem enim aliquam.", - "images": [ - { - "platform": "Ut rerum dolorum aspernatur necessitatibus.", - "url": "Laborum iste nobis omnis quae." - }, - { - "platform": "Ut rerum dolorum aspernatur necessitatibus.", - "url": "Laborum iste nobis omnis quae." - }, - { - "platform": "Ut rerum dolorum aspernatur necessitatibus.", - "url": "Laborum iste nobis omnis quae." - }, - { - "platform": "Ut rerum dolorum aspernatur necessitatibus.", - "url": "Laborum iste nobis omnis quae." - } - ], - "name": "Dolores id quibusdam impedit corrupti veritatis.", - "ociArtifacts": [ - { - "files": [ - "Temporibus totam quae debitis odio hic.", - "Atque eos consequatur laudantium.", - "Vitae iste.", - "Odit blanditiis magni eaque quas eos voluptatem." - ], - "repo": "Quam necessitatibus optio ipsam autem vel veniam.", - "tag": "Provident qui." - }, - { - "files": [ - "Temporibus totam quae debitis odio hic.", - "Atque eos consequatur laudantium.", - "Vitae iste.", - "Odit blanditiis magni eaque quas eos voluptatem." - ], - "repo": "Quam necessitatibus optio ipsam autem vel veniam.", - "tag": "Provident qui." - }, - { - "files": [ - "Temporibus totam quae debitis odio hic.", - "Atque eos consequatur laudantium.", - "Vitae iste.", - "Odit blanditiis magni eaque quas eos voluptatem." - ], - "repo": "Quam necessitatibus optio ipsam autem vel veniam.", - "tag": "Provident qui." - } - ], - "platform": "Quis quia vitae non ratione.", - "startAt": "Minus sapiente doloremque rerum quasi.", - "status": "PROCESSING", - "url": "Saepe rerum tenetur vero eveniet." - }, - { - "endAt": "Excepturi ipsa veniam aspernatur quae.", - "gitHash": "Voluptatem enim aliquam.", - "images": [ - { - "platform": "Ut rerum dolorum aspernatur necessitatibus.", - "url": "Laborum iste nobis omnis quae." - }, - { - "platform": "Ut rerum dolorum aspernatur necessitatibus.", - "url": "Laborum iste nobis omnis quae." - }, - { - "platform": "Ut rerum dolorum aspernatur necessitatibus.", - "url": "Laborum iste nobis omnis quae." - }, - { - "platform": "Ut rerum dolorum aspernatur necessitatibus.", - "url": "Laborum iste nobis omnis quae." - } - ], - "name": "Dolores id quibusdam impedit corrupti veritatis.", - "ociArtifacts": [ - { - "files": [ - "Temporibus totam quae debitis odio hic.", - "Atque eos consequatur laudantium.", - "Vitae iste.", - "Odit blanditiis magni eaque quas eos voluptatem." - ], - "repo": "Quam necessitatibus optio ipsam autem vel veniam.", - "tag": "Provident qui." - }, - { - "files": [ - "Temporibus totam quae debitis odio hic.", - "Atque eos consequatur laudantium.", - "Vitae iste.", - "Odit blanditiis magni eaque quas eos voluptatem." - ], - "repo": "Quam necessitatibus optio ipsam autem vel veniam.", - "tag": "Provident qui." - }, - { - "files": [ - "Temporibus totam quae debitis odio hic.", - "Atque eos consequatur laudantium.", - "Vitae iste.", - "Odit blanditiis magni eaque quas eos voluptatem." - ], - "repo": "Quam necessitatibus optio ipsam autem vel veniam.", - "tag": "Provident qui." - } - ], - "platform": "Quis quia vitae non ratione.", - "startAt": "Minus sapiente doloremque rerum quasi.", - "status": "PROCESSING", - "url": "Saepe rerum tenetur vero eveniet." - }, - { - "endAt": "Excepturi ipsa veniam aspernatur quae.", - "gitHash": "Voluptatem enim aliquam.", - "images": [ - { - "platform": "Ut rerum dolorum aspernatur necessitatibus.", - "url": "Laborum iste nobis omnis quae." - }, - { - "platform": "Ut rerum dolorum aspernatur necessitatibus.", - "url": "Laborum iste nobis omnis quae." - }, - { - "platform": "Ut rerum dolorum aspernatur necessitatibus.", - "url": "Laborum iste nobis omnis quae." - }, - { - "platform": "Ut rerum dolorum aspernatur necessitatibus.", - "url": "Laborum iste nobis omnis quae." - } - ], - "name": "Dolores id quibusdam impedit corrupti veritatis.", - "ociArtifacts": [ - { - "files": [ - "Temporibus totam quae debitis odio hic.", - "Atque eos consequatur laudantium.", - "Vitae iste.", - "Odit blanditiis magni eaque quas eos voluptatem." - ], - "repo": "Quam necessitatibus optio ipsam autem vel veniam.", - "tag": "Provident qui." - }, - { - "files": [ - "Temporibus totam quae debitis odio hic.", - "Atque eos consequatur laudantium.", - "Vitae iste.", - "Odit blanditiis magni eaque quas eos voluptatem." - ], - "repo": "Quam necessitatibus optio ipsam autem vel veniam.", - "tag": "Provident qui." - }, - { - "files": [ - "Temporibus totam quae debitis odio hic.", - "Atque eos consequatur laudantium.", - "Vitae iste.", - "Odit blanditiis magni eaque quas eos voluptatem." - ], - "repo": "Quam necessitatibus optio ipsam autem vel veniam.", - "tag": "Provident qui." - } - ], - "platform": "Quis quia vitae non ratione.", - "startAt": "Minus sapiente doloremque rerum quasi.", - "status": "PROCESSING", - "url": "Saepe rerum tenetur vero eveniet." - } - ] - } - } - } - }' --id 1 --dryrun true -`, os.Args[0]) -} - -func devbuildRerunUsage() { - fmt.Fprintf(os.Stderr, `%[1]s [flags] devbuild rerun -id INT -dryrun BOOL - -Rerun devbuild - -id INT: ID of build - -dryrun BOOL: - -Example: - %[1]s devbuild rerun --id 1 --dryrun true -`, os.Args[0]) -} diff --git a/experiments/tibuild-v2/gen/http/devbuild/client/cli.go b/experiments/tibuild-v2/gen/http/devbuild/client/cli.go deleted file mode 100644 index 2449a73d..00000000 --- a/experiments/tibuild-v2/gen/http/devbuild/client/cli.go +++ /dev/null @@ -1,220 +0,0 @@ -// Code generated by goa v3.20.0, DO NOT EDIT. -// -// devbuild HTTP client CLI support package -// -// Command: -// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/design - -package client - -import ( - "encoding/json" - "fmt" - "strconv" - - devbuild "github.com/PingCAP-QE/ee-apps/tibuild/gen/devbuild" - goa "goa.design/goa/v3/pkg" -) - -// BuildListPayload builds the payload for the devbuild list endpoint from CLI -// flags. -func BuildListPayload(devbuildListSize string, devbuildListOffset string, devbuildListHotfix string, devbuildListCreatedBy string) (*devbuild.ListPayload, error) { - var err error - var size int - { - if devbuildListSize != "" { - var v int64 - v, err = strconv.ParseInt(devbuildListSize, 10, strconv.IntSize) - size = int(v) - if err != nil { - return nil, fmt.Errorf("invalid value for size, must be INT") - } - } - } - var offset int - { - if devbuildListOffset != "" { - var v int64 - v, err = strconv.ParseInt(devbuildListOffset, 10, strconv.IntSize) - offset = int(v) - if err != nil { - return nil, fmt.Errorf("invalid value for offset, must be INT") - } - } - } - var hotfix *bool - { - if devbuildListHotfix != "" { - var val bool - val, err = strconv.ParseBool(devbuildListHotfix) - hotfix = &val - if err != nil { - return nil, fmt.Errorf("invalid value for hotfix, must be BOOL") - } - } - } - var createdBy *string - { - if devbuildListCreatedBy != "" { - createdBy = &devbuildListCreatedBy - } - } - v := &devbuild.ListPayload{} - v.Size = size - v.Offset = offset - v.Hotfix = hotfix - v.CreatedBy = createdBy - - return v, nil -} - -// BuildCreatePayload builds the payload for the devbuild create endpoint from -// CLI flags. -func BuildCreatePayload(devbuildCreateBody string, devbuildCreateDryrun string) (*devbuild.CreatePayload, error) { - var err error - var body CreateRequestBody - { - err = json.Unmarshal([]byte(devbuildCreateBody), &body) - if err != nil { - return nil, fmt.Errorf("invalid JSON for body, \nerror: %s, \nexample of valid JSON:\n%s", err, "'{\n \"createdBy\": \"mortimer@herzogfranecki.biz\",\n \"request\": {\n \"buildEnv\": \"Sunt nihil quia numquam suscipit corrupti qui.\",\n \"builderImg\": \"Sint ut blanditiis.\",\n \"edition\": \"enterprise\",\n \"features\": \"Aperiam natus in ut quae accusantium.\",\n \"gitRef\": \"Numquam possimus possimus ipsum rerum unde.\",\n \"githubRepo\": \"Numquam neque reiciendis quaerat.\",\n \"isHotfix\": true,\n \"isPushGCR\": true,\n \"pipelineEngine\": \"tekton\",\n \"pluginGitRef\": \"Laboriosam esse dicta.\",\n \"product\": \"tidb\",\n \"productBaseImg\": \"Tempore ut dolores.\",\n \"productDockerfile\": \"Iusto suscipit.\",\n \"targetImg\": \"Et aut error doloremque non itaque.\",\n \"version\": \"Voluptas quia reprehenderit fugit quo debitis numquam.\"\n }\n }'") - } - if body.Request == nil { - err = goa.MergeErrors(err, goa.MissingFieldError("request", "body")) - } - err = goa.MergeErrors(err, goa.ValidateFormat("body.createdBy", body.CreatedBy, goa.FormatEmail)) - if body.Request != nil { - if err2 := ValidateDevBuildRequestRequestBody(body.Request); err2 != nil { - err = goa.MergeErrors(err, err2) - } - } - if err != nil { - return nil, err - } - } - var dryrun bool - { - if devbuildCreateDryrun != "" { - dryrun, err = strconv.ParseBool(devbuildCreateDryrun) - if err != nil { - return nil, fmt.Errorf("invalid value for dryrun, must be BOOL") - } - } - } - v := &devbuild.CreatePayload{ - CreatedBy: body.CreatedBy, - } - if body.Request != nil { - v.Request = marshalDevBuildRequestRequestBodyToDevbuildDevBuildRequest(body.Request) - } - v.Dryrun = dryrun - - return v, nil -} - -// BuildGetPayload builds the payload for the devbuild get endpoint from CLI -// flags. -func BuildGetPayload(devbuildGetID string, devbuildGetSync string) (*devbuild.GetPayload, error) { - var err error - var id int - { - var v int64 - v, err = strconv.ParseInt(devbuildGetID, 10, strconv.IntSize) - id = int(v) - if err != nil { - return nil, fmt.Errorf("invalid value for id, must be INT") - } - } - var sync bool - { - if devbuildGetSync != "" { - sync, err = strconv.ParseBool(devbuildGetSync) - if err != nil { - return nil, fmt.Errorf("invalid value for sync, must be BOOL") - } - } - } - v := &devbuild.GetPayload{} - v.ID = id - v.Sync = sync - - return v, nil -} - -// BuildUpdatePayload builds the payload for the devbuild update endpoint from -// CLI flags. -func BuildUpdatePayload(devbuildUpdateBody string, devbuildUpdateID string, devbuildUpdateDryrun string) (*devbuild.UpdatePayload, error) { - var err error - var body UpdateRequestBody - { - err = json.Unmarshal([]byte(devbuildUpdateBody), &body) - if err != nil { - return nil, fmt.Errorf("invalid JSON for body, \nerror: %s, \nexample of valid JSON:\n%s", err, "'{\n \"DevBuild\": {\n \"id\": 8670468037696883245,\n \"meta\": {\n \"createdAt\": \"Nihil soluta aut adipisci est.\",\n \"createdBy\": \"Qui necessitatibus possimus ab quos facere.\",\n \"updatedAt\": \"Repudiandae voluptatem rem earum aut at nulla.\"\n },\n \"spec\": {\n \"buildEnv\": \"Natus totam esse maxime aliquid sunt.\",\n \"builderImg\": \"At illo voluptas dolor.\",\n \"edition\": \"community\",\n \"features\": \"Beatae sunt nesciunt amet autem.\",\n \"gitHash\": \"Sit accusamus aspernatur aut laboriosam.\",\n \"gitRef\": \"Perspiciatis perspiciatis atque inventore id.\",\n \"githubRepo\": \"Ut libero magnam sapiente dolores qui.\",\n \"isHotfix\": false,\n \"isPushGCR\": true,\n \"pipelineEngine\": \"jenkins\",\n \"pluginGitRef\": \"Deleniti at consequatur doloribus culpa velit et.\",\n \"product\": \"pd\",\n \"productBaseImg\": \"Voluptas hic.\",\n \"productDockerfile\": \"Ut eum iusto id officiis.\",\n \"targetImg\": \"Laboriosam ut perspiciatis porro.\",\n \"version\": \"Distinctio aliquid eum.\"\n },\n \"status\": {\n \"buildReport\": {\n \"binaries\": [\n {\n \"component\": \"Neque velit maiores culpa rerum accusamus.\",\n \"ociFile\": {\n \"file\": \"Consectetur et officia necessitatibus et necessitatibus sint.\",\n \"repo\": \"Enim minima et vel qui nulla qui.\",\n \"tag\": \"Maiores aut rerum.\"\n },\n \"platform\": \"Similique nesciunt dolorum quisquam qui odio.\",\n \"sha256OciFile\": {\n \"file\": \"Consectetur et officia necessitatibus et necessitatibus sint.\",\n \"repo\": \"Enim minima et vel qui nulla qui.\",\n \"tag\": \"Maiores aut rerum.\"\n },\n \"sha256URL\": \"Praesentium facilis corrupti ullam impedit incidunt.\",\n \"url\": \"Aut quas pariatur qui.\"\n },\n {\n \"component\": \"Neque velit maiores culpa rerum accusamus.\",\n \"ociFile\": {\n \"file\": \"Consectetur et officia necessitatibus et necessitatibus sint.\",\n \"repo\": \"Enim minima et vel qui nulla qui.\",\n \"tag\": \"Maiores aut rerum.\"\n },\n \"platform\": \"Similique nesciunt dolorum quisquam qui odio.\",\n \"sha256OciFile\": {\n \"file\": \"Consectetur et officia necessitatibus et necessitatibus sint.\",\n \"repo\": \"Enim minima et vel qui nulla qui.\",\n \"tag\": \"Maiores aut rerum.\"\n },\n \"sha256URL\": \"Praesentium facilis corrupti ullam impedit incidunt.\",\n \"url\": \"Aut quas pariatur qui.\"\n }\n ],\n \"gitHash\": \"Harum repellat qui eos est velit.\",\n \"images\": [\n {\n \"platform\": \"Ut rerum dolorum aspernatur necessitatibus.\",\n \"url\": \"Laborum iste nobis omnis quae.\"\n },\n {\n \"platform\": \"Ut rerum dolorum aspernatur necessitatibus.\",\n \"url\": \"Laborum iste nobis omnis quae.\"\n },\n {\n \"platform\": \"Ut rerum dolorum aspernatur necessitatibus.\",\n \"url\": \"Laborum iste nobis omnis quae.\"\n },\n {\n \"platform\": \"Ut rerum dolorum aspernatur necessitatibus.\",\n \"url\": \"Laborum iste nobis omnis quae.\"\n }\n ],\n \"pluginGitHash\": \"Assumenda itaque necessitatibus eligendi qui qui illum.\",\n \"printedVersion\": \"Aliquam quia eum quia id qui.\"\n },\n \"errMsg\": \"Fugiat sint aut minus aperiam quod.\",\n \"pipelineBuildID\": 6941289464511149,\n \"pipelineEndAt\": \"Deleniti natus reprehenderit nihil animi hic fugiat.\",\n \"pipelineStartAt\": \"Accusamus velit ipsam.\",\n \"pipelineViewURL\": \"Enim harum dolorum.\",\n \"pipelineViewURLs\": [\n \"Illo blanditiis totam in.\",\n \"Dignissimos tempore aut.\"\n ],\n \"status\": \"PENDING\",\n \"tektonStatus\": {\n \"pipelines\": [\n {\n \"endAt\": \"Excepturi ipsa veniam aspernatur quae.\",\n \"gitHash\": \"Voluptatem enim aliquam.\",\n \"images\": [\n {\n \"platform\": \"Ut rerum dolorum aspernatur necessitatibus.\",\n \"url\": \"Laborum iste nobis omnis quae.\"\n },\n {\n \"platform\": \"Ut rerum dolorum aspernatur necessitatibus.\",\n \"url\": \"Laborum iste nobis omnis quae.\"\n },\n {\n \"platform\": \"Ut rerum dolorum aspernatur necessitatibus.\",\n \"url\": \"Laborum iste nobis omnis quae.\"\n },\n {\n \"platform\": \"Ut rerum dolorum aspernatur necessitatibus.\",\n \"url\": \"Laborum iste nobis omnis quae.\"\n }\n ],\n \"name\": \"Dolores id quibusdam impedit corrupti veritatis.\",\n \"ociArtifacts\": [\n {\n \"files\": [\n \"Temporibus totam quae debitis odio hic.\",\n \"Atque eos consequatur laudantium.\",\n \"Vitae iste.\",\n \"Odit blanditiis magni eaque quas eos voluptatem.\"\n ],\n \"repo\": \"Quam necessitatibus optio ipsam autem vel veniam.\",\n \"tag\": \"Provident qui.\"\n },\n {\n \"files\": [\n \"Temporibus totam quae debitis odio hic.\",\n \"Atque eos consequatur laudantium.\",\n \"Vitae iste.\",\n \"Odit blanditiis magni eaque quas eos voluptatem.\"\n ],\n \"repo\": \"Quam necessitatibus optio ipsam autem vel veniam.\",\n \"tag\": \"Provident qui.\"\n },\n {\n \"files\": [\n \"Temporibus totam quae debitis odio hic.\",\n \"Atque eos consequatur laudantium.\",\n \"Vitae iste.\",\n \"Odit blanditiis magni eaque quas eos voluptatem.\"\n ],\n \"repo\": \"Quam necessitatibus optio ipsam autem vel veniam.\",\n \"tag\": \"Provident qui.\"\n }\n ],\n \"platform\": \"Quis quia vitae non ratione.\",\n \"startAt\": \"Minus sapiente doloremque rerum quasi.\",\n \"status\": \"PROCESSING\",\n \"url\": \"Saepe rerum tenetur vero eveniet.\"\n },\n {\n \"endAt\": \"Excepturi ipsa veniam aspernatur quae.\",\n \"gitHash\": \"Voluptatem enim aliquam.\",\n \"images\": [\n {\n \"platform\": \"Ut rerum dolorum aspernatur necessitatibus.\",\n \"url\": \"Laborum iste nobis omnis quae.\"\n },\n {\n \"platform\": \"Ut rerum dolorum aspernatur necessitatibus.\",\n \"url\": \"Laborum iste nobis omnis quae.\"\n },\n {\n \"platform\": \"Ut rerum dolorum aspernatur necessitatibus.\",\n \"url\": \"Laborum iste nobis omnis quae.\"\n },\n {\n \"platform\": \"Ut rerum dolorum aspernatur necessitatibus.\",\n \"url\": \"Laborum iste nobis omnis quae.\"\n }\n ],\n \"name\": \"Dolores id quibusdam impedit corrupti veritatis.\",\n \"ociArtifacts\": [\n {\n \"files\": [\n \"Temporibus totam quae debitis odio hic.\",\n \"Atque eos consequatur laudantium.\",\n \"Vitae iste.\",\n \"Odit blanditiis magni eaque quas eos voluptatem.\"\n ],\n \"repo\": \"Quam necessitatibus optio ipsam autem vel veniam.\",\n \"tag\": \"Provident qui.\"\n },\n {\n \"files\": [\n \"Temporibus totam quae debitis odio hic.\",\n \"Atque eos consequatur laudantium.\",\n \"Vitae iste.\",\n \"Odit blanditiis magni eaque quas eos voluptatem.\"\n ],\n \"repo\": \"Quam necessitatibus optio ipsam autem vel veniam.\",\n \"tag\": \"Provident qui.\"\n },\n {\n \"files\": [\n \"Temporibus totam quae debitis odio hic.\",\n \"Atque eos consequatur laudantium.\",\n \"Vitae iste.\",\n \"Odit blanditiis magni eaque quas eos voluptatem.\"\n ],\n \"repo\": \"Quam necessitatibus optio ipsam autem vel veniam.\",\n \"tag\": \"Provident qui.\"\n }\n ],\n \"platform\": \"Quis quia vitae non ratione.\",\n \"startAt\": \"Minus sapiente doloremque rerum quasi.\",\n \"status\": \"PROCESSING\",\n \"url\": \"Saepe rerum tenetur vero eveniet.\"\n },\n {\n \"endAt\": \"Excepturi ipsa veniam aspernatur quae.\",\n \"gitHash\": \"Voluptatem enim aliquam.\",\n \"images\": [\n {\n \"platform\": \"Ut rerum dolorum aspernatur necessitatibus.\",\n \"url\": \"Laborum iste nobis omnis quae.\"\n },\n {\n \"platform\": \"Ut rerum dolorum aspernatur necessitatibus.\",\n \"url\": \"Laborum iste nobis omnis quae.\"\n },\n {\n \"platform\": \"Ut rerum dolorum aspernatur necessitatibus.\",\n \"url\": \"Laborum iste nobis omnis quae.\"\n },\n {\n \"platform\": \"Ut rerum dolorum aspernatur necessitatibus.\",\n \"url\": \"Laborum iste nobis omnis quae.\"\n }\n ],\n \"name\": \"Dolores id quibusdam impedit corrupti veritatis.\",\n \"ociArtifacts\": [\n {\n \"files\": [\n \"Temporibus totam quae debitis odio hic.\",\n \"Atque eos consequatur laudantium.\",\n \"Vitae iste.\",\n \"Odit blanditiis magni eaque quas eos voluptatem.\"\n ],\n \"repo\": \"Quam necessitatibus optio ipsam autem vel veniam.\",\n \"tag\": \"Provident qui.\"\n },\n {\n \"files\": [\n \"Temporibus totam quae debitis odio hic.\",\n \"Atque eos consequatur laudantium.\",\n \"Vitae iste.\",\n \"Odit blanditiis magni eaque quas eos voluptatem.\"\n ],\n \"repo\": \"Quam necessitatibus optio ipsam autem vel veniam.\",\n \"tag\": \"Provident qui.\"\n },\n {\n \"files\": [\n \"Temporibus totam quae debitis odio hic.\",\n \"Atque eos consequatur laudantium.\",\n \"Vitae iste.\",\n \"Odit blanditiis magni eaque quas eos voluptatem.\"\n ],\n \"repo\": \"Quam necessitatibus optio ipsam autem vel veniam.\",\n \"tag\": \"Provident qui.\"\n }\n ],\n \"platform\": \"Quis quia vitae non ratione.\",\n \"startAt\": \"Minus sapiente doloremque rerum quasi.\",\n \"status\": \"PROCESSING\",\n \"url\": \"Saepe rerum tenetur vero eveniet.\"\n }\n ]\n }\n }\n }\n }'") - } - if body.DevBuild == nil { - err = goa.MergeErrors(err, goa.MissingFieldError("DevBuild", "body")) - } - if body.DevBuild != nil { - if err2 := ValidateDevBuildRequestBody(body.DevBuild); err2 != nil { - err = goa.MergeErrors(err, err2) - } - } - if err != nil { - return nil, err - } - } - var id int - { - var v int64 - v, err = strconv.ParseInt(devbuildUpdateID, 10, strconv.IntSize) - id = int(v) - if err != nil { - return nil, fmt.Errorf("invalid value for id, must be INT") - } - } - var dryrun bool - { - if devbuildUpdateDryrun != "" { - dryrun, err = strconv.ParseBool(devbuildUpdateDryrun) - if err != nil { - return nil, fmt.Errorf("invalid value for dryrun, must be BOOL") - } - } - } - v := &devbuild.UpdatePayload{} - if body.DevBuild != nil { - v.DevBuild = marshalDevBuildRequestBodyToDevbuildDevBuild(body.DevBuild) - } - v.ID = id - v.Dryrun = dryrun - - return v, nil -} - -// BuildRerunPayload builds the payload for the devbuild rerun endpoint from -// CLI flags. -func BuildRerunPayload(devbuildRerunID string, devbuildRerunDryrun string) (*devbuild.RerunPayload, error) { - var err error - var id int - { - var v int64 - v, err = strconv.ParseInt(devbuildRerunID, 10, strconv.IntSize) - id = int(v) - if err != nil { - return nil, fmt.Errorf("invalid value for id, must be INT") - } - } - var dryrun bool - { - if devbuildRerunDryrun != "" { - dryrun, err = strconv.ParseBool(devbuildRerunDryrun) - if err != nil { - return nil, fmt.Errorf("invalid value for dryrun, must be BOOL") - } - } - } - v := &devbuild.RerunPayload{} - v.ID = id - v.Dryrun = dryrun - - return v, nil -} diff --git a/experiments/tibuild-v2/gen/http/openapi.json b/experiments/tibuild-v2/gen/http/openapi.json deleted file mode 100644 index b8d723b8..00000000 --- a/experiments/tibuild-v2/gen/http/openapi.json +++ /dev/null @@ -1 +0,0 @@ -{"swagger":"2.0","info":{"title":"TiBuild API","description":"TiBuild API","contact":{"name":"Flare Zuo","email":"wuhui.zuo@pingcap.com","url":"https://github.com/wuhuizuo"},"version":"2.0.0"},"host":"localhost:8080","consumes":["application/json","application/xml","application/gob"],"produces":["application/json","application/xml","application/gob"],"paths":{"/api/artifact/sync-image":{"post":{"tags":["artifact"],"summary":"syncImage artifact","description":"Sync hotfix image to dockerhub","operationId":"artifact#syncImage","parameters":[{"name":"SyncImageRequestBody","in":"body","required":true,"schema":{"$ref":"#/definitions/ArtifactSyncImageRequestBody","required":["ImageSyncRequest"]}}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/ImageSyncRequest","required":["source","target"]}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/HTTPError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/HTTPError","required":["code","message"]}}},"schemes":["http"]}},"/api/devbuilds":{"get":{"tags":["devbuild"],"summary":"list devbuild","description":"List devbuild","operationId":"devbuild#list","parameters":[{"name":"size","in":"query","description":"The size limit of items","required":false,"type":"integer","default":10},{"name":"offset","in":"query","description":"The start position of items","required":false,"type":"integer","default":0},{"name":"hotfix","in":"query","description":"Filter hotfix","required":false,"type":"boolean"},{"name":"createdBy","in":"query","description":"Filter created by","required":false,"type":"string"}],"responses":{"200":{"description":"OK response.","schema":{"type":"array","items":{"$ref":"#/definitions/DevBuild"}}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/HTTPError","required":["code","message"]}}},"schemes":["http"]},"post":{"tags":["devbuild"],"summary":"create devbuild","description":"Create and trigger devbuild","operationId":"devbuild#create","parameters":[{"name":"dryrun","in":"query","description":"Dry run","required":false,"type":"boolean","default":false},{"name":"CreateRequestBody","in":"body","required":true,"schema":{"$ref":"#/definitions/DevbuildCreateRequestBody","required":["createdBy","request"]}}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/DevBuild","required":["id","meta","spec","status"]}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/HTTPError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/HTTPError","required":["code","message"]}}},"schemes":["http"]}},"/api/devbuilds/{id}":{"get":{"tags":["devbuild"],"summary":"get devbuild","description":"Get devbuild","operationId":"devbuild#get","parameters":[{"name":"sync","in":"query","description":"Whether sync with jenkins","required":false,"type":"boolean","default":false},{"name":"id","in":"path","description":"ID of build","required":true,"type":"integer"}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/DevBuild","required":["id","meta","spec","status"]}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/HTTPError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/HTTPError","required":["code","message"]}}},"schemes":["http"]},"put":{"tags":["devbuild"],"summary":"update devbuild","description":"Update devbuild status","operationId":"devbuild#update","parameters":[{"name":"dryrun","in":"query","description":"Dry run","required":false,"type":"boolean","default":false},{"name":"id","in":"path","description":"ID of build","required":true,"type":"integer"},{"name":"UpdateRequestBody","in":"body","required":true,"schema":{"$ref":"#/definitions/DevbuildUpdateRequestBody","required":["DevBuild"]}}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/DevBuild","required":["id","meta","spec","status"]}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/HTTPError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/HTTPError","required":["code","message"]}}},"schemes":["http"]}},"/api/devbuilds/{id}/rerun":{"post":{"tags":["devbuild"],"summary":"rerun devbuild","description":"Rerun devbuild","operationId":"devbuild#rerun","parameters":[{"name":"dryrun","in":"query","description":"Dry run","required":false,"type":"boolean","default":false},{"name":"id","in":"path","description":"ID of build","required":true,"type":"integer"}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/DevBuild","required":["id","meta","spec","status"]}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/HTTPError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/HTTPError","required":["code","message"]}}},"schemes":["http"]}}},"definitions":{"ArtifactSyncImageRequestBody":{"title":"ArtifactSyncImageRequestBody","type":"object","properties":{"ImageSyncRequest":{"$ref":"#/definitions/ImageSyncRequest"}},"example":{"ImageSyncRequest":{"source":"Culpa possimus.","target":"Perferendis nisi non quia debitis."}},"required":["ImageSyncRequest"]},"BinArtifact":{"title":"BinArtifact","type":"object","properties":{"component":{"type":"string","example":"Iure expedita aut aspernatur facilis."},"ociFile":{"$ref":"#/definitions/OciFile"},"platform":{"type":"string","example":"Consequatur cum."},"sha256OciFile":{"$ref":"#/definitions/OciFile"},"sha256URL":{"type":"string","example":"Culpa eos voluptas voluptas unde vero officiis."},"url":{"type":"string","example":"Non fuga vitae beatae."}},"example":{"component":"Ratione ab officiis consequatur nihil minus culpa.","ociFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"platform":"Delectus aliquam incidunt iure.","sha256OciFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"sha256URL":"Odio sed officia cumque voluptatem.","url":"Repellat amet qui labore maxime."},"required":["component","ociFile","platform","sha256OciFile","sha256URL","url"]},"BuildReport":{"title":"BuildReport","type":"object","properties":{"binaries":{"type":"array","items":{"$ref":"#/definitions/BinArtifact"},"example":[{"component":"Est consequatur quo voluptatem dolore.","ociFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"platform":"Totam harum.","sha256OciFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"sha256URL":"Non est enim sit provident.","url":"Provident rerum omnis."},{"component":"Est consequatur quo voluptatem dolore.","ociFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"platform":"Totam harum.","sha256OciFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"sha256URL":"Non est enim sit provident.","url":"Provident rerum omnis."}]},"gitHash":{"type":"string","example":"Provident quos et."},"images":{"type":"array","items":{"$ref":"#/definitions/ImageArtifact"},"example":[{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."}]},"pluginGitHash":{"type":"string","example":"Consequatur sunt illo."},"printedVersion":{"type":"string","example":"Molestias voluptas eveniet aperiam aperiam."}},"example":{"binaries":[{"component":"Est consequatur quo voluptatem dolore.","ociFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"platform":"Totam harum.","sha256OciFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"sha256URL":"Non est enim sit provident.","url":"Provident rerum omnis."},{"component":"Est consequatur quo voluptatem dolore.","ociFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"platform":"Totam harum.","sha256OciFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"sha256URL":"Non est enim sit provident.","url":"Provident rerum omnis."}],"gitHash":"Dolorem magni.","images":[{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."}],"pluginGitHash":"Delectus in corporis reiciendis consectetur.","printedVersion":"Sit quia rerum quos."},"required":["binaries","gitHash","images","pluginGitHash","printedVersion"]},"DevBuild":{"title":"DevBuild","type":"object","properties":{"id":{"type":"integer","example":1509731284302840021,"format":"int64"},"meta":{"$ref":"#/definitions/DevBuildMeta"},"spec":{"$ref":"#/definitions/DevBuildSpec"},"status":{"$ref":"#/definitions/DevBuildStatus"}},"example":{"id":2854111930968557351,"meta":{"createdAt":"Voluptatum voluptatum qui.","createdBy":"Eum sit doloremque et rem vel sunt.","updatedAt":"Quae ex ipsam eveniet error."},"spec":{"buildEnv":"Dolorem suscipit ut.","builderImg":"Minus itaque qui necessitatibus et voluptatum sint.","edition":"community","features":"Dolorem cupiditate.","gitHash":"Ut officiis eum animi eligendi inventore totam.","gitRef":"Eum sed consectetur ea.","githubRepo":"Expedita officia molestiae eos.","isHotfix":true,"isPushGCR":false,"pipelineEngine":"jenkins","pluginGitRef":"Est et.","product":"enterprise-plugin","productBaseImg":"Est aspernatur et vel dignissimos non corrupti.","productDockerfile":"Totam quod numquam ea cum.","targetImg":"Velit tempora necessitatibus asperiores.","version":"Sunt deserunt ut quod ut."},"status":{"buildReport":{"binaries":[{"component":"Est consequatur quo voluptatem dolore.","ociFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"platform":"Totam harum.","sha256OciFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"sha256URL":"Non est enim sit provident.","url":"Provident rerum omnis."},{"component":"Est consequatur quo voluptatem dolore.","ociFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"platform":"Totam harum.","sha256OciFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"sha256URL":"Non est enim sit provident.","url":"Provident rerum omnis."},{"component":"Est consequatur quo voluptatem dolore.","ociFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"platform":"Totam harum.","sha256OciFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"sha256URL":"Non est enim sit provident.","url":"Provident rerum omnis."},{"component":"Est consequatur quo voluptatem dolore.","ociFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"platform":"Totam harum.","sha256OciFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"sha256URL":"Non est enim sit provident.","url":"Provident rerum omnis."}],"gitHash":"Voluptatem ut excepturi aut molestias.","images":[{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."}],"pluginGitHash":"Sed quasi aut.","printedVersion":"Molestias aspernatur odio."},"errMsg":"Asperiores dolorum.","pipelineBuildID":2976244863257590590,"pipelineEndAt":"Et qui consequatur et.","pipelineStartAt":"Dignissimos et nisi enim temporibus laboriosam quasi.","pipelineViewURL":"Repellat magnam est ea et explicabo sunt.","pipelineViewURLs":["Explicabo quos assumenda.","Mollitia tempore."],"status":"PENDING","tektonStatus":{"pipelines":[{"endAt":"Voluptas quibusdam fugiat et.","gitHash":"Voluptatibus voluptas molestiae ut soluta libero.","images":[{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."}],"name":"Enim illum ratione in dolor exercitationem fugit.","ociArtifacts":[{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."}],"platform":"Aliquam animi amet dolorum aut qui.","startAt":"Voluptatum perferendis.","status":"PENDING","url":"Dolores dignissimos quam."},{"endAt":"Voluptas quibusdam fugiat et.","gitHash":"Voluptatibus voluptas molestiae ut soluta libero.","images":[{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."}],"name":"Enim illum ratione in dolor exercitationem fugit.","ociArtifacts":[{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."}],"platform":"Aliquam animi amet dolorum aut qui.","startAt":"Voluptatum perferendis.","status":"PENDING","url":"Dolores dignissimos quam."}]}}},"required":["id","meta","spec","status"]},"DevBuildMeta":{"title":"DevBuildMeta","type":"object","properties":{"createdAt":{"type":"string","example":"Laboriosam vero optio consectetur tempore accusantium odio."},"createdBy":{"type":"string","example":"Maxime molestias."},"updatedAt":{"type":"string","example":"Sed sequi."}},"example":{"createdAt":"Nihil sapiente consequuntur.","createdBy":"Quam alias minima.","updatedAt":"Rem quam earum libero sunt et."},"required":["createdAt","createdBy","updatedAt"]},"DevBuildRequest":{"title":"DevBuildRequest","type":"object","properties":{"buildEnv":{"type":"string","example":"Sunt accusantium nostrum quaerat necessitatibus distinctio nobis."},"builderImg":{"type":"string","example":"Sunt vero sunt."},"edition":{"type":"string","example":"enterprise","enum":["enterprise","community"]},"features":{"type":"string","example":"Sint ut ut magnam quia molestias facilis."},"gitRef":{"type":"string","example":"Voluptate dignissimos ducimus sint delectus accusantium molestiae."},"githubRepo":{"type":"string","example":"Non facilis a iste qui esse."},"isHotfix":{"type":"boolean","example":false},"isPushGCR":{"type":"boolean","example":false},"pipelineEngine":{"type":"string","example":"tekton","enum":["jenkins","tekton"]},"pluginGitRef":{"type":"string","example":"Suscipit fugiat laboriosam autem."},"product":{"type":"string","example":"","enum":["tidb","enterprise-plugin","tikv","pd","tiflash","br","dumpling","tidb-lightning","ticdc","ticdc-newarch","dm","tidb-binlog","tidb-tools","ng-monitoring","tidb-dashboard","drainer","pump",""]},"productBaseImg":{"type":"string","example":"Laudantium itaque dolor recusandae."},"productDockerfile":{"type":"string","example":"Deleniti eum."},"targetImg":{"type":"string","example":"Eligendi dolorem autem ullam."},"version":{"type":"string","example":"Quaerat repellendus similique expedita quia."}},"example":{"buildEnv":"Nobis accusamus a a.","builderImg":"Quam neque modi aut beatae quasi.","edition":"community","features":"Aliquam et velit voluptatum rerum et qui.","gitRef":"Sed culpa quaerat earum laborum est.","githubRepo":"Deleniti sint nesciunt ducimus non voluptas labore.","isHotfix":false,"isPushGCR":true,"pipelineEngine":"jenkins","pluginGitRef":"Voluptatem esse facere ut in.","product":"enterprise-plugin","productBaseImg":"Quas minus et autem molestiae.","productDockerfile":"Vel delectus.","targetImg":"Et et aut.","version":"Fugiat commodi."},"required":["edition","gitRef","product","version"]},"DevBuildSpec":{"title":"DevBuildSpec","type":"object","properties":{"buildEnv":{"type":"string","example":"Saepe dolores ullam."},"builderImg":{"type":"string","example":"Ut autem quas rerum in."},"edition":{"type":"string","example":"community","enum":["enterprise","community"]},"features":{"type":"string","example":"Qui cumque."},"gitHash":{"type":"string","example":"Veritatis voluptas unde maiores perspiciatis aperiam atque."},"gitRef":{"type":"string","example":"Qui praesentium accusantium neque rerum."},"githubRepo":{"type":"string","example":"Temporibus autem explicabo libero."},"isHotfix":{"type":"boolean","example":true},"isPushGCR":{"type":"boolean","example":false},"pipelineEngine":{"type":"string","example":"jenkins","enum":["jenkins","tekton"]},"pluginGitRef":{"type":"string","example":"Explicabo corrupti."},"product":{"type":"string","example":"dm","enum":["tidb","enterprise-plugin","tikv","pd","tiflash","br","dumpling","tidb-lightning","ticdc","ticdc-newarch","dm","tidb-binlog","tidb-tools","ng-monitoring","tidb-dashboard","drainer","pump",""]},"productBaseImg":{"type":"string","example":"Consectetur iusto ut sed corporis molestiae harum."},"productDockerfile":{"type":"string","example":"Ut praesentium porro sed."},"targetImg":{"type":"string","example":"Velit voluptas dicta officiis sint quia."},"version":{"type":"string","example":"Maxime dolorem."}},"example":{"buildEnv":"Sunt suscipit et.","builderImg":"Vel similique omnis iste.","edition":"community","features":"Possimus molestias asperiores porro.","gitHash":"Ut dolor quia temporibus et.","gitRef":"Qui fugit doloremque est molestias.","githubRepo":"Cum laborum enim voluptatem architecto.","isHotfix":true,"isPushGCR":true,"pipelineEngine":"tekton","pluginGitRef":"Accusamus iusto et omnis quae voluptatem repellat.","product":"pd","productBaseImg":"Commodi qui soluta.","productDockerfile":"Suscipit illo dolor omnis.","targetImg":"Eaque expedita porro molestiae.","version":"Veniam eos numquam autem."},"required":["buildEnv","builderImg","edition","features","gitHash","gitRef","githubRepo","isHotfix","isPushGCR","pipelineEngine","pluginGitRef","product","productBaseImg","productDockerfile","targetImg","version"]},"DevBuildStatus":{"title":"DevBuildStatus","type":"object","properties":{"buildReport":{"$ref":"#/definitions/BuildReport"},"errMsg":{"type":"string","example":"Ut aut."},"pipelineBuildID":{"type":"integer","example":9011947918684280500,"format":"int64"},"pipelineEndAt":{"type":"string","example":"Accusantium natus in consequuntur praesentium mollitia."},"pipelineStartAt":{"type":"string","example":"Consequuntur libero."},"pipelineViewURL":{"type":"string","example":"Ipsam dolorem."},"pipelineViewURLs":{"type":"array","items":{"type":"string","example":"Laboriosam nam earum alias dolores praesentium."},"example":["Dolor adipisci nostrum blanditiis architecto libero est.","Occaecati harum magni est ipsa.","Alias veritatis et ipsa.","Sed veniam eaque."]},"status":{"type":"string","example":"ERROR","enum":["PENDING","PROCESSING","ABORTED","SUCCESS","FAILURE","ERROR"]},"tektonStatus":{"$ref":"#/definitions/TektonStatus"}},"example":{"buildReport":{"binaries":[{"component":"Est consequatur quo voluptatem dolore.","ociFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"platform":"Totam harum.","sha256OciFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"sha256URL":"Non est enim sit provident.","url":"Provident rerum omnis."},{"component":"Est consequatur quo voluptatem dolore.","ociFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"platform":"Totam harum.","sha256OciFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"sha256URL":"Non est enim sit provident.","url":"Provident rerum omnis."},{"component":"Est consequatur quo voluptatem dolore.","ociFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"platform":"Totam harum.","sha256OciFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"sha256URL":"Non est enim sit provident.","url":"Provident rerum omnis."},{"component":"Est consequatur quo voluptatem dolore.","ociFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"platform":"Totam harum.","sha256OciFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"sha256URL":"Non est enim sit provident.","url":"Provident rerum omnis."}],"gitHash":"Voluptatem ut excepturi aut molestias.","images":[{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."}],"pluginGitHash":"Sed quasi aut.","printedVersion":"Molestias aspernatur odio."},"errMsg":"Sit consequatur repudiandae.","pipelineBuildID":8360673862371691663,"pipelineEndAt":"Similique illum perferendis.","pipelineStartAt":"Hic distinctio minima molestiae quis.","pipelineViewURL":"Tempora earum quam est architecto.","pipelineViewURLs":["Delectus qui minima aliquam doloribus aut modi.","Aut eveniet.","Esse aut."],"status":"SUCCESS","tektonStatus":{"pipelines":[{"endAt":"Voluptas quibusdam fugiat et.","gitHash":"Voluptatibus voluptas molestiae ut soluta libero.","images":[{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."}],"name":"Enim illum ratione in dolor exercitationem fugit.","ociArtifacts":[{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."}],"platform":"Aliquam animi amet dolorum aut qui.","startAt":"Voluptatum perferendis.","status":"PENDING","url":"Dolores dignissimos quam."},{"endAt":"Voluptas quibusdam fugiat et.","gitHash":"Voluptatibus voluptas molestiae ut soluta libero.","images":[{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."}],"name":"Enim illum ratione in dolor exercitationem fugit.","ociArtifacts":[{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."}],"platform":"Aliquam animi amet dolorum aut qui.","startAt":"Voluptatum perferendis.","status":"PENDING","url":"Dolores dignissimos quam."}]}},"required":["buildReport","errMsg","pipelineBuildID","pipelineEndAt","pipelineStartAt","pipelineViewURL","pipelineViewURLs","status","tektonStatus"]},"DevbuildCreateRequestBody":{"title":"DevbuildCreateRequestBody","type":"object","properties":{"createdBy":{"type":"string","description":"Creator of build","example":"tracey.price@pollich.info","format":"email"},"request":{"$ref":"#/definitions/DevBuildRequest"}},"example":{"createdBy":"roslyn_russel@goldner.info","request":{"buildEnv":"Sunt nihil quia numquam suscipit corrupti qui.","builderImg":"Sint ut blanditiis.","edition":"enterprise","features":"Aperiam natus in ut quae accusantium.","gitRef":"Numquam possimus possimus ipsum rerum unde.","githubRepo":"Numquam neque reiciendis quaerat.","isHotfix":true,"isPushGCR":true,"pipelineEngine":"tekton","pluginGitRef":"Laboriosam esse dicta.","product":"tidb","productBaseImg":"Tempore ut dolores.","productDockerfile":"Iusto suscipit.","targetImg":"Et aut error doloremque non itaque.","version":"Voluptas quia reprehenderit fugit quo debitis numquam."}},"required":["createdBy","request"]},"DevbuildUpdateRequestBody":{"title":"DevbuildUpdateRequestBody","type":"object","properties":{"DevBuild":{"$ref":"#/definitions/DevBuild"}},"example":{"DevBuild":{"id":8670468037696883245,"meta":{"createdAt":"Nihil soluta aut adipisci est.","createdBy":"Qui necessitatibus possimus ab quos facere.","updatedAt":"Repudiandae voluptatem rem earum aut at nulla."},"spec":{"buildEnv":"Natus totam esse maxime aliquid sunt.","builderImg":"At illo voluptas dolor.","edition":"community","features":"Beatae sunt nesciunt amet autem.","gitHash":"Sit accusamus aspernatur aut laboriosam.","gitRef":"Perspiciatis perspiciatis atque inventore id.","githubRepo":"Ut libero magnam sapiente dolores qui.","isHotfix":false,"isPushGCR":true,"pipelineEngine":"jenkins","pluginGitRef":"Deleniti at consequatur doloribus culpa velit et.","product":"pd","productBaseImg":"Voluptas hic.","productDockerfile":"Ut eum iusto id officiis.","targetImg":"Laboriosam ut perspiciatis porro.","version":"Distinctio aliquid eum."},"status":{"buildReport":{"binaries":[{"component":"Neque velit maiores culpa rerum accusamus.","ociFile":{"file":"Consectetur et officia necessitatibus et necessitatibus sint.","repo":"Enim minima et vel qui nulla qui.","tag":"Maiores aut rerum."},"platform":"Similique nesciunt dolorum quisquam qui odio.","sha256OciFile":{"file":"Consectetur et officia necessitatibus et necessitatibus sint.","repo":"Enim minima et vel qui nulla qui.","tag":"Maiores aut rerum."},"sha256URL":"Praesentium facilis corrupti ullam impedit incidunt.","url":"Aut quas pariatur qui."},{"component":"Neque velit maiores culpa rerum accusamus.","ociFile":{"file":"Consectetur et officia necessitatibus et necessitatibus sint.","repo":"Enim minima et vel qui nulla qui.","tag":"Maiores aut rerum."},"platform":"Similique nesciunt dolorum quisquam qui odio.","sha256OciFile":{"file":"Consectetur et officia necessitatibus et necessitatibus sint.","repo":"Enim minima et vel qui nulla qui.","tag":"Maiores aut rerum."},"sha256URL":"Praesentium facilis corrupti ullam impedit incidunt.","url":"Aut quas pariatur qui."}],"gitHash":"Harum repellat qui eos est velit.","images":[{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."}],"pluginGitHash":"Assumenda itaque necessitatibus eligendi qui qui illum.","printedVersion":"Aliquam quia eum quia id qui."},"errMsg":"Fugiat sint aut minus aperiam quod.","pipelineBuildID":6941289464511149,"pipelineEndAt":"Deleniti natus reprehenderit nihil animi hic fugiat.","pipelineStartAt":"Accusamus velit ipsam.","pipelineViewURL":"Enim harum dolorum.","pipelineViewURLs":["Illo blanditiis totam in.","Dignissimos tempore aut."],"status":"PENDING","tektonStatus":{"pipelines":[{"endAt":"Excepturi ipsa veniam aspernatur quae.","gitHash":"Voluptatem enim aliquam.","images":[{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."}],"name":"Dolores id quibusdam impedit corrupti veritatis.","ociArtifacts":[{"files":["Temporibus totam quae debitis odio hic.","Atque eos consequatur laudantium.","Vitae iste.","Odit blanditiis magni eaque quas eos voluptatem."],"repo":"Quam necessitatibus optio ipsam autem vel veniam.","tag":"Provident qui."},{"files":["Temporibus totam quae debitis odio hic.","Atque eos consequatur laudantium.","Vitae iste.","Odit blanditiis magni eaque quas eos voluptatem."],"repo":"Quam necessitatibus optio ipsam autem vel veniam.","tag":"Provident qui."},{"files":["Temporibus totam quae debitis odio hic.","Atque eos consequatur laudantium.","Vitae iste.","Odit blanditiis magni eaque quas eos voluptatem."],"repo":"Quam necessitatibus optio ipsam autem vel veniam.","tag":"Provident qui."}],"platform":"Quis quia vitae non ratione.","startAt":"Minus sapiente doloremque rerum quasi.","status":"PROCESSING","url":"Saepe rerum tenetur vero eveniet."},{"endAt":"Excepturi ipsa veniam aspernatur quae.","gitHash":"Voluptatem enim aliquam.","images":[{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."}],"name":"Dolores id quibusdam impedit corrupti veritatis.","ociArtifacts":[{"files":["Temporibus totam quae debitis odio hic.","Atque eos consequatur laudantium.","Vitae iste.","Odit blanditiis magni eaque quas eos voluptatem."],"repo":"Quam necessitatibus optio ipsam autem vel veniam.","tag":"Provident qui."},{"files":["Temporibus totam quae debitis odio hic.","Atque eos consequatur laudantium.","Vitae iste.","Odit blanditiis magni eaque quas eos voluptatem."],"repo":"Quam necessitatibus optio ipsam autem vel veniam.","tag":"Provident qui."},{"files":["Temporibus totam quae debitis odio hic.","Atque eos consequatur laudantium.","Vitae iste.","Odit blanditiis magni eaque quas eos voluptatem."],"repo":"Quam necessitatibus optio ipsam autem vel veniam.","tag":"Provident qui."}],"platform":"Quis quia vitae non ratione.","startAt":"Minus sapiente doloremque rerum quasi.","status":"PROCESSING","url":"Saepe rerum tenetur vero eveniet."},{"endAt":"Excepturi ipsa veniam aspernatur quae.","gitHash":"Voluptatem enim aliquam.","images":[{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."}],"name":"Dolores id quibusdam impedit corrupti veritatis.","ociArtifacts":[{"files":["Temporibus totam quae debitis odio hic.","Atque eos consequatur laudantium.","Vitae iste.","Odit blanditiis magni eaque quas eos voluptatem."],"repo":"Quam necessitatibus optio ipsam autem vel veniam.","tag":"Provident qui."},{"files":["Temporibus totam quae debitis odio hic.","Atque eos consequatur laudantium.","Vitae iste.","Odit blanditiis magni eaque quas eos voluptatem."],"repo":"Quam necessitatibus optio ipsam autem vel veniam.","tag":"Provident qui."},{"files":["Temporibus totam quae debitis odio hic.","Atque eos consequatur laudantium.","Vitae iste.","Odit blanditiis magni eaque quas eos voluptatem."],"repo":"Quam necessitatibus optio ipsam autem vel veniam.","tag":"Provident qui."}],"platform":"Quis quia vitae non ratione.","startAt":"Minus sapiente doloremque rerum quasi.","status":"PROCESSING","url":"Saepe rerum tenetur vero eveniet."}]}}}},"required":["DevBuild"]},"HTTPError":{"title":"HTTPError","type":"object","properties":{"code":{"type":"integer","example":4129941871504582537,"format":"int64"},"message":{"type":"string","example":"Quo ex ullam non dolores voluptatem."}},"description":"Bad Request","example":{"code":5845015417736338981,"message":"Nesciunt placeat mollitia est."},"required":["code","message"]},"ImageArtifact":{"title":"ImageArtifact","type":"object","properties":{"platform":{"type":"string","example":"Quis eos quia ad."},"url":{"type":"string","example":"Veritatis optio omnis fugit."}},"example":{"platform":"Impedit quia fugiat quasi.","url":"Repellendus consequuntur illum id reiciendis."},"required":["platform","url"]},"ImageSyncRequest":{"title":"ImageSyncRequest","type":"object","properties":{"source":{"type":"string","example":"Nesciunt in et ut quod."},"target":{"type":"string","example":"Ut sit reiciendis esse architecto."}},"example":{"source":"Sit beatae saepe soluta.","target":"Omnis ullam blanditiis libero repellat."},"required":["source","target"]},"OciArtifact":{"title":"OciArtifact","type":"object","properties":{"files":{"type":"array","items":{"type":"string","example":"Quasi sit a ex amet est."},"example":["Voluptas reprehenderit eaque exercitationem et dolorem.","Velit voluptatem exercitationem et."]},"repo":{"type":"string","example":"Cumque magnam error officiis impedit quaerat consectetur."},"tag":{"type":"string","example":"Ea quaerat alias."}},"example":{"files":["Quod quidem perspiciatis qui.","Laudantium dolores saepe nihil.","Id iste quasi quasi.","Laboriosam qui tempore dolorum est nisi voluptatem."],"repo":"Harum quae.","tag":"Eum qui tempora quos quae velit sint."},"required":["files","repo","tag"]},"OciFile":{"title":"OciFile","type":"object","properties":{"file":{"type":"string","example":"Omnis sit consequuntur qui saepe."},"repo":{"type":"string","example":"Voluptatem perspiciatis quia occaecati."},"tag":{"type":"string","example":"Modi animi ut ab facere."}},"example":{"file":"Sint adipisci voluptatum aut id sunt.","repo":"Libero labore.","tag":"Sit rerum qui qui soluta error."},"required":["file","repo","tag"]},"TektonPipeline":{"title":"TektonPipeline","type":"object","properties":{"endAt":{"type":"string","example":"Aut adipisci sed."},"gitHash":{"type":"string","example":"Eum sit."},"images":{"type":"array","items":{"$ref":"#/definitions/ImageArtifact"},"example":[{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."}]},"name":{"type":"string","example":"Et sint ut magni suscipit eum vel."},"ociArtifacts":{"type":"array","items":{"$ref":"#/definitions/OciArtifact"},"example":[{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."}]},"platform":{"type":"string","example":"Commodi eius et ad ut."},"startAt":{"type":"string","example":"Dolor deserunt atque exercitationem non placeat."},"status":{"type":"string","example":"ABORTED","enum":["PENDING","PROCESSING","ABORTED","SUCCESS","FAILURE","ERROR"]},"url":{"type":"string","example":"Libero esse ab quos esse delectus ea."}},"example":{"endAt":"Porro voluptatem.","gitHash":"Hic quae.","images":[{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."}],"name":"Ratione quos eaque rerum expedita.","ociArtifacts":[{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."}],"platform":"Dolore ipsam non.","startAt":"Eos suscipit exercitationem assumenda beatae in.","status":"SUCCESS","url":"Fugit non eligendi."},"required":["endAt","gitHash","images","name","ociArtifacts","platform","startAt","status","url"]},"TektonStatus":{"title":"TektonStatus","type":"object","properties":{"pipelines":{"type":"array","items":{"$ref":"#/definitions/TektonPipeline"},"example":[{"endAt":"Voluptas quibusdam fugiat et.","gitHash":"Voluptatibus voluptas molestiae ut soluta libero.","images":[{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."}],"name":"Enim illum ratione in dolor exercitationem fugit.","ociArtifacts":[{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."}],"platform":"Aliquam animi amet dolorum aut qui.","startAt":"Voluptatum perferendis.","status":"PENDING","url":"Dolores dignissimos quam."},{"endAt":"Voluptas quibusdam fugiat et.","gitHash":"Voluptatibus voluptas molestiae ut soluta libero.","images":[{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."}],"name":"Enim illum ratione in dolor exercitationem fugit.","ociArtifacts":[{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."}],"platform":"Aliquam animi amet dolorum aut qui.","startAt":"Voluptatum perferendis.","status":"PENDING","url":"Dolores dignissimos quam."},{"endAt":"Voluptas quibusdam fugiat et.","gitHash":"Voluptatibus voluptas molestiae ut soluta libero.","images":[{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."}],"name":"Enim illum ratione in dolor exercitationem fugit.","ociArtifacts":[{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."}],"platform":"Aliquam animi amet dolorum aut qui.","startAt":"Voluptatum perferendis.","status":"PENDING","url":"Dolores dignissimos quam."},{"endAt":"Voluptas quibusdam fugiat et.","gitHash":"Voluptatibus voluptas molestiae ut soluta libero.","images":[{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."}],"name":"Enim illum ratione in dolor exercitationem fugit.","ociArtifacts":[{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."}],"platform":"Aliquam animi amet dolorum aut qui.","startAt":"Voluptatum perferendis.","status":"PENDING","url":"Dolores dignissimos quam."}]}},"example":{"pipelines":[{"endAt":"Voluptas quibusdam fugiat et.","gitHash":"Voluptatibus voluptas molestiae ut soluta libero.","images":[{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."}],"name":"Enim illum ratione in dolor exercitationem fugit.","ociArtifacts":[{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."}],"platform":"Aliquam animi amet dolorum aut qui.","startAt":"Voluptatum perferendis.","status":"PENDING","url":"Dolores dignissimos quam."},{"endAt":"Voluptas quibusdam fugiat et.","gitHash":"Voluptatibus voluptas molestiae ut soluta libero.","images":[{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."}],"name":"Enim illum ratione in dolor exercitationem fugit.","ociArtifacts":[{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."}],"platform":"Aliquam animi amet dolorum aut qui.","startAt":"Voluptatum perferendis.","status":"PENDING","url":"Dolores dignissimos quam."},{"endAt":"Voluptas quibusdam fugiat et.","gitHash":"Voluptatibus voluptas molestiae ut soluta libero.","images":[{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."}],"name":"Enim illum ratione in dolor exercitationem fugit.","ociArtifacts":[{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."}],"platform":"Aliquam animi amet dolorum aut qui.","startAt":"Voluptatum perferendis.","status":"PENDING","url":"Dolores dignissimos quam."}]},"required":["pipelines"]}}} \ No newline at end of file diff --git a/experiments/tibuild-v2/gen/http/openapi.yaml b/experiments/tibuild-v2/gen/http/openapi.yaml deleted file mode 100644 index 7f2640fc..00000000 --- a/experiments/tibuild-v2/gen/http/openapi.yaml +++ /dev/null @@ -1,1749 +0,0 @@ -swagger: "2.0" -info: - title: TiBuild API - description: TiBuild API - contact: - name: Flare Zuo - email: wuhui.zuo@pingcap.com - url: https://github.com/wuhuizuo - version: 2.0.0 -host: localhost:8080 -consumes: - - application/json - - application/xml - - application/gob -produces: - - application/json - - application/xml - - application/gob -paths: - /api/artifact/sync-image: - post: - tags: - - artifact - summary: syncImage artifact - description: Sync hotfix image to dockerhub - operationId: artifact#syncImage - parameters: - - name: SyncImageRequestBody - in: body - required: true - schema: - $ref: '#/definitions/ArtifactSyncImageRequestBody' - required: - - ImageSyncRequest - responses: - "200": - description: OK response. - schema: - $ref: '#/definitions/ImageSyncRequest' - required: - - source - - target - "400": - description: Bad Request response. - schema: - $ref: '#/definitions/HTTPError' - required: - - code - - message - "500": - description: Internal Server Error response. - schema: - $ref: '#/definitions/HTTPError' - required: - - code - - message - schemes: - - http - /api/devbuilds: - get: - tags: - - devbuild - summary: list devbuild - description: List devbuild - operationId: devbuild#list - parameters: - - name: size - in: query - description: The size limit of items - required: false - type: integer - default: 10 - - name: offset - in: query - description: The start position of items - required: false - type: integer - default: 0 - - name: hotfix - in: query - description: Filter hotfix - required: false - type: boolean - - name: createdBy - in: query - description: Filter created by - required: false - type: string - responses: - "200": - description: OK response. - schema: - type: array - items: - $ref: '#/definitions/DevBuild' - "400": - description: Bad Request response. - schema: - $ref: '#/definitions/HTTPError' - required: - - code - - message - schemes: - - http - post: - tags: - - devbuild - summary: create devbuild - description: Create and trigger devbuild - operationId: devbuild#create - parameters: - - name: dryrun - in: query - description: Dry run - required: false - type: boolean - default: false - - name: CreateRequestBody - in: body - required: true - schema: - $ref: '#/definitions/DevbuildCreateRequestBody' - required: - - createdBy - - request - responses: - "200": - description: OK response. - schema: - $ref: '#/definitions/DevBuild' - required: - - id - - meta - - spec - - status - "400": - description: Bad Request response. - schema: - $ref: '#/definitions/HTTPError' - required: - - code - - message - "500": - description: Internal Server Error response. - schema: - $ref: '#/definitions/HTTPError' - required: - - code - - message - schemes: - - http - /api/devbuilds/{id}: - get: - tags: - - devbuild - summary: get devbuild - description: Get devbuild - operationId: devbuild#get - parameters: - - name: sync - in: query - description: Whether sync with jenkins - required: false - type: boolean - default: false - - name: id - in: path - description: ID of build - required: true - type: integer - responses: - "200": - description: OK response. - schema: - $ref: '#/definitions/DevBuild' - required: - - id - - meta - - spec - - status - "400": - description: Bad Request response. - schema: - $ref: '#/definitions/HTTPError' - required: - - code - - message - "500": - description: Internal Server Error response. - schema: - $ref: '#/definitions/HTTPError' - required: - - code - - message - schemes: - - http - put: - tags: - - devbuild - summary: update devbuild - description: Update devbuild status - operationId: devbuild#update - parameters: - - name: dryrun - in: query - description: Dry run - required: false - type: boolean - default: false - - name: id - in: path - description: ID of build - required: true - type: integer - - name: UpdateRequestBody - in: body - required: true - schema: - $ref: '#/definitions/DevbuildUpdateRequestBody' - required: - - DevBuild - responses: - "200": - description: OK response. - schema: - $ref: '#/definitions/DevBuild' - required: - - id - - meta - - spec - - status - "400": - description: Bad Request response. - schema: - $ref: '#/definitions/HTTPError' - required: - - code - - message - "500": - description: Internal Server Error response. - schema: - $ref: '#/definitions/HTTPError' - required: - - code - - message - schemes: - - http - /api/devbuilds/{id}/rerun: - post: - tags: - - devbuild - summary: rerun devbuild - description: Rerun devbuild - operationId: devbuild#rerun - parameters: - - name: dryrun - in: query - description: Dry run - required: false - type: boolean - default: false - - name: id - in: path - description: ID of build - required: true - type: integer - responses: - "200": - description: OK response. - schema: - $ref: '#/definitions/DevBuild' - required: - - id - - meta - - spec - - status - "400": - description: Bad Request response. - schema: - $ref: '#/definitions/HTTPError' - required: - - code - - message - "500": - description: Internal Server Error response. - schema: - $ref: '#/definitions/HTTPError' - required: - - code - - message - schemes: - - http -definitions: - ArtifactSyncImageRequestBody: - title: ArtifactSyncImageRequestBody - type: object - properties: - ImageSyncRequest: - $ref: '#/definitions/ImageSyncRequest' - example: - ImageSyncRequest: - source: Culpa possimus. - target: Perferendis nisi non quia debitis. - required: - - ImageSyncRequest - BinArtifact: - title: BinArtifact - type: object - properties: - component: - type: string - example: Iure expedita aut aspernatur facilis. - ociFile: - $ref: '#/definitions/OciFile' - platform: - type: string - example: Consequatur cum. - sha256OciFile: - $ref: '#/definitions/OciFile' - sha256URL: - type: string - example: Culpa eos voluptas voluptas unde vero officiis. - url: - type: string - example: Non fuga vitae beatae. - example: - component: Ratione ab officiis consequatur nihil minus culpa. - ociFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - platform: Delectus aliquam incidunt iure. - sha256OciFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - sha256URL: Odio sed officia cumque voluptatem. - url: Repellat amet qui labore maxime. - required: - - component - - ociFile - - platform - - sha256OciFile - - sha256URL - - url - BuildReport: - title: BuildReport - type: object - properties: - binaries: - type: array - items: - $ref: '#/definitions/BinArtifact' - example: - - component: Est consequatur quo voluptatem dolore. - ociFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - platform: Totam harum. - sha256OciFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - sha256URL: Non est enim sit provident. - url: Provident rerum omnis. - - component: Est consequatur quo voluptatem dolore. - ociFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - platform: Totam harum. - sha256OciFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - sha256URL: Non est enim sit provident. - url: Provident rerum omnis. - gitHash: - type: string - example: Provident quos et. - images: - type: array - items: - $ref: '#/definitions/ImageArtifact' - example: - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - pluginGitHash: - type: string - example: Consequatur sunt illo. - printedVersion: - type: string - example: Molestias voluptas eveniet aperiam aperiam. - example: - binaries: - - component: Est consequatur quo voluptatem dolore. - ociFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - platform: Totam harum. - sha256OciFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - sha256URL: Non est enim sit provident. - url: Provident rerum omnis. - - component: Est consequatur quo voluptatem dolore. - ociFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - platform: Totam harum. - sha256OciFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - sha256URL: Non est enim sit provident. - url: Provident rerum omnis. - gitHash: Dolorem magni. - images: - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - pluginGitHash: Delectus in corporis reiciendis consectetur. - printedVersion: Sit quia rerum quos. - required: - - binaries - - gitHash - - images - - pluginGitHash - - printedVersion - DevBuild: - title: DevBuild - type: object - properties: - id: - type: integer - example: 1509731284302840021 - format: int64 - meta: - $ref: '#/definitions/DevBuildMeta' - spec: - $ref: '#/definitions/DevBuildSpec' - status: - $ref: '#/definitions/DevBuildStatus' - example: - id: 2854111930968557351 - meta: - createdAt: Voluptatum voluptatum qui. - createdBy: Eum sit doloremque et rem vel sunt. - updatedAt: Quae ex ipsam eveniet error. - spec: - buildEnv: Dolorem suscipit ut. - builderImg: Minus itaque qui necessitatibus et voluptatum sint. - edition: community - features: Dolorem cupiditate. - gitHash: Ut officiis eum animi eligendi inventore totam. - gitRef: Eum sed consectetur ea. - githubRepo: Expedita officia molestiae eos. - isHotfix: true - isPushGCR: false - pipelineEngine: jenkins - pluginGitRef: Est et. - product: enterprise-plugin - productBaseImg: Est aspernatur et vel dignissimos non corrupti. - productDockerfile: Totam quod numquam ea cum. - targetImg: Velit tempora necessitatibus asperiores. - version: Sunt deserunt ut quod ut. - status: - buildReport: - binaries: - - component: Est consequatur quo voluptatem dolore. - ociFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - platform: Totam harum. - sha256OciFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - sha256URL: Non est enim sit provident. - url: Provident rerum omnis. - - component: Est consequatur quo voluptatem dolore. - ociFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - platform: Totam harum. - sha256OciFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - sha256URL: Non est enim sit provident. - url: Provident rerum omnis. - - component: Est consequatur quo voluptatem dolore. - ociFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - platform: Totam harum. - sha256OciFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - sha256URL: Non est enim sit provident. - url: Provident rerum omnis. - - component: Est consequatur quo voluptatem dolore. - ociFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - platform: Totam harum. - sha256OciFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - sha256URL: Non est enim sit provident. - url: Provident rerum omnis. - gitHash: Voluptatem ut excepturi aut molestias. - images: - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - pluginGitHash: Sed quasi aut. - printedVersion: Molestias aspernatur odio. - errMsg: Asperiores dolorum. - pipelineBuildID: 2976244863257590590 - pipelineEndAt: Et qui consequatur et. - pipelineStartAt: Dignissimos et nisi enim temporibus laboriosam quasi. - pipelineViewURL: Repellat magnam est ea et explicabo sunt. - pipelineViewURLs: - - Explicabo quos assumenda. - - Mollitia tempore. - status: PENDING - tektonStatus: - pipelines: - - endAt: Voluptas quibusdam fugiat et. - gitHash: Voluptatibus voluptas molestiae ut soluta libero. - images: - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - name: Enim illum ratione in dolor exercitationem fugit. - ociArtifacts: - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - platform: Aliquam animi amet dolorum aut qui. - startAt: Voluptatum perferendis. - status: PENDING - url: Dolores dignissimos quam. - - endAt: Voluptas quibusdam fugiat et. - gitHash: Voluptatibus voluptas molestiae ut soluta libero. - images: - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - name: Enim illum ratione in dolor exercitationem fugit. - ociArtifacts: - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - platform: Aliquam animi amet dolorum aut qui. - startAt: Voluptatum perferendis. - status: PENDING - url: Dolores dignissimos quam. - required: - - id - - meta - - spec - - status - DevBuildMeta: - title: DevBuildMeta - type: object - properties: - createdAt: - type: string - example: Laboriosam vero optio consectetur tempore accusantium odio. - createdBy: - type: string - example: Maxime molestias. - updatedAt: - type: string - example: Sed sequi. - example: - createdAt: Nihil sapiente consequuntur. - createdBy: Quam alias minima. - updatedAt: Rem quam earum libero sunt et. - required: - - createdAt - - createdBy - - updatedAt - DevBuildRequest: - title: DevBuildRequest - type: object - properties: - buildEnv: - type: string - example: Sunt accusantium nostrum quaerat necessitatibus distinctio nobis. - builderImg: - type: string - example: Sunt vero sunt. - edition: - type: string - example: enterprise - enum: - - enterprise - - community - features: - type: string - example: Sint ut ut magnam quia molestias facilis. - gitRef: - type: string - example: Voluptate dignissimos ducimus sint delectus accusantium molestiae. - githubRepo: - type: string - example: Non facilis a iste qui esse. - isHotfix: - type: boolean - example: false - isPushGCR: - type: boolean - example: false - pipelineEngine: - type: string - example: tekton - enum: - - jenkins - - tekton - pluginGitRef: - type: string - example: Suscipit fugiat laboriosam autem. - product: - type: string - example: "" - enum: - - tidb - - enterprise-plugin - - tikv - - pd - - tiflash - - br - - dumpling - - tidb-lightning - - ticdc - - ticdc-newarch - - dm - - tidb-binlog - - tidb-tools - - ng-monitoring - - tidb-dashboard - - drainer - - pump - - "" - productBaseImg: - type: string - example: Laudantium itaque dolor recusandae. - productDockerfile: - type: string - example: Deleniti eum. - targetImg: - type: string - example: Eligendi dolorem autem ullam. - version: - type: string - example: Quaerat repellendus similique expedita quia. - example: - buildEnv: Nobis accusamus a a. - builderImg: Quam neque modi aut beatae quasi. - edition: community - features: Aliquam et velit voluptatum rerum et qui. - gitRef: Sed culpa quaerat earum laborum est. - githubRepo: Deleniti sint nesciunt ducimus non voluptas labore. - isHotfix: false - isPushGCR: true - pipelineEngine: jenkins - pluginGitRef: Voluptatem esse facere ut in. - product: enterprise-plugin - productBaseImg: Quas minus et autem molestiae. - productDockerfile: Vel delectus. - targetImg: Et et aut. - version: Fugiat commodi. - required: - - edition - - gitRef - - product - - version - DevBuildSpec: - title: DevBuildSpec - type: object - properties: - buildEnv: - type: string - example: Saepe dolores ullam. - builderImg: - type: string - example: Ut autem quas rerum in. - edition: - type: string - example: community - enum: - - enterprise - - community - features: - type: string - example: Qui cumque. - gitHash: - type: string - example: Veritatis voluptas unde maiores perspiciatis aperiam atque. - gitRef: - type: string - example: Qui praesentium accusantium neque rerum. - githubRepo: - type: string - example: Temporibus autem explicabo libero. - isHotfix: - type: boolean - example: true - isPushGCR: - type: boolean - example: false - pipelineEngine: - type: string - example: jenkins - enum: - - jenkins - - tekton - pluginGitRef: - type: string - example: Explicabo corrupti. - product: - type: string - example: dm - enum: - - tidb - - enterprise-plugin - - tikv - - pd - - tiflash - - br - - dumpling - - tidb-lightning - - ticdc - - ticdc-newarch - - dm - - tidb-binlog - - tidb-tools - - ng-monitoring - - tidb-dashboard - - drainer - - pump - - "" - productBaseImg: - type: string - example: Consectetur iusto ut sed corporis molestiae harum. - productDockerfile: - type: string - example: Ut praesentium porro sed. - targetImg: - type: string - example: Velit voluptas dicta officiis sint quia. - version: - type: string - example: Maxime dolorem. - example: - buildEnv: Sunt suscipit et. - builderImg: Vel similique omnis iste. - edition: community - features: Possimus molestias asperiores porro. - gitHash: Ut dolor quia temporibus et. - gitRef: Qui fugit doloremque est molestias. - githubRepo: Cum laborum enim voluptatem architecto. - isHotfix: true - isPushGCR: true - pipelineEngine: tekton - pluginGitRef: Accusamus iusto et omnis quae voluptatem repellat. - product: pd - productBaseImg: Commodi qui soluta. - productDockerfile: Suscipit illo dolor omnis. - targetImg: Eaque expedita porro molestiae. - version: Veniam eos numquam autem. - required: - - buildEnv - - builderImg - - edition - - features - - gitHash - - gitRef - - githubRepo - - isHotfix - - isPushGCR - - pipelineEngine - - pluginGitRef - - product - - productBaseImg - - productDockerfile - - targetImg - - version - DevBuildStatus: - title: DevBuildStatus - type: object - properties: - buildReport: - $ref: '#/definitions/BuildReport' - errMsg: - type: string - example: Ut aut. - pipelineBuildID: - type: integer - example: 9011947918684280500 - format: int64 - pipelineEndAt: - type: string - example: Accusantium natus in consequuntur praesentium mollitia. - pipelineStartAt: - type: string - example: Consequuntur libero. - pipelineViewURL: - type: string - example: Ipsam dolorem. - pipelineViewURLs: - type: array - items: - type: string - example: Laboriosam nam earum alias dolores praesentium. - example: - - Dolor adipisci nostrum blanditiis architecto libero est. - - Occaecati harum magni est ipsa. - - Alias veritatis et ipsa. - - Sed veniam eaque. - status: - type: string - example: ERROR - enum: - - PENDING - - PROCESSING - - ABORTED - - SUCCESS - - FAILURE - - ERROR - tektonStatus: - $ref: '#/definitions/TektonStatus' - example: - buildReport: - binaries: - - component: Est consequatur quo voluptatem dolore. - ociFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - platform: Totam harum. - sha256OciFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - sha256URL: Non est enim sit provident. - url: Provident rerum omnis. - - component: Est consequatur quo voluptatem dolore. - ociFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - platform: Totam harum. - sha256OciFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - sha256URL: Non est enim sit provident. - url: Provident rerum omnis. - - component: Est consequatur quo voluptatem dolore. - ociFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - platform: Totam harum. - sha256OciFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - sha256URL: Non est enim sit provident. - url: Provident rerum omnis. - - component: Est consequatur quo voluptatem dolore. - ociFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - platform: Totam harum. - sha256OciFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - sha256URL: Non est enim sit provident. - url: Provident rerum omnis. - gitHash: Voluptatem ut excepturi aut molestias. - images: - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - pluginGitHash: Sed quasi aut. - printedVersion: Molestias aspernatur odio. - errMsg: Sit consequatur repudiandae. - pipelineBuildID: 8360673862371691663 - pipelineEndAt: Similique illum perferendis. - pipelineStartAt: Hic distinctio minima molestiae quis. - pipelineViewURL: Tempora earum quam est architecto. - pipelineViewURLs: - - Delectus qui minima aliquam doloribus aut modi. - - Aut eveniet. - - Esse aut. - status: SUCCESS - tektonStatus: - pipelines: - - endAt: Voluptas quibusdam fugiat et. - gitHash: Voluptatibus voluptas molestiae ut soluta libero. - images: - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - name: Enim illum ratione in dolor exercitationem fugit. - ociArtifacts: - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - platform: Aliquam animi amet dolorum aut qui. - startAt: Voluptatum perferendis. - status: PENDING - url: Dolores dignissimos quam. - - endAt: Voluptas quibusdam fugiat et. - gitHash: Voluptatibus voluptas molestiae ut soluta libero. - images: - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - name: Enim illum ratione in dolor exercitationem fugit. - ociArtifacts: - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - platform: Aliquam animi amet dolorum aut qui. - startAt: Voluptatum perferendis. - status: PENDING - url: Dolores dignissimos quam. - required: - - buildReport - - errMsg - - pipelineBuildID - - pipelineEndAt - - pipelineStartAt - - pipelineViewURL - - pipelineViewURLs - - status - - tektonStatus - DevbuildCreateRequestBody: - title: DevbuildCreateRequestBody - type: object - properties: - createdBy: - type: string - description: Creator of build - example: tracey.price@pollich.info - format: email - request: - $ref: '#/definitions/DevBuildRequest' - example: - createdBy: roslyn_russel@goldner.info - request: - buildEnv: Sunt nihil quia numquam suscipit corrupti qui. - builderImg: Sint ut blanditiis. - edition: enterprise - features: Aperiam natus in ut quae accusantium. - gitRef: Numquam possimus possimus ipsum rerum unde. - githubRepo: Numquam neque reiciendis quaerat. - isHotfix: true - isPushGCR: true - pipelineEngine: tekton - pluginGitRef: Laboriosam esse dicta. - product: tidb - productBaseImg: Tempore ut dolores. - productDockerfile: Iusto suscipit. - targetImg: Et aut error doloremque non itaque. - version: Voluptas quia reprehenderit fugit quo debitis numquam. - required: - - createdBy - - request - DevbuildUpdateRequestBody: - title: DevbuildUpdateRequestBody - type: object - properties: - DevBuild: - $ref: '#/definitions/DevBuild' - example: - DevBuild: - id: 8670468037696883245 - meta: - createdAt: Nihil soluta aut adipisci est. - createdBy: Qui necessitatibus possimus ab quos facere. - updatedAt: Repudiandae voluptatem rem earum aut at nulla. - spec: - buildEnv: Natus totam esse maxime aliquid sunt. - builderImg: At illo voluptas dolor. - edition: community - features: Beatae sunt nesciunt amet autem. - gitHash: Sit accusamus aspernatur aut laboriosam. - gitRef: Perspiciatis perspiciatis atque inventore id. - githubRepo: Ut libero magnam sapiente dolores qui. - isHotfix: false - isPushGCR: true - pipelineEngine: jenkins - pluginGitRef: Deleniti at consequatur doloribus culpa velit et. - product: pd - productBaseImg: Voluptas hic. - productDockerfile: Ut eum iusto id officiis. - targetImg: Laboriosam ut perspiciatis porro. - version: Distinctio aliquid eum. - status: - buildReport: - binaries: - - component: Neque velit maiores culpa rerum accusamus. - ociFile: - file: Consectetur et officia necessitatibus et necessitatibus sint. - repo: Enim minima et vel qui nulla qui. - tag: Maiores aut rerum. - platform: Similique nesciunt dolorum quisquam qui odio. - sha256OciFile: - file: Consectetur et officia necessitatibus et necessitatibus sint. - repo: Enim minima et vel qui nulla qui. - tag: Maiores aut rerum. - sha256URL: Praesentium facilis corrupti ullam impedit incidunt. - url: Aut quas pariatur qui. - - component: Neque velit maiores culpa rerum accusamus. - ociFile: - file: Consectetur et officia necessitatibus et necessitatibus sint. - repo: Enim minima et vel qui nulla qui. - tag: Maiores aut rerum. - platform: Similique nesciunt dolorum quisquam qui odio. - sha256OciFile: - file: Consectetur et officia necessitatibus et necessitatibus sint. - repo: Enim minima et vel qui nulla qui. - tag: Maiores aut rerum. - sha256URL: Praesentium facilis corrupti ullam impedit incidunt. - url: Aut quas pariatur qui. - gitHash: Harum repellat qui eos est velit. - images: - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - pluginGitHash: Assumenda itaque necessitatibus eligendi qui qui illum. - printedVersion: Aliquam quia eum quia id qui. - errMsg: Fugiat sint aut minus aperiam quod. - pipelineBuildID: 6941289464511149 - pipelineEndAt: Deleniti natus reprehenderit nihil animi hic fugiat. - pipelineStartAt: Accusamus velit ipsam. - pipelineViewURL: Enim harum dolorum. - pipelineViewURLs: - - Illo blanditiis totam in. - - Dignissimos tempore aut. - status: PENDING - tektonStatus: - pipelines: - - endAt: Excepturi ipsa veniam aspernatur quae. - gitHash: Voluptatem enim aliquam. - images: - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - name: Dolores id quibusdam impedit corrupti veritatis. - ociArtifacts: - - files: - - Temporibus totam quae debitis odio hic. - - Atque eos consequatur laudantium. - - Vitae iste. - - Odit blanditiis magni eaque quas eos voluptatem. - repo: Quam necessitatibus optio ipsam autem vel veniam. - tag: Provident qui. - - files: - - Temporibus totam quae debitis odio hic. - - Atque eos consequatur laudantium. - - Vitae iste. - - Odit blanditiis magni eaque quas eos voluptatem. - repo: Quam necessitatibus optio ipsam autem vel veniam. - tag: Provident qui. - - files: - - Temporibus totam quae debitis odio hic. - - Atque eos consequatur laudantium. - - Vitae iste. - - Odit blanditiis magni eaque quas eos voluptatem. - repo: Quam necessitatibus optio ipsam autem vel veniam. - tag: Provident qui. - platform: Quis quia vitae non ratione. - startAt: Minus sapiente doloremque rerum quasi. - status: PROCESSING - url: Saepe rerum tenetur vero eveniet. - - endAt: Excepturi ipsa veniam aspernatur quae. - gitHash: Voluptatem enim aliquam. - images: - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - name: Dolores id quibusdam impedit corrupti veritatis. - ociArtifacts: - - files: - - Temporibus totam quae debitis odio hic. - - Atque eos consequatur laudantium. - - Vitae iste. - - Odit blanditiis magni eaque quas eos voluptatem. - repo: Quam necessitatibus optio ipsam autem vel veniam. - tag: Provident qui. - - files: - - Temporibus totam quae debitis odio hic. - - Atque eos consequatur laudantium. - - Vitae iste. - - Odit blanditiis magni eaque quas eos voluptatem. - repo: Quam necessitatibus optio ipsam autem vel veniam. - tag: Provident qui. - - files: - - Temporibus totam quae debitis odio hic. - - Atque eos consequatur laudantium. - - Vitae iste. - - Odit blanditiis magni eaque quas eos voluptatem. - repo: Quam necessitatibus optio ipsam autem vel veniam. - tag: Provident qui. - platform: Quis quia vitae non ratione. - startAt: Minus sapiente doloremque rerum quasi. - status: PROCESSING - url: Saepe rerum tenetur vero eveniet. - - endAt: Excepturi ipsa veniam aspernatur quae. - gitHash: Voluptatem enim aliquam. - images: - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - name: Dolores id quibusdam impedit corrupti veritatis. - ociArtifacts: - - files: - - Temporibus totam quae debitis odio hic. - - Atque eos consequatur laudantium. - - Vitae iste. - - Odit blanditiis magni eaque quas eos voluptatem. - repo: Quam necessitatibus optio ipsam autem vel veniam. - tag: Provident qui. - - files: - - Temporibus totam quae debitis odio hic. - - Atque eos consequatur laudantium. - - Vitae iste. - - Odit blanditiis magni eaque quas eos voluptatem. - repo: Quam necessitatibus optio ipsam autem vel veniam. - tag: Provident qui. - - files: - - Temporibus totam quae debitis odio hic. - - Atque eos consequatur laudantium. - - Vitae iste. - - Odit blanditiis magni eaque quas eos voluptatem. - repo: Quam necessitatibus optio ipsam autem vel veniam. - tag: Provident qui. - platform: Quis quia vitae non ratione. - startAt: Minus sapiente doloremque rerum quasi. - status: PROCESSING - url: Saepe rerum tenetur vero eveniet. - required: - - DevBuild - HTTPError: - title: HTTPError - type: object - properties: - code: - type: integer - example: 4129941871504582537 - format: int64 - message: - type: string - example: Quo ex ullam non dolores voluptatem. - description: Bad Request - example: - code: 5845015417736338981 - message: Nesciunt placeat mollitia est. - required: - - code - - message - ImageArtifact: - title: ImageArtifact - type: object - properties: - platform: - type: string - example: Quis eos quia ad. - url: - type: string - example: Veritatis optio omnis fugit. - example: - platform: Impedit quia fugiat quasi. - url: Repellendus consequuntur illum id reiciendis. - required: - - platform - - url - ImageSyncRequest: - title: ImageSyncRequest - type: object - properties: - source: - type: string - example: Nesciunt in et ut quod. - target: - type: string - example: Ut sit reiciendis esse architecto. - example: - source: Sit beatae saepe soluta. - target: Omnis ullam blanditiis libero repellat. - required: - - source - - target - OciArtifact: - title: OciArtifact - type: object - properties: - files: - type: array - items: - type: string - example: Quasi sit a ex amet est. - example: - - Voluptas reprehenderit eaque exercitationem et dolorem. - - Velit voluptatem exercitationem et. - repo: - type: string - example: Cumque magnam error officiis impedit quaerat consectetur. - tag: - type: string - example: Ea quaerat alias. - example: - files: - - Quod quidem perspiciatis qui. - - Laudantium dolores saepe nihil. - - Id iste quasi quasi. - - Laboriosam qui tempore dolorum est nisi voluptatem. - repo: Harum quae. - tag: Eum qui tempora quos quae velit sint. - required: - - files - - repo - - tag - OciFile: - title: OciFile - type: object - properties: - file: - type: string - example: Omnis sit consequuntur qui saepe. - repo: - type: string - example: Voluptatem perspiciatis quia occaecati. - tag: - type: string - example: Modi animi ut ab facere. - example: - file: Sint adipisci voluptatum aut id sunt. - repo: Libero labore. - tag: Sit rerum qui qui soluta error. - required: - - file - - repo - - tag - TektonPipeline: - title: TektonPipeline - type: object - properties: - endAt: - type: string - example: Aut adipisci sed. - gitHash: - type: string - example: Eum sit. - images: - type: array - items: - $ref: '#/definitions/ImageArtifact' - example: - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - name: - type: string - example: Et sint ut magni suscipit eum vel. - ociArtifacts: - type: array - items: - $ref: '#/definitions/OciArtifact' - example: - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - platform: - type: string - example: Commodi eius et ad ut. - startAt: - type: string - example: Dolor deserunt atque exercitationem non placeat. - status: - type: string - example: ABORTED - enum: - - PENDING - - PROCESSING - - ABORTED - - SUCCESS - - FAILURE - - ERROR - url: - type: string - example: Libero esse ab quos esse delectus ea. - example: - endAt: Porro voluptatem. - gitHash: Hic quae. - images: - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - name: Ratione quos eaque rerum expedita. - ociArtifacts: - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - platform: Dolore ipsam non. - startAt: Eos suscipit exercitationem assumenda beatae in. - status: SUCCESS - url: Fugit non eligendi. - required: - - endAt - - gitHash - - images - - name - - ociArtifacts - - platform - - startAt - - status - - url - TektonStatus: - title: TektonStatus - type: object - properties: - pipelines: - type: array - items: - $ref: '#/definitions/TektonPipeline' - example: - - endAt: Voluptas quibusdam fugiat et. - gitHash: Voluptatibus voluptas molestiae ut soluta libero. - images: - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - name: Enim illum ratione in dolor exercitationem fugit. - ociArtifacts: - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - platform: Aliquam animi amet dolorum aut qui. - startAt: Voluptatum perferendis. - status: PENDING - url: Dolores dignissimos quam. - - endAt: Voluptas quibusdam fugiat et. - gitHash: Voluptatibus voluptas molestiae ut soluta libero. - images: - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - name: Enim illum ratione in dolor exercitationem fugit. - ociArtifacts: - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - platform: Aliquam animi amet dolorum aut qui. - startAt: Voluptatum perferendis. - status: PENDING - url: Dolores dignissimos quam. - - endAt: Voluptas quibusdam fugiat et. - gitHash: Voluptatibus voluptas molestiae ut soluta libero. - images: - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - name: Enim illum ratione in dolor exercitationem fugit. - ociArtifacts: - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - platform: Aliquam animi amet dolorum aut qui. - startAt: Voluptatum perferendis. - status: PENDING - url: Dolores dignissimos quam. - - endAt: Voluptas quibusdam fugiat et. - gitHash: Voluptatibus voluptas molestiae ut soluta libero. - images: - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - name: Enim illum ratione in dolor exercitationem fugit. - ociArtifacts: - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - platform: Aliquam animi amet dolorum aut qui. - startAt: Voluptatum perferendis. - status: PENDING - url: Dolores dignissimos quam. - example: - pipelines: - - endAt: Voluptas quibusdam fugiat et. - gitHash: Voluptatibus voluptas molestiae ut soluta libero. - images: - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - name: Enim illum ratione in dolor exercitationem fugit. - ociArtifacts: - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - platform: Aliquam animi amet dolorum aut qui. - startAt: Voluptatum perferendis. - status: PENDING - url: Dolores dignissimos quam. - - endAt: Voluptas quibusdam fugiat et. - gitHash: Voluptatibus voluptas molestiae ut soluta libero. - images: - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - name: Enim illum ratione in dolor exercitationem fugit. - ociArtifacts: - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - platform: Aliquam animi amet dolorum aut qui. - startAt: Voluptatum perferendis. - status: PENDING - url: Dolores dignissimos quam. - - endAt: Voluptas quibusdam fugiat et. - gitHash: Voluptatibus voluptas molestiae ut soluta libero. - images: - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - name: Enim illum ratione in dolor exercitationem fugit. - ociArtifacts: - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - platform: Aliquam animi amet dolorum aut qui. - startAt: Voluptatum perferendis. - status: PENDING - url: Dolores dignissimos quam. - required: - - pipelines diff --git a/experiments/tibuild-v2/gen/http/openapi3.json b/experiments/tibuild-v2/gen/http/openapi3.json deleted file mode 100644 index 452318c4..00000000 --- a/experiments/tibuild-v2/gen/http/openapi3.json +++ /dev/null @@ -1 +0,0 @@ -{"openapi":"3.0.3","info":{"title":"TiBuild API","description":"TiBuild API","contact":{"name":"Flare Zuo","url":"https://github.com/wuhuizuo","email":"wuhui.zuo@pingcap.com"},"version":"2.0.0"},"servers":[{"url":"http://localhost:8080"},{"url":"http://0.0.0.0:8080"}],"paths":{"/api/artifact/sync-image":{"post":{"tags":["artifact"],"summary":"syncImage artifact","description":"Sync hotfix image to dockerhub","operationId":"artifact#syncImage","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncImageRequestBody"},"example":{"ImageSyncRequest":{"source":"Culpa possimus.","target":"Perferendis nisi non quia debitis."}}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageSyncRequest"},"example":{"source":"Assumenda suscipit sint aut aut.","target":"Et veniam sint repellendus qui doloribus."}}}},"400":{"description":"BadRequest: Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPError"},"example":{"code":8187935244640291960,"message":"Ut est."}}}},"500":{"description":"InternalServerError: Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPError"},"example":{"code":1632181691891530920,"message":"Velit cum aperiam architecto voluptas."}}}}}}},"/api/devbuilds":{"get":{"tags":["devbuild"],"summary":"list devbuild","description":"List devbuild","operationId":"devbuild#list","parameters":[{"name":"size","in":"query","description":"The size limit of items","allowEmptyValue":true,"schema":{"type":"integer","description":"The size limit of items","default":10,"example":2223507446432947422,"format":"int64"},"example":6041896995451658340},{"name":"offset","in":"query","description":"The start position of items","allowEmptyValue":true,"schema":{"type":"integer","description":"The start position of items","default":0,"example":2446145646476286677,"format":"int64"},"example":3939933697158613212},{"name":"hotfix","in":"query","description":"Filter hotfix","allowEmptyValue":true,"schema":{"type":"boolean","description":"Filter hotfix","example":false},"example":true},{"name":"createdBy","in":"query","description":"Filter created by","allowEmptyValue":true,"schema":{"type":"string","description":"Filter created by","example":"Quos odio fuga culpa voluptatem tempora explicabo."},"example":"A quis autem."}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DevBuild"},"example":[{"id":81949526081673625,"meta":{"createdAt":"Voluptatum voluptatum qui.","createdBy":"Eum sit doloremque et rem vel sunt.","updatedAt":"Quae ex ipsam eveniet error."},"spec":{"buildEnv":"Dolorem suscipit ut.","builderImg":"Minus itaque qui necessitatibus et voluptatum sint.","edition":"community","features":"Dolorem cupiditate.","gitHash":"Ut officiis eum animi eligendi inventore totam.","gitRef":"Eum sed consectetur ea.","githubRepo":"Expedita officia molestiae eos.","isHotfix":true,"isPushGCR":false,"pipelineEngine":"jenkins","pluginGitRef":"Est et.","product":"enterprise-plugin","productBaseImg":"Est aspernatur et vel dignissimos non corrupti.","productDockerfile":"Totam quod numquam ea cum.","targetImg":"Velit tempora necessitatibus asperiores.","version":"Sunt deserunt ut quod ut."},"status":{"buildReport":{"binaries":[{"component":"Est consequatur quo voluptatem dolore.","ociFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"platform":"Totam harum.","sha256OciFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"sha256URL":"Non est enim sit provident.","url":"Provident rerum omnis."},{"component":"Est consequatur quo voluptatem dolore.","ociFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"platform":"Totam harum.","sha256OciFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"sha256URL":"Non est enim sit provident.","url":"Provident rerum omnis."},{"component":"Est consequatur quo voluptatem dolore.","ociFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"platform":"Totam harum.","sha256OciFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"sha256URL":"Non est enim sit provident.","url":"Provident rerum omnis."},{"component":"Est consequatur quo voluptatem dolore.","ociFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"platform":"Totam harum.","sha256OciFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"sha256URL":"Non est enim sit provident.","url":"Provident rerum omnis."}],"gitHash":"Voluptatem ut excepturi aut molestias.","images":[{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."}],"pluginGitHash":"Sed quasi aut.","printedVersion":"Molestias aspernatur odio."},"errMsg":"Asperiores dolorum.","pipelineBuildID":2976244863257590590,"pipelineEndAt":"Et qui consequatur et.","pipelineStartAt":"Dignissimos et nisi enim temporibus laboriosam quasi.","pipelineViewURL":"Repellat magnam est ea et explicabo sunt.","pipelineViewURLs":["Explicabo quos assumenda.","Mollitia tempore."],"status":"PENDING","tektonStatus":{"pipelines":[{"endAt":"Voluptas quibusdam fugiat et.","gitHash":"Voluptatibus voluptas molestiae ut soluta libero.","images":[{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."}],"name":"Enim illum ratione in dolor exercitationem fugit.","ociArtifacts":[{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."}],"platform":"Aliquam animi amet dolorum aut qui.","startAt":"Voluptatum perferendis.","status":"PENDING","url":"Dolores dignissimos quam."},{"endAt":"Voluptas quibusdam fugiat et.","gitHash":"Voluptatibus voluptas molestiae ut soluta libero.","images":[{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."}],"name":"Enim illum ratione in dolor exercitationem fugit.","ociArtifacts":[{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."}],"platform":"Aliquam animi amet dolorum aut qui.","startAt":"Voluptatum perferendis.","status":"PENDING","url":"Dolores dignissimos quam."}]}}},{"id":81949526081673625,"meta":{"createdAt":"Voluptatum voluptatum qui.","createdBy":"Eum sit doloremque et rem vel sunt.","updatedAt":"Quae ex ipsam eveniet error."},"spec":{"buildEnv":"Dolorem suscipit ut.","builderImg":"Minus itaque qui necessitatibus et voluptatum sint.","edition":"community","features":"Dolorem cupiditate.","gitHash":"Ut officiis eum animi eligendi inventore totam.","gitRef":"Eum sed consectetur ea.","githubRepo":"Expedita officia molestiae eos.","isHotfix":true,"isPushGCR":false,"pipelineEngine":"jenkins","pluginGitRef":"Est et.","product":"enterprise-plugin","productBaseImg":"Est aspernatur et vel dignissimos non corrupti.","productDockerfile":"Totam quod numquam ea cum.","targetImg":"Velit tempora necessitatibus asperiores.","version":"Sunt deserunt ut quod ut."},"status":{"buildReport":{"binaries":[{"component":"Est consequatur quo voluptatem dolore.","ociFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"platform":"Totam harum.","sha256OciFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"sha256URL":"Non est enim sit provident.","url":"Provident rerum omnis."},{"component":"Est consequatur quo voluptatem dolore.","ociFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"platform":"Totam harum.","sha256OciFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"sha256URL":"Non est enim sit provident.","url":"Provident rerum omnis."},{"component":"Est consequatur quo voluptatem dolore.","ociFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"platform":"Totam harum.","sha256OciFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"sha256URL":"Non est enim sit provident.","url":"Provident rerum omnis."},{"component":"Est consequatur quo voluptatem dolore.","ociFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"platform":"Totam harum.","sha256OciFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"sha256URL":"Non est enim sit provident.","url":"Provident rerum omnis."}],"gitHash":"Voluptatem ut excepturi aut molestias.","images":[{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."}],"pluginGitHash":"Sed quasi aut.","printedVersion":"Molestias aspernatur odio."},"errMsg":"Asperiores dolorum.","pipelineBuildID":2976244863257590590,"pipelineEndAt":"Et qui consequatur et.","pipelineStartAt":"Dignissimos et nisi enim temporibus laboriosam quasi.","pipelineViewURL":"Repellat magnam est ea et explicabo sunt.","pipelineViewURLs":["Explicabo quos assumenda.","Mollitia tempore."],"status":"PENDING","tektonStatus":{"pipelines":[{"endAt":"Voluptas quibusdam fugiat et.","gitHash":"Voluptatibus voluptas molestiae ut soluta libero.","images":[{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."}],"name":"Enim illum ratione in dolor exercitationem fugit.","ociArtifacts":[{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."}],"platform":"Aliquam animi amet dolorum aut qui.","startAt":"Voluptatum perferendis.","status":"PENDING","url":"Dolores dignissimos quam."},{"endAt":"Voluptas quibusdam fugiat et.","gitHash":"Voluptatibus voluptas molestiae ut soluta libero.","images":[{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."}],"name":"Enim illum ratione in dolor exercitationem fugit.","ociArtifacts":[{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."}],"platform":"Aliquam animi amet dolorum aut qui.","startAt":"Voluptatum perferendis.","status":"PENDING","url":"Dolores dignissimos quam."}]}}}]},"example":[{"id":81949526081673625,"meta":{"createdAt":"Voluptatum voluptatum qui.","createdBy":"Eum sit doloremque et rem vel sunt.","updatedAt":"Quae ex ipsam eveniet error."},"spec":{"buildEnv":"Dolorem suscipit ut.","builderImg":"Minus itaque qui necessitatibus et voluptatum sint.","edition":"community","features":"Dolorem cupiditate.","gitHash":"Ut officiis eum animi eligendi inventore totam.","gitRef":"Eum sed consectetur ea.","githubRepo":"Expedita officia molestiae eos.","isHotfix":true,"isPushGCR":false,"pipelineEngine":"jenkins","pluginGitRef":"Est et.","product":"enterprise-plugin","productBaseImg":"Est aspernatur et vel dignissimos non corrupti.","productDockerfile":"Totam quod numquam ea cum.","targetImg":"Velit tempora necessitatibus asperiores.","version":"Sunt deserunt ut quod ut."},"status":{"buildReport":{"binaries":[{"component":"Est consequatur quo voluptatem dolore.","ociFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"platform":"Totam harum.","sha256OciFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"sha256URL":"Non est enim sit provident.","url":"Provident rerum omnis."},{"component":"Est consequatur quo voluptatem dolore.","ociFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"platform":"Totam harum.","sha256OciFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"sha256URL":"Non est enim sit provident.","url":"Provident rerum omnis."},{"component":"Est consequatur quo voluptatem dolore.","ociFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"platform":"Totam harum.","sha256OciFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"sha256URL":"Non est enim sit provident.","url":"Provident rerum omnis."},{"component":"Est consequatur quo voluptatem dolore.","ociFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"platform":"Totam harum.","sha256OciFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"sha256URL":"Non est enim sit provident.","url":"Provident rerum omnis."}],"gitHash":"Voluptatem ut excepturi aut molestias.","images":[{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."}],"pluginGitHash":"Sed quasi aut.","printedVersion":"Molestias aspernatur odio."},"errMsg":"Asperiores dolorum.","pipelineBuildID":2976244863257590590,"pipelineEndAt":"Et qui consequatur et.","pipelineStartAt":"Dignissimos et nisi enim temporibus laboriosam quasi.","pipelineViewURL":"Repellat magnam est ea et explicabo sunt.","pipelineViewURLs":["Explicabo quos assumenda.","Mollitia tempore."],"status":"PENDING","tektonStatus":{"pipelines":[{"endAt":"Voluptas quibusdam fugiat et.","gitHash":"Voluptatibus voluptas molestiae ut soluta libero.","images":[{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."}],"name":"Enim illum ratione in dolor exercitationem fugit.","ociArtifacts":[{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."}],"platform":"Aliquam animi amet dolorum aut qui.","startAt":"Voluptatum perferendis.","status":"PENDING","url":"Dolores dignissimos quam."},{"endAt":"Voluptas quibusdam fugiat et.","gitHash":"Voluptatibus voluptas molestiae ut soluta libero.","images":[{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."}],"name":"Enim illum ratione in dolor exercitationem fugit.","ociArtifacts":[{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."}],"platform":"Aliquam animi amet dolorum aut qui.","startAt":"Voluptatum perferendis.","status":"PENDING","url":"Dolores dignissimos quam."}]}}},{"id":81949526081673625,"meta":{"createdAt":"Voluptatum voluptatum qui.","createdBy":"Eum sit doloremque et rem vel sunt.","updatedAt":"Quae ex ipsam eveniet error."},"spec":{"buildEnv":"Dolorem suscipit ut.","builderImg":"Minus itaque qui necessitatibus et voluptatum sint.","edition":"community","features":"Dolorem cupiditate.","gitHash":"Ut officiis eum animi eligendi inventore totam.","gitRef":"Eum sed consectetur ea.","githubRepo":"Expedita officia molestiae eos.","isHotfix":true,"isPushGCR":false,"pipelineEngine":"jenkins","pluginGitRef":"Est et.","product":"enterprise-plugin","productBaseImg":"Est aspernatur et vel dignissimos non corrupti.","productDockerfile":"Totam quod numquam ea cum.","targetImg":"Velit tempora necessitatibus asperiores.","version":"Sunt deserunt ut quod ut."},"status":{"buildReport":{"binaries":[{"component":"Est consequatur quo voluptatem dolore.","ociFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"platform":"Totam harum.","sha256OciFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"sha256URL":"Non est enim sit provident.","url":"Provident rerum omnis."},{"component":"Est consequatur quo voluptatem dolore.","ociFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"platform":"Totam harum.","sha256OciFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"sha256URL":"Non est enim sit provident.","url":"Provident rerum omnis."},{"component":"Est consequatur quo voluptatem dolore.","ociFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"platform":"Totam harum.","sha256OciFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"sha256URL":"Non est enim sit provident.","url":"Provident rerum omnis."},{"component":"Est consequatur quo voluptatem dolore.","ociFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"platform":"Totam harum.","sha256OciFile":{"file":"Et quis doloribus.","repo":"Et consequuntur autem voluptatem temporibus eos.","tag":"Voluptatem dolores rerum rerum dicta."},"sha256URL":"Non est enim sit provident.","url":"Provident rerum omnis."}],"gitHash":"Voluptatem ut excepturi aut molestias.","images":[{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."}],"pluginGitHash":"Sed quasi aut.","printedVersion":"Molestias aspernatur odio."},"errMsg":"Asperiores dolorum.","pipelineBuildID":2976244863257590590,"pipelineEndAt":"Et qui consequatur et.","pipelineStartAt":"Dignissimos et nisi enim temporibus laboriosam quasi.","pipelineViewURL":"Repellat magnam est ea et explicabo sunt.","pipelineViewURLs":["Explicabo quos assumenda.","Mollitia tempore."],"status":"PENDING","tektonStatus":{"pipelines":[{"endAt":"Voluptas quibusdam fugiat et.","gitHash":"Voluptatibus voluptas molestiae ut soluta libero.","images":[{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."}],"name":"Enim illum ratione in dolor exercitationem fugit.","ociArtifacts":[{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."}],"platform":"Aliquam animi amet dolorum aut qui.","startAt":"Voluptatum perferendis.","status":"PENDING","url":"Dolores dignissimos quam."},{"endAt":"Voluptas quibusdam fugiat et.","gitHash":"Voluptatibus voluptas molestiae ut soluta libero.","images":[{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."},{"platform":"Voluptatum commodi.","url":"Temporibus sit enim dolorem voluptatem rem."}],"name":"Enim illum ratione in dolor exercitationem fugit.","ociArtifacts":[{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."},{"files":["Temporibus voluptatem.","Sit omnis.","Et et."],"repo":"Quis similique a ipsum.","tag":"Natus quisquam consequatur porro."}],"platform":"Aliquam animi amet dolorum aut qui.","startAt":"Voluptatum perferendis.","status":"PENDING","url":"Dolores dignissimos quam."}]}}}]}}},"400":{"description":"BadRequest: Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPError"},"example":{"code":6486387872566373554,"message":"Et totam."}}}}}},"post":{"tags":["devbuild"],"summary":"create devbuild","description":"Create and trigger devbuild","operationId":"devbuild#create","parameters":[{"name":"dryrun","in":"query","description":"Dry run","allowEmptyValue":true,"schema":{"type":"boolean","description":"Dry run","default":false,"example":true},"example":false}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRequestBody"},"example":{"createdBy":"mortimer@herzogfranecki.biz","request":{"buildEnv":"Sunt nihil quia numquam suscipit corrupti qui.","builderImg":"Sint ut blanditiis.","edition":"enterprise","features":"Aperiam natus in ut quae accusantium.","gitRef":"Numquam possimus possimus ipsum rerum unde.","githubRepo":"Numquam neque reiciendis quaerat.","isHotfix":true,"isPushGCR":true,"pipelineEngine":"tekton","pluginGitRef":"Laboriosam esse dicta.","product":"tidb","productBaseImg":"Tempore ut dolores.","productDockerfile":"Iusto suscipit.","targetImg":"Et aut error doloremque non itaque.","version":"Voluptas quia reprehenderit fugit quo debitis numquam."}}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DevBuild"},"example":{"id":6347095018216416956,"meta":{"createdAt":"A voluptatem pariatur.","createdBy":"Sed laboriosam nostrum autem est.","updatedAt":"Consequatur dolores provident unde non est quo."},"spec":{"buildEnv":"Illum ex quia est autem est.","builderImg":"Ratione consequatur quisquam et.","edition":"community","features":"Doloremque culpa omnis quia iure aut.","gitHash":"Velit fugit nihil et quia cupiditate.","gitRef":"Similique quis.","githubRepo":"Possimus maxime et qui eius unde eos.","isHotfix":false,"isPushGCR":false,"pipelineEngine":"tekton","pluginGitRef":"Exercitationem molestias ut molestiae a id molestiae.","product":"ticdc","productBaseImg":"Assumenda ducimus ut architecto architecto quos.","productDockerfile":"Non ut vel deserunt officiis quia et.","targetImg":"Quae blanditiis.","version":"Eaque eos nostrum dolore nulla est eos."},"status":{"buildReport":{"binaries":[{"component":"Omnis neque aut illum possimus.","ociFile":{"file":"Quisquam illum.","repo":"Ea consequuntur vero velit.","tag":"A qui pariatur facere."},"platform":"Velit dolor expedita qui earum omnis.","sha256OciFile":{"file":"Quisquam illum.","repo":"Ea consequuntur vero velit.","tag":"A qui pariatur facere."},"sha256URL":"Natus accusantium nesciunt suscipit aperiam.","url":"Illo et asperiores aperiam consequatur perferendis delectus."},{"component":"Omnis neque aut illum possimus.","ociFile":{"file":"Quisquam illum.","repo":"Ea consequuntur vero velit.","tag":"A qui pariatur facere."},"platform":"Velit dolor expedita qui earum omnis.","sha256OciFile":{"file":"Quisquam illum.","repo":"Ea consequuntur vero velit.","tag":"A qui pariatur facere."},"sha256URL":"Natus accusantium nesciunt suscipit aperiam.","url":"Illo et asperiores aperiam consequatur perferendis delectus."},{"component":"Omnis neque aut illum possimus.","ociFile":{"file":"Quisquam illum.","repo":"Ea consequuntur vero velit.","tag":"A qui pariatur facere."},"platform":"Velit dolor expedita qui earum omnis.","sha256OciFile":{"file":"Quisquam illum.","repo":"Ea consequuntur vero velit.","tag":"A qui pariatur facere."},"sha256URL":"Natus accusantium nesciunt suscipit aperiam.","url":"Illo et asperiores aperiam consequatur perferendis delectus."},{"component":"Omnis neque aut illum possimus.","ociFile":{"file":"Quisquam illum.","repo":"Ea consequuntur vero velit.","tag":"A qui pariatur facere."},"platform":"Velit dolor expedita qui earum omnis.","sha256OciFile":{"file":"Quisquam illum.","repo":"Ea consequuntur vero velit.","tag":"A qui pariatur facere."},"sha256URL":"Natus accusantium nesciunt suscipit aperiam.","url":"Illo et asperiores aperiam consequatur perferendis delectus."}],"gitHash":"Natus nulla.","images":[{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."},{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."},{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."}],"pluginGitHash":"Ut inventore.","printedVersion":"Enim ut itaque sit tenetur recusandae."},"errMsg":"Occaecati dolor voluptatum maiores a.","pipelineBuildID":6890238418056580283,"pipelineEndAt":"Corrupti et voluptatem voluptas provident.","pipelineStartAt":"Ea non et.","pipelineViewURL":"Debitis labore ut.","pipelineViewURLs":["Dicta rerum a nihil quia quia.","Sed ut."],"status":"FAILURE","tektonStatus":{"pipelines":[{"endAt":"Possimus officiis.","gitHash":"Qui suscipit.","images":[{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."},{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."},{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."}],"name":"Voluptate asperiores atque voluptatem ea.","ociArtifacts":[{"files":["Sit praesentium sed illum esse.","Ea debitis.","Quia enim sint aut asperiores.","Architecto enim molestiae dolorem est."],"repo":"Eum fugit ut cupiditate.","tag":"Aut veniam consectetur temporibus debitis ab recusandae."},{"files":["Sit praesentium sed illum esse.","Ea debitis.","Quia enim sint aut asperiores.","Architecto enim molestiae dolorem est."],"repo":"Eum fugit ut cupiditate.","tag":"Aut veniam consectetur temporibus debitis ab recusandae."}],"platform":"Qui at.","startAt":"Fugit pariatur minima.","status":"PENDING","url":"Facilis illo occaecati facilis consequatur temporibus sit."},{"endAt":"Possimus officiis.","gitHash":"Qui suscipit.","images":[{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."},{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."},{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."}],"name":"Voluptate asperiores atque voluptatem ea.","ociArtifacts":[{"files":["Sit praesentium sed illum esse.","Ea debitis.","Quia enim sint aut asperiores.","Architecto enim molestiae dolorem est."],"repo":"Eum fugit ut cupiditate.","tag":"Aut veniam consectetur temporibus debitis ab recusandae."},{"files":["Sit praesentium sed illum esse.","Ea debitis.","Quia enim sint aut asperiores.","Architecto enim molestiae dolorem est."],"repo":"Eum fugit ut cupiditate.","tag":"Aut veniam consectetur temporibus debitis ab recusandae."}],"platform":"Qui at.","startAt":"Fugit pariatur minima.","status":"PENDING","url":"Facilis illo occaecati facilis consequatur temporibus sit."}]}}}}}},"400":{"description":"BadRequest: Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPError"},"example":{"code":72546087042811667,"message":"Et commodi culpa necessitatibus in eum."}}}},"500":{"description":"InternalServerError: Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPError"},"example":{"code":2513694823749906997,"message":"Voluptate doloribus architecto numquam est."}}}}}}},"/api/devbuilds/{id}":{"get":{"tags":["devbuild"],"summary":"get devbuild","description":"Get devbuild","operationId":"devbuild#get","parameters":[{"name":"sync","in":"query","description":"Whether sync with jenkins","allowEmptyValue":true,"schema":{"type":"boolean","description":"Whether sync with jenkins","default":false,"example":true},"example":false},{"name":"id","in":"path","description":"ID of build","required":true,"schema":{"type":"integer","description":"ID of build","example":1,"format":"int64"},"example":1}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DevBuild"},"example":{"id":827047275187766585,"meta":{"createdAt":"A voluptatem pariatur.","createdBy":"Sed laboriosam nostrum autem est.","updatedAt":"Consequatur dolores provident unde non est quo."},"spec":{"buildEnv":"Illum ex quia est autem est.","builderImg":"Ratione consequatur quisquam et.","edition":"community","features":"Doloremque culpa omnis quia iure aut.","gitHash":"Velit fugit nihil et quia cupiditate.","gitRef":"Similique quis.","githubRepo":"Possimus maxime et qui eius unde eos.","isHotfix":false,"isPushGCR":false,"pipelineEngine":"tekton","pluginGitRef":"Exercitationem molestias ut molestiae a id molestiae.","product":"ticdc","productBaseImg":"Assumenda ducimus ut architecto architecto quos.","productDockerfile":"Non ut vel deserunt officiis quia et.","targetImg":"Quae blanditiis.","version":"Eaque eos nostrum dolore nulla est eos."},"status":{"buildReport":{"binaries":[{"component":"Omnis neque aut illum possimus.","ociFile":{"file":"Quisquam illum.","repo":"Ea consequuntur vero velit.","tag":"A qui pariatur facere."},"platform":"Velit dolor expedita qui earum omnis.","sha256OciFile":{"file":"Quisquam illum.","repo":"Ea consequuntur vero velit.","tag":"A qui pariatur facere."},"sha256URL":"Natus accusantium nesciunt suscipit aperiam.","url":"Illo et asperiores aperiam consequatur perferendis delectus."},{"component":"Omnis neque aut illum possimus.","ociFile":{"file":"Quisquam illum.","repo":"Ea consequuntur vero velit.","tag":"A qui pariatur facere."},"platform":"Velit dolor expedita qui earum omnis.","sha256OciFile":{"file":"Quisquam illum.","repo":"Ea consequuntur vero velit.","tag":"A qui pariatur facere."},"sha256URL":"Natus accusantium nesciunt suscipit aperiam.","url":"Illo et asperiores aperiam consequatur perferendis delectus."},{"component":"Omnis neque aut illum possimus.","ociFile":{"file":"Quisquam illum.","repo":"Ea consequuntur vero velit.","tag":"A qui pariatur facere."},"platform":"Velit dolor expedita qui earum omnis.","sha256OciFile":{"file":"Quisquam illum.","repo":"Ea consequuntur vero velit.","tag":"A qui pariatur facere."},"sha256URL":"Natus accusantium nesciunt suscipit aperiam.","url":"Illo et asperiores aperiam consequatur perferendis delectus."},{"component":"Omnis neque aut illum possimus.","ociFile":{"file":"Quisquam illum.","repo":"Ea consequuntur vero velit.","tag":"A qui pariatur facere."},"platform":"Velit dolor expedita qui earum omnis.","sha256OciFile":{"file":"Quisquam illum.","repo":"Ea consequuntur vero velit.","tag":"A qui pariatur facere."},"sha256URL":"Natus accusantium nesciunt suscipit aperiam.","url":"Illo et asperiores aperiam consequatur perferendis delectus."}],"gitHash":"Natus nulla.","images":[{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."},{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."},{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."}],"pluginGitHash":"Ut inventore.","printedVersion":"Enim ut itaque sit tenetur recusandae."},"errMsg":"Occaecati dolor voluptatum maiores a.","pipelineBuildID":6890238418056580283,"pipelineEndAt":"Corrupti et voluptatem voluptas provident.","pipelineStartAt":"Ea non et.","pipelineViewURL":"Debitis labore ut.","pipelineViewURLs":["Dicta rerum a nihil quia quia.","Sed ut."],"status":"FAILURE","tektonStatus":{"pipelines":[{"endAt":"Possimus officiis.","gitHash":"Qui suscipit.","images":[{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."},{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."},{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."}],"name":"Voluptate asperiores atque voluptatem ea.","ociArtifacts":[{"files":["Sit praesentium sed illum esse.","Ea debitis.","Quia enim sint aut asperiores.","Architecto enim molestiae dolorem est."],"repo":"Eum fugit ut cupiditate.","tag":"Aut veniam consectetur temporibus debitis ab recusandae."},{"files":["Sit praesentium sed illum esse.","Ea debitis.","Quia enim sint aut asperiores.","Architecto enim molestiae dolorem est."],"repo":"Eum fugit ut cupiditate.","tag":"Aut veniam consectetur temporibus debitis ab recusandae."}],"platform":"Qui at.","startAt":"Fugit pariatur minima.","status":"PENDING","url":"Facilis illo occaecati facilis consequatur temporibus sit."},{"endAt":"Possimus officiis.","gitHash":"Qui suscipit.","images":[{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."},{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."},{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."}],"name":"Voluptate asperiores atque voluptatem ea.","ociArtifacts":[{"files":["Sit praesentium sed illum esse.","Ea debitis.","Quia enim sint aut asperiores.","Architecto enim molestiae dolorem est."],"repo":"Eum fugit ut cupiditate.","tag":"Aut veniam consectetur temporibus debitis ab recusandae."},{"files":["Sit praesentium sed illum esse.","Ea debitis.","Quia enim sint aut asperiores.","Architecto enim molestiae dolorem est."],"repo":"Eum fugit ut cupiditate.","tag":"Aut veniam consectetur temporibus debitis ab recusandae."}],"platform":"Qui at.","startAt":"Fugit pariatur minima.","status":"PENDING","url":"Facilis illo occaecati facilis consequatur temporibus sit."}]}}}}}},"400":{"description":"BadRequest: Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPError"},"example":{"code":804244386186570785,"message":"Et commodi dolorum."}}}},"500":{"description":"InternalServerError: Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPError"},"example":{"code":8047731952312619183,"message":"Facere magnam velit optio est et doloribus."}}}}}},"put":{"tags":["devbuild"],"summary":"update devbuild","description":"Update devbuild status","operationId":"devbuild#update","parameters":[{"name":"dryrun","in":"query","description":"Dry run","allowEmptyValue":true,"schema":{"type":"boolean","description":"Dry run","default":false,"example":false},"example":false},{"name":"id","in":"path","description":"ID of build","required":true,"schema":{"type":"integer","description":"ID of build","example":1,"format":"int64"},"example":1}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRequestBody"},"example":{"DevBuild":{"id":8670468037696883245,"meta":{"createdAt":"Nihil soluta aut adipisci est.","createdBy":"Qui necessitatibus possimus ab quos facere.","updatedAt":"Repudiandae voluptatem rem earum aut at nulla."},"spec":{"buildEnv":"Natus totam esse maxime aliquid sunt.","builderImg":"At illo voluptas dolor.","edition":"community","features":"Beatae sunt nesciunt amet autem.","gitHash":"Sit accusamus aspernatur aut laboriosam.","gitRef":"Perspiciatis perspiciatis atque inventore id.","githubRepo":"Ut libero magnam sapiente dolores qui.","isHotfix":false,"isPushGCR":true,"pipelineEngine":"jenkins","pluginGitRef":"Deleniti at consequatur doloribus culpa velit et.","product":"pd","productBaseImg":"Voluptas hic.","productDockerfile":"Ut eum iusto id officiis.","targetImg":"Laboriosam ut perspiciatis porro.","version":"Distinctio aliquid eum."},"status":{"buildReport":{"binaries":[{"component":"Neque velit maiores culpa rerum accusamus.","ociFile":{"file":"Consectetur et officia necessitatibus et necessitatibus sint.","repo":"Enim minima et vel qui nulla qui.","tag":"Maiores aut rerum."},"platform":"Similique nesciunt dolorum quisquam qui odio.","sha256OciFile":{"file":"Consectetur et officia necessitatibus et necessitatibus sint.","repo":"Enim minima et vel qui nulla qui.","tag":"Maiores aut rerum."},"sha256URL":"Praesentium facilis corrupti ullam impedit incidunt.","url":"Aut quas pariatur qui."},{"component":"Neque velit maiores culpa rerum accusamus.","ociFile":{"file":"Consectetur et officia necessitatibus et necessitatibus sint.","repo":"Enim minima et vel qui nulla qui.","tag":"Maiores aut rerum."},"platform":"Similique nesciunt dolorum quisquam qui odio.","sha256OciFile":{"file":"Consectetur et officia necessitatibus et necessitatibus sint.","repo":"Enim minima et vel qui nulla qui.","tag":"Maiores aut rerum."},"sha256URL":"Praesentium facilis corrupti ullam impedit incidunt.","url":"Aut quas pariatur qui."}],"gitHash":"Harum repellat qui eos est velit.","images":[{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."}],"pluginGitHash":"Assumenda itaque necessitatibus eligendi qui qui illum.","printedVersion":"Aliquam quia eum quia id qui."},"errMsg":"Fugiat sint aut minus aperiam quod.","pipelineBuildID":6941289464511149,"pipelineEndAt":"Deleniti natus reprehenderit nihil animi hic fugiat.","pipelineStartAt":"Accusamus velit ipsam.","pipelineViewURL":"Enim harum dolorum.","pipelineViewURLs":["Illo blanditiis totam in.","Dignissimos tempore aut."],"status":"PENDING","tektonStatus":{"pipelines":[{"endAt":"Excepturi ipsa veniam aspernatur quae.","gitHash":"Voluptatem enim aliquam.","images":[{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."}],"name":"Dolores id quibusdam impedit corrupti veritatis.","ociArtifacts":[{"files":["Temporibus totam quae debitis odio hic.","Atque eos consequatur laudantium.","Vitae iste.","Odit blanditiis magni eaque quas eos voluptatem."],"repo":"Quam necessitatibus optio ipsam autem vel veniam.","tag":"Provident qui."},{"files":["Temporibus totam quae debitis odio hic.","Atque eos consequatur laudantium.","Vitae iste.","Odit blanditiis magni eaque quas eos voluptatem."],"repo":"Quam necessitatibus optio ipsam autem vel veniam.","tag":"Provident qui."},{"files":["Temporibus totam quae debitis odio hic.","Atque eos consequatur laudantium.","Vitae iste.","Odit blanditiis magni eaque quas eos voluptatem."],"repo":"Quam necessitatibus optio ipsam autem vel veniam.","tag":"Provident qui."}],"platform":"Quis quia vitae non ratione.","startAt":"Minus sapiente doloremque rerum quasi.","status":"PROCESSING","url":"Saepe rerum tenetur vero eveniet."},{"endAt":"Excepturi ipsa veniam aspernatur quae.","gitHash":"Voluptatem enim aliquam.","images":[{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."}],"name":"Dolores id quibusdam impedit corrupti veritatis.","ociArtifacts":[{"files":["Temporibus totam quae debitis odio hic.","Atque eos consequatur laudantium.","Vitae iste.","Odit blanditiis magni eaque quas eos voluptatem."],"repo":"Quam necessitatibus optio ipsam autem vel veniam.","tag":"Provident qui."},{"files":["Temporibus totam quae debitis odio hic.","Atque eos consequatur laudantium.","Vitae iste.","Odit blanditiis magni eaque quas eos voluptatem."],"repo":"Quam necessitatibus optio ipsam autem vel veniam.","tag":"Provident qui."},{"files":["Temporibus totam quae debitis odio hic.","Atque eos consequatur laudantium.","Vitae iste.","Odit blanditiis magni eaque quas eos voluptatem."],"repo":"Quam necessitatibus optio ipsam autem vel veniam.","tag":"Provident qui."}],"platform":"Quis quia vitae non ratione.","startAt":"Minus sapiente doloremque rerum quasi.","status":"PROCESSING","url":"Saepe rerum tenetur vero eveniet."},{"endAt":"Excepturi ipsa veniam aspernatur quae.","gitHash":"Voluptatem enim aliquam.","images":[{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."}],"name":"Dolores id quibusdam impedit corrupti veritatis.","ociArtifacts":[{"files":["Temporibus totam quae debitis odio hic.","Atque eos consequatur laudantium.","Vitae iste.","Odit blanditiis magni eaque quas eos voluptatem."],"repo":"Quam necessitatibus optio ipsam autem vel veniam.","tag":"Provident qui."},{"files":["Temporibus totam quae debitis odio hic.","Atque eos consequatur laudantium.","Vitae iste.","Odit blanditiis magni eaque quas eos voluptatem."],"repo":"Quam necessitatibus optio ipsam autem vel veniam.","tag":"Provident qui."},{"files":["Temporibus totam quae debitis odio hic.","Atque eos consequatur laudantium.","Vitae iste.","Odit blanditiis magni eaque quas eos voluptatem."],"repo":"Quam necessitatibus optio ipsam autem vel veniam.","tag":"Provident qui."}],"platform":"Quis quia vitae non ratione.","startAt":"Minus sapiente doloremque rerum quasi.","status":"PROCESSING","url":"Saepe rerum tenetur vero eveniet."}]}}}}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DevBuild"},"example":{"id":5709777671415595256,"meta":{"createdAt":"A voluptatem pariatur.","createdBy":"Sed laboriosam nostrum autem est.","updatedAt":"Consequatur dolores provident unde non est quo."},"spec":{"buildEnv":"Illum ex quia est autem est.","builderImg":"Ratione consequatur quisquam et.","edition":"community","features":"Doloremque culpa omnis quia iure aut.","gitHash":"Velit fugit nihil et quia cupiditate.","gitRef":"Similique quis.","githubRepo":"Possimus maxime et qui eius unde eos.","isHotfix":false,"isPushGCR":false,"pipelineEngine":"tekton","pluginGitRef":"Exercitationem molestias ut molestiae a id molestiae.","product":"ticdc","productBaseImg":"Assumenda ducimus ut architecto architecto quos.","productDockerfile":"Non ut vel deserunt officiis quia et.","targetImg":"Quae blanditiis.","version":"Eaque eos nostrum dolore nulla est eos."},"status":{"buildReport":{"binaries":[{"component":"Omnis neque aut illum possimus.","ociFile":{"file":"Quisquam illum.","repo":"Ea consequuntur vero velit.","tag":"A qui pariatur facere."},"platform":"Velit dolor expedita qui earum omnis.","sha256OciFile":{"file":"Quisquam illum.","repo":"Ea consequuntur vero velit.","tag":"A qui pariatur facere."},"sha256URL":"Natus accusantium nesciunt suscipit aperiam.","url":"Illo et asperiores aperiam consequatur perferendis delectus."},{"component":"Omnis neque aut illum possimus.","ociFile":{"file":"Quisquam illum.","repo":"Ea consequuntur vero velit.","tag":"A qui pariatur facere."},"platform":"Velit dolor expedita qui earum omnis.","sha256OciFile":{"file":"Quisquam illum.","repo":"Ea consequuntur vero velit.","tag":"A qui pariatur facere."},"sha256URL":"Natus accusantium nesciunt suscipit aperiam.","url":"Illo et asperiores aperiam consequatur perferendis delectus."},{"component":"Omnis neque aut illum possimus.","ociFile":{"file":"Quisquam illum.","repo":"Ea consequuntur vero velit.","tag":"A qui pariatur facere."},"platform":"Velit dolor expedita qui earum omnis.","sha256OciFile":{"file":"Quisquam illum.","repo":"Ea consequuntur vero velit.","tag":"A qui pariatur facere."},"sha256URL":"Natus accusantium nesciunt suscipit aperiam.","url":"Illo et asperiores aperiam consequatur perferendis delectus."},{"component":"Omnis neque aut illum possimus.","ociFile":{"file":"Quisquam illum.","repo":"Ea consequuntur vero velit.","tag":"A qui pariatur facere."},"platform":"Velit dolor expedita qui earum omnis.","sha256OciFile":{"file":"Quisquam illum.","repo":"Ea consequuntur vero velit.","tag":"A qui pariatur facere."},"sha256URL":"Natus accusantium nesciunt suscipit aperiam.","url":"Illo et asperiores aperiam consequatur perferendis delectus."}],"gitHash":"Natus nulla.","images":[{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."},{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."},{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."}],"pluginGitHash":"Ut inventore.","printedVersion":"Enim ut itaque sit tenetur recusandae."},"errMsg":"Occaecati dolor voluptatum maiores a.","pipelineBuildID":6890238418056580283,"pipelineEndAt":"Corrupti et voluptatem voluptas provident.","pipelineStartAt":"Ea non et.","pipelineViewURL":"Debitis labore ut.","pipelineViewURLs":["Dicta rerum a nihil quia quia.","Sed ut."],"status":"FAILURE","tektonStatus":{"pipelines":[{"endAt":"Possimus officiis.","gitHash":"Qui suscipit.","images":[{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."},{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."},{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."}],"name":"Voluptate asperiores atque voluptatem ea.","ociArtifacts":[{"files":["Sit praesentium sed illum esse.","Ea debitis.","Quia enim sint aut asperiores.","Architecto enim molestiae dolorem est."],"repo":"Eum fugit ut cupiditate.","tag":"Aut veniam consectetur temporibus debitis ab recusandae."},{"files":["Sit praesentium sed illum esse.","Ea debitis.","Quia enim sint aut asperiores.","Architecto enim molestiae dolorem est."],"repo":"Eum fugit ut cupiditate.","tag":"Aut veniam consectetur temporibus debitis ab recusandae."}],"platform":"Qui at.","startAt":"Fugit pariatur minima.","status":"PENDING","url":"Facilis illo occaecati facilis consequatur temporibus sit."},{"endAt":"Possimus officiis.","gitHash":"Qui suscipit.","images":[{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."},{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."},{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."}],"name":"Voluptate asperiores atque voluptatem ea.","ociArtifacts":[{"files":["Sit praesentium sed illum esse.","Ea debitis.","Quia enim sint aut asperiores.","Architecto enim molestiae dolorem est."],"repo":"Eum fugit ut cupiditate.","tag":"Aut veniam consectetur temporibus debitis ab recusandae."},{"files":["Sit praesentium sed illum esse.","Ea debitis.","Quia enim sint aut asperiores.","Architecto enim molestiae dolorem est."],"repo":"Eum fugit ut cupiditate.","tag":"Aut veniam consectetur temporibus debitis ab recusandae."}],"platform":"Qui at.","startAt":"Fugit pariatur minima.","status":"PENDING","url":"Facilis illo occaecati facilis consequatur temporibus sit."}]}}}}}},"400":{"description":"BadRequest: Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPError"},"example":{"code":4223371461273182730,"message":"Ratione est."}}}},"500":{"description":"InternalServerError: Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPError"},"example":{"code":3734524361972111096,"message":"Consectetur vitae sapiente nihil earum sint."}}}}}}},"/api/devbuilds/{id}/rerun":{"post":{"tags":["devbuild"],"summary":"rerun devbuild","description":"Rerun devbuild","operationId":"devbuild#rerun","parameters":[{"name":"dryrun","in":"query","description":"Dry run","allowEmptyValue":true,"schema":{"type":"boolean","description":"Dry run","default":false,"example":false},"example":true},{"name":"id","in":"path","description":"ID of build","required":true,"schema":{"type":"integer","description":"ID of build","example":1,"format":"int64"},"example":1}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DevBuild"},"example":{"id":4770785565623516564,"meta":{"createdAt":"A voluptatem pariatur.","createdBy":"Sed laboriosam nostrum autem est.","updatedAt":"Consequatur dolores provident unde non est quo."},"spec":{"buildEnv":"Illum ex quia est autem est.","builderImg":"Ratione consequatur quisquam et.","edition":"community","features":"Doloremque culpa omnis quia iure aut.","gitHash":"Velit fugit nihil et quia cupiditate.","gitRef":"Similique quis.","githubRepo":"Possimus maxime et qui eius unde eos.","isHotfix":false,"isPushGCR":false,"pipelineEngine":"tekton","pluginGitRef":"Exercitationem molestias ut molestiae a id molestiae.","product":"ticdc","productBaseImg":"Assumenda ducimus ut architecto architecto quos.","productDockerfile":"Non ut vel deserunt officiis quia et.","targetImg":"Quae blanditiis.","version":"Eaque eos nostrum dolore nulla est eos."},"status":{"buildReport":{"binaries":[{"component":"Omnis neque aut illum possimus.","ociFile":{"file":"Quisquam illum.","repo":"Ea consequuntur vero velit.","tag":"A qui pariatur facere."},"platform":"Velit dolor expedita qui earum omnis.","sha256OciFile":{"file":"Quisquam illum.","repo":"Ea consequuntur vero velit.","tag":"A qui pariatur facere."},"sha256URL":"Natus accusantium nesciunt suscipit aperiam.","url":"Illo et asperiores aperiam consequatur perferendis delectus."},{"component":"Omnis neque aut illum possimus.","ociFile":{"file":"Quisquam illum.","repo":"Ea consequuntur vero velit.","tag":"A qui pariatur facere."},"platform":"Velit dolor expedita qui earum omnis.","sha256OciFile":{"file":"Quisquam illum.","repo":"Ea consequuntur vero velit.","tag":"A qui pariatur facere."},"sha256URL":"Natus accusantium nesciunt suscipit aperiam.","url":"Illo et asperiores aperiam consequatur perferendis delectus."},{"component":"Omnis neque aut illum possimus.","ociFile":{"file":"Quisquam illum.","repo":"Ea consequuntur vero velit.","tag":"A qui pariatur facere."},"platform":"Velit dolor expedita qui earum omnis.","sha256OciFile":{"file":"Quisquam illum.","repo":"Ea consequuntur vero velit.","tag":"A qui pariatur facere."},"sha256URL":"Natus accusantium nesciunt suscipit aperiam.","url":"Illo et asperiores aperiam consequatur perferendis delectus."},{"component":"Omnis neque aut illum possimus.","ociFile":{"file":"Quisquam illum.","repo":"Ea consequuntur vero velit.","tag":"A qui pariatur facere."},"platform":"Velit dolor expedita qui earum omnis.","sha256OciFile":{"file":"Quisquam illum.","repo":"Ea consequuntur vero velit.","tag":"A qui pariatur facere."},"sha256URL":"Natus accusantium nesciunt suscipit aperiam.","url":"Illo et asperiores aperiam consequatur perferendis delectus."}],"gitHash":"Natus nulla.","images":[{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."},{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."},{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."}],"pluginGitHash":"Ut inventore.","printedVersion":"Enim ut itaque sit tenetur recusandae."},"errMsg":"Occaecati dolor voluptatum maiores a.","pipelineBuildID":6890238418056580283,"pipelineEndAt":"Corrupti et voluptatem voluptas provident.","pipelineStartAt":"Ea non et.","pipelineViewURL":"Debitis labore ut.","pipelineViewURLs":["Dicta rerum a nihil quia quia.","Sed ut."],"status":"FAILURE","tektonStatus":{"pipelines":[{"endAt":"Possimus officiis.","gitHash":"Qui suscipit.","images":[{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."},{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."},{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."}],"name":"Voluptate asperiores atque voluptatem ea.","ociArtifacts":[{"files":["Sit praesentium sed illum esse.","Ea debitis.","Quia enim sint aut asperiores.","Architecto enim molestiae dolorem est."],"repo":"Eum fugit ut cupiditate.","tag":"Aut veniam consectetur temporibus debitis ab recusandae."},{"files":["Sit praesentium sed illum esse.","Ea debitis.","Quia enim sint aut asperiores.","Architecto enim molestiae dolorem est."],"repo":"Eum fugit ut cupiditate.","tag":"Aut veniam consectetur temporibus debitis ab recusandae."}],"platform":"Qui at.","startAt":"Fugit pariatur minima.","status":"PENDING","url":"Facilis illo occaecati facilis consequatur temporibus sit."},{"endAt":"Possimus officiis.","gitHash":"Qui suscipit.","images":[{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."},{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."},{"platform":"Quae quo quis.","url":"Dolor nihil aperiam magnam."}],"name":"Voluptate asperiores atque voluptatem ea.","ociArtifacts":[{"files":["Sit praesentium sed illum esse.","Ea debitis.","Quia enim sint aut asperiores.","Architecto enim molestiae dolorem est."],"repo":"Eum fugit ut cupiditate.","tag":"Aut veniam consectetur temporibus debitis ab recusandae."},{"files":["Sit praesentium sed illum esse.","Ea debitis.","Quia enim sint aut asperiores.","Architecto enim molestiae dolorem est."],"repo":"Eum fugit ut cupiditate.","tag":"Aut veniam consectetur temporibus debitis ab recusandae."}],"platform":"Qui at.","startAt":"Fugit pariatur minima.","status":"PENDING","url":"Facilis illo occaecati facilis consequatur temporibus sit."}]}}}}}},"400":{"description":"BadRequest: Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPError"},"example":{"code":4796566189838332103,"message":"Cumque laudantium molestiae."}}}},"500":{"description":"InternalServerError: Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPError"},"example":{"code":5213612161793508242,"message":"Impedit dicta quos esse et maxime."}}}}}}}},"components":{"schemas":{"BinArtifact":{"type":"object","properties":{"component":{"type":"string","example":"Qui consequuntur ut."},"ociFile":{"$ref":"#/components/schemas/OciFile"},"platform":{"type":"string","example":"Quis aut placeat."},"sha256OciFile":{"$ref":"#/components/schemas/OciFile"},"sha256URL":{"type":"string","example":"Hic eaque ullam quia vel et sit."},"url":{"type":"string","example":"Dolores quos optio."}},"example":{"component":"Et distinctio nihil cum.","ociFile":{"file":"Delectus architecto voluptatum molestiae.","repo":"Ea aut soluta.","tag":"Aut sed dignissimos voluptas voluptas."},"platform":"Quos molestias culpa.","sha256OciFile":{"file":"Delectus architecto voluptatum molestiae.","repo":"Ea aut soluta.","tag":"Aut sed dignissimos voluptas voluptas."},"sha256URL":"Soluta reprehenderit minima voluptates dolores asperiores.","url":"Delectus accusantium ut quaerat."},"required":["component","ociFile","platform","sha256OciFile","sha256URL","url"]},"BuildReport":{"type":"object","properties":{"binaries":{"type":"array","items":{"$ref":"#/components/schemas/BinArtifact"},"example":[{"component":"Numquam natus eos laboriosam quasi et.","ociFile":{"file":"Delectus architecto voluptatum molestiae.","repo":"Ea aut soluta.","tag":"Aut sed dignissimos voluptas voluptas."},"platform":"Modi autem et aut nemo.","sha256OciFile":{"file":"Delectus architecto voluptatum molestiae.","repo":"Ea aut soluta.","tag":"Aut sed dignissimos voluptas voluptas."},"sha256URL":"Nihil nisi ut.","url":"Natus voluptatibus fuga voluptatem sunt animi modi."},{"component":"Numquam natus eos laboriosam quasi et.","ociFile":{"file":"Delectus architecto voluptatum molestiae.","repo":"Ea aut soluta.","tag":"Aut sed dignissimos voluptas voluptas."},"platform":"Modi autem et aut nemo.","sha256OciFile":{"file":"Delectus architecto voluptatum molestiae.","repo":"Ea aut soluta.","tag":"Aut sed dignissimos voluptas voluptas."},"sha256URL":"Nihil nisi ut.","url":"Natus voluptatibus fuga voluptatem sunt animi modi."},{"component":"Numquam natus eos laboriosam quasi et.","ociFile":{"file":"Delectus architecto voluptatum molestiae.","repo":"Ea aut soluta.","tag":"Aut sed dignissimos voluptas voluptas."},"platform":"Modi autem et aut nemo.","sha256OciFile":{"file":"Delectus architecto voluptatum molestiae.","repo":"Ea aut soluta.","tag":"Aut sed dignissimos voluptas voluptas."},"sha256URL":"Nihil nisi ut.","url":"Natus voluptatibus fuga voluptatem sunt animi modi."},{"component":"Numquam natus eos laboriosam quasi et.","ociFile":{"file":"Delectus architecto voluptatum molestiae.","repo":"Ea aut soluta.","tag":"Aut sed dignissimos voluptas voluptas."},"platform":"Modi autem et aut nemo.","sha256OciFile":{"file":"Delectus architecto voluptatum molestiae.","repo":"Ea aut soluta.","tag":"Aut sed dignissimos voluptas voluptas."},"sha256URL":"Nihil nisi ut.","url":"Natus voluptatibus fuga voluptatem sunt animi modi."}]},"gitHash":{"type":"string","example":"Et consequatur reprehenderit repellat."},"images":{"type":"array","items":{"$ref":"#/components/schemas/ImageArtifact"},"example":[{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."}]},"pluginGitHash":{"type":"string","example":"Non dignissimos magni."},"printedVersion":{"type":"string","example":"Voluptate dolorum."}},"example":{"binaries":[{"component":"Numquam natus eos laboriosam quasi et.","ociFile":{"file":"Delectus architecto voluptatum molestiae.","repo":"Ea aut soluta.","tag":"Aut sed dignissimos voluptas voluptas."},"platform":"Modi autem et aut nemo.","sha256OciFile":{"file":"Delectus architecto voluptatum molestiae.","repo":"Ea aut soluta.","tag":"Aut sed dignissimos voluptas voluptas."},"sha256URL":"Nihil nisi ut.","url":"Natus voluptatibus fuga voluptatem sunt animi modi."},{"component":"Numquam natus eos laboriosam quasi et.","ociFile":{"file":"Delectus architecto voluptatum molestiae.","repo":"Ea aut soluta.","tag":"Aut sed dignissimos voluptas voluptas."},"platform":"Modi autem et aut nemo.","sha256OciFile":{"file":"Delectus architecto voluptatum molestiae.","repo":"Ea aut soluta.","tag":"Aut sed dignissimos voluptas voluptas."},"sha256URL":"Nihil nisi ut.","url":"Natus voluptatibus fuga voluptatem sunt animi modi."},{"component":"Numquam natus eos laboriosam quasi et.","ociFile":{"file":"Delectus architecto voluptatum molestiae.","repo":"Ea aut soluta.","tag":"Aut sed dignissimos voluptas voluptas."},"platform":"Modi autem et aut nemo.","sha256OciFile":{"file":"Delectus architecto voluptatum molestiae.","repo":"Ea aut soluta.","tag":"Aut sed dignissimos voluptas voluptas."},"sha256URL":"Nihil nisi ut.","url":"Natus voluptatibus fuga voluptatem sunt animi modi."}],"gitHash":"Tempore qui veniam quia.","images":[{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."}],"pluginGitHash":"Neque incidunt et quae fugit ea.","printedVersion":"Beatae porro omnis voluptas cumque sunt laboriosam."},"required":["binaries","gitHash","images","pluginGitHash","printedVersion"]},"CreateRequestBody":{"type":"object","properties":{"createdBy":{"type":"string","description":"Creator of build","example":"wilfrid_gorczany@christiansen.name","format":"email"},"request":{"$ref":"#/components/schemas/DevBuildRequest"}},"example":{"createdBy":"alda.kautzer@dickishields.biz","request":{"buildEnv":"Sunt nihil quia numquam suscipit corrupti qui.","builderImg":"Sint ut blanditiis.","edition":"enterprise","features":"Aperiam natus in ut quae accusantium.","gitRef":"Numquam possimus possimus ipsum rerum unde.","githubRepo":"Numquam neque reiciendis quaerat.","isHotfix":true,"isPushGCR":true,"pipelineEngine":"tekton","pluginGitRef":"Laboriosam esse dicta.","product":"tidb","productBaseImg":"Tempore ut dolores.","productDockerfile":"Iusto suscipit.","targetImg":"Et aut error doloremque non itaque.","version":"Voluptas quia reprehenderit fugit quo debitis numquam."}},"required":["createdBy","request"]},"DevBuild":{"type":"object","properties":{"id":{"type":"integer","example":3026413034801598164,"format":"int64"},"meta":{"$ref":"#/components/schemas/DevBuildMeta"},"spec":{"$ref":"#/components/schemas/DevBuildSpec"},"status":{"$ref":"#/components/schemas/DevBuildStatus"}},"example":{"id":5615396365765690377,"meta":{"createdAt":"Omnis fugiat magni ut qui deleniti.","createdBy":"Beatae aperiam quo.","updatedAt":"Consequatur saepe officia animi laborum voluptates."},"spec":{"buildEnv":"Architecto dolores.","builderImg":"Soluta consectetur unde perspiciatis dolores sed ipsum.","edition":"Quam molestiae non.","features":"Omnis et doloremque.","gitHash":"Quae suscipit aut accusamus ea quia.","gitRef":"Praesentium rerum excepturi non et illo reiciendis.","githubRepo":"Provident odio magnam minus.","isHotfix":false,"isPushGCR":false,"pipelineEngine":"Quos sint dicta totam cumque quidem.","pluginGitRef":"Et optio.","product":"Et velit magni mollitia dolor.","productBaseImg":"Voluptatem fugit veniam ex ut non totam.","productDockerfile":"Illum delectus dicta neque nulla.","targetImg":"Dolorem et.","version":"Libero sed voluptate animi optio."},"status":{"buildReport":{"binaries":[{"component":"Numquam natus eos laboriosam quasi et.","ociFile":{"file":"Delectus architecto voluptatum molestiae.","repo":"Ea aut soluta.","tag":"Aut sed dignissimos voluptas voluptas."},"platform":"Modi autem et aut nemo.","sha256OciFile":{"file":"Delectus architecto voluptatum molestiae.","repo":"Ea aut soluta.","tag":"Aut sed dignissimos voluptas voluptas."},"sha256URL":"Nihil nisi ut.","url":"Natus voluptatibus fuga voluptatem sunt animi modi."},{"component":"Numquam natus eos laboriosam quasi et.","ociFile":{"file":"Delectus architecto voluptatum molestiae.","repo":"Ea aut soluta.","tag":"Aut sed dignissimos voluptas voluptas."},"platform":"Modi autem et aut nemo.","sha256OciFile":{"file":"Delectus architecto voluptatum molestiae.","repo":"Ea aut soluta.","tag":"Aut sed dignissimos voluptas voluptas."},"sha256URL":"Nihil nisi ut.","url":"Natus voluptatibus fuga voluptatem sunt animi modi."},{"component":"Numquam natus eos laboriosam quasi et.","ociFile":{"file":"Delectus architecto voluptatum molestiae.","repo":"Ea aut soluta.","tag":"Aut sed dignissimos voluptas voluptas."},"platform":"Modi autem et aut nemo.","sha256OciFile":{"file":"Delectus architecto voluptatum molestiae.","repo":"Ea aut soluta.","tag":"Aut sed dignissimos voluptas voluptas."},"sha256URL":"Nihil nisi ut.","url":"Natus voluptatibus fuga voluptatem sunt animi modi."},{"component":"Numquam natus eos laboriosam quasi et.","ociFile":{"file":"Delectus architecto voluptatum molestiae.","repo":"Ea aut soluta.","tag":"Aut sed dignissimos voluptas voluptas."},"platform":"Modi autem et aut nemo.","sha256OciFile":{"file":"Delectus architecto voluptatum molestiae.","repo":"Ea aut soluta.","tag":"Aut sed dignissimos voluptas voluptas."},"sha256URL":"Nihil nisi ut.","url":"Natus voluptatibus fuga voluptatem sunt animi modi."}],"gitHash":"Porro eos vel et qui inventore adipisci.","images":[{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."}],"pluginGitHash":"Eveniet sint eligendi eos corporis voluptatum ipsa.","printedVersion":"Molestiae quam id animi."},"errMsg":"Quas maiores recusandae.","pipelineBuildID":7214947228892467714,"pipelineEndAt":"Dolorem repudiandae doloribus placeat enim sequi.","pipelineStartAt":"Voluptatem excepturi reprehenderit.","pipelineViewURL":"Voluptatum tempore omnis rerum vel.","pipelineViewURLs":["Dolorum id.","Cupiditate nesciunt consequatur necessitatibus sint quisquam quia.","Earum expedita minima ipsam repudiandae."],"status":"In non assumenda doloremque ullam aut ut.","tektonStatus":{"pipelines":[{"endAt":"Deserunt maiores saepe quo nisi ea.","gitHash":"Tenetur quo voluptas in ut.","images":[{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."}],"name":"Ut deleniti rerum dolorem excepturi.","ociArtifacts":[{"files":["Laborum saepe dolor tempora.","Vitae quibusdam non impedit suscipit.","Voluptas voluptatibus accusantium culpa unde.","Tenetur aut repudiandae."],"repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},{"files":["Laborum saepe dolor tempora.","Vitae quibusdam non impedit suscipit.","Voluptas voluptatibus accusantium culpa unde.","Tenetur aut repudiandae."],"repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."}],"platform":"Nostrum illo laudantium aperiam numquam ratione est.","startAt":"Iste a totam debitis quo.","status":"In non assumenda doloremque ullam aut ut.","url":"Fugiat suscipit labore est voluptas odit nemo."},{"endAt":"Deserunt maiores saepe quo nisi ea.","gitHash":"Tenetur quo voluptas in ut.","images":[{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."}],"name":"Ut deleniti rerum dolorem excepturi.","ociArtifacts":[{"files":["Laborum saepe dolor tempora.","Vitae quibusdam non impedit suscipit.","Voluptas voluptatibus accusantium culpa unde.","Tenetur aut repudiandae."],"repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},{"files":["Laborum saepe dolor tempora.","Vitae quibusdam non impedit suscipit.","Voluptas voluptatibus accusantium culpa unde.","Tenetur aut repudiandae."],"repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."}],"platform":"Nostrum illo laudantium aperiam numquam ratione est.","startAt":"Iste a totam debitis quo.","status":"In non assumenda doloremque ullam aut ut.","url":"Fugiat suscipit labore est voluptas odit nemo."}]}}},"required":["id","meta","spec","status"]},"DevBuildMeta":{"type":"object","properties":{"createdAt":{"type":"string","example":"Totam vero accusantium neque odio ratione."},"createdBy":{"type":"string","example":"Ut aliquam."},"updatedAt":{"type":"string","example":"Tempora ut et id neque."}},"example":{"createdAt":"Error et ad perspiciatis quibusdam omnis saepe.","createdBy":"Explicabo non deleniti.","updatedAt":"Consequatur veniam rerum quae voluptas consequuntur."},"required":["createdAt","createdBy","updatedAt"]},"DevBuildRequest":{"type":"object","properties":{"buildEnv":{"type":"string","example":"Harum quia ipsa perferendis."},"builderImg":{"type":"string","example":"Pariatur enim voluptate autem provident magnam."},"edition":{"type":"string","example":"enterprise","enum":["enterprise","community"]},"features":{"type":"string","example":"Ut fugiat."},"gitRef":{"type":"string","example":"Voluptas reiciendis est."},"githubRepo":{"type":"string","example":"Quis itaque in dignissimos et omnis."},"isHotfix":{"type":"boolean","example":true},"isPushGCR":{"type":"boolean","example":true},"pipelineEngine":{"type":"string","example":"tekton","enum":["jenkins","tekton"]},"pluginGitRef":{"type":"string","example":"Consectetur saepe recusandae."},"product":{"type":"string","example":"drainer","enum":["tidb","enterprise-plugin","tikv","pd","tiflash","br","dumpling","tidb-lightning","ticdc","ticdc-newarch","dm","tidb-binlog","tidb-tools","ng-monitoring","tidb-dashboard","drainer","pump",""]},"productBaseImg":{"type":"string","example":"Occaecati accusantium et ad earum possimus accusamus."},"productDockerfile":{"type":"string","example":"Et dolorum natus."},"targetImg":{"type":"string","example":"Quidem asperiores neque."},"version":{"type":"string","example":"Velit rerum."}},"example":{"buildEnv":"Quis quod sed at ut quia placeat.","builderImg":"Quia minima.","edition":"Quam molestiae non.","features":"Modi quos impedit ut.","gitRef":"Vel natus.","githubRepo":"Quidem beatae non quas et ex.","isHotfix":true,"isPushGCR":true,"pipelineEngine":"Quos sint dicta totam cumque quidem.","pluginGitRef":"Nesciunt sit fuga magnam.","product":"Et velit magni mollitia dolor.","productBaseImg":"Architecto velit qui.","productDockerfile":"Eos autem praesentium.","targetImg":"Quisquam et velit.","version":"Sequi ea incidunt magni ut laborum nihil."},"required":["edition","gitRef","product","version"]},"DevBuildSpec":{"type":"object","properties":{"buildEnv":{"type":"string","example":"Consequatur impedit et quibusdam et consectetur."},"builderImg":{"type":"string","example":"Facere nihil ad aspernatur maxime aperiam."},"edition":{"type":"string","example":"enterprise","enum":["enterprise","community"]},"features":{"type":"string","example":"Consequatur est inventore."},"gitHash":{"type":"string","example":"Veniam alias est quod quo quia."},"gitRef":{"type":"string","example":"Officiis magni."},"githubRepo":{"type":"string","example":"Qui accusamus doloribus."},"isHotfix":{"type":"boolean","example":false},"isPushGCR":{"type":"boolean","example":true},"pipelineEngine":{"type":"string","example":"tekton","enum":["jenkins","tekton"]},"pluginGitRef":{"type":"string","example":"Explicabo qui veniam voluptates nisi."},"product":{"type":"string","example":"pd","enum":["tidb","enterprise-plugin","tikv","pd","tiflash","br","dumpling","tidb-lightning","ticdc","ticdc-newarch","dm","tidb-binlog","tidb-tools","ng-monitoring","tidb-dashboard","drainer","pump",""]},"productBaseImg":{"type":"string","example":"Quae nihil eos et ab et sed."},"productDockerfile":{"type":"string","example":"Minima quo nulla."},"targetImg":{"type":"string","example":"Vel quas non omnis aut."},"version":{"type":"string","example":"Laboriosam reprehenderit et."}},"example":{"buildEnv":"Qui voluptas.","builderImg":"Et officiis.","edition":"Quam molestiae non.","features":"Et voluptas consequatur recusandae voluptatibus.","gitHash":"Quibusdam sapiente autem omnis qui autem aliquid.","gitRef":"Magni sed voluptates.","githubRepo":"Minima maiores rem.","isHotfix":false,"isPushGCR":false,"pipelineEngine":"Quos sint dicta totam cumque quidem.","pluginGitRef":"Debitis quisquam.","product":"Et velit magni mollitia dolor.","productBaseImg":"Doloribus necessitatibus rerum quo.","productDockerfile":"Sint itaque et sint minima quas earum.","targetImg":"Ea commodi et.","version":"Et assumenda."},"required":["buildEnv","builderImg","edition","features","gitHash","gitRef","githubRepo","isHotfix","isPushGCR","pipelineEngine","pluginGitRef","product","productBaseImg","productDockerfile","targetImg","version"]},"DevBuildStatus":{"type":"object","properties":{"buildReport":{"$ref":"#/components/schemas/BuildReport"},"errMsg":{"type":"string","example":"Velit distinctio."},"pipelineBuildID":{"type":"integer","example":6563606615849146876,"format":"int64"},"pipelineEndAt":{"type":"string","example":"In maxime nisi et."},"pipelineStartAt":{"type":"string","example":"Inventore omnis dolores qui assumenda amet."},"pipelineViewURL":{"type":"string","example":"Distinctio numquam placeat consequatur repellendus."},"pipelineViewURLs":{"type":"array","items":{"type":"string","example":"Inventore sed cupiditate possimus qui recusandae."},"example":["Sapiente ratione dolor eum culpa.","Enim dicta.","Rerum aut.","Blanditiis aut rem beatae."]},"status":{"type":"string","example":"FAILURE","enum":["PENDING","PROCESSING","ABORTED","SUCCESS","FAILURE","ERROR"]},"tektonStatus":{"$ref":"#/components/schemas/TektonStatus"}},"example":{"buildReport":{"binaries":[{"component":"Numquam natus eos laboriosam quasi et.","ociFile":{"file":"Delectus architecto voluptatum molestiae.","repo":"Ea aut soluta.","tag":"Aut sed dignissimos voluptas voluptas."},"platform":"Modi autem et aut nemo.","sha256OciFile":{"file":"Delectus architecto voluptatum molestiae.","repo":"Ea aut soluta.","tag":"Aut sed dignissimos voluptas voluptas."},"sha256URL":"Nihil nisi ut.","url":"Natus voluptatibus fuga voluptatem sunt animi modi."},{"component":"Numquam natus eos laboriosam quasi et.","ociFile":{"file":"Delectus architecto voluptatum molestiae.","repo":"Ea aut soluta.","tag":"Aut sed dignissimos voluptas voluptas."},"platform":"Modi autem et aut nemo.","sha256OciFile":{"file":"Delectus architecto voluptatum molestiae.","repo":"Ea aut soluta.","tag":"Aut sed dignissimos voluptas voluptas."},"sha256URL":"Nihil nisi ut.","url":"Natus voluptatibus fuga voluptatem sunt animi modi."},{"component":"Numquam natus eos laboriosam quasi et.","ociFile":{"file":"Delectus architecto voluptatum molestiae.","repo":"Ea aut soluta.","tag":"Aut sed dignissimos voluptas voluptas."},"platform":"Modi autem et aut nemo.","sha256OciFile":{"file":"Delectus architecto voluptatum molestiae.","repo":"Ea aut soluta.","tag":"Aut sed dignissimos voluptas voluptas."},"sha256URL":"Nihil nisi ut.","url":"Natus voluptatibus fuga voluptatem sunt animi modi."},{"component":"Numquam natus eos laboriosam quasi et.","ociFile":{"file":"Delectus architecto voluptatum molestiae.","repo":"Ea aut soluta.","tag":"Aut sed dignissimos voluptas voluptas."},"platform":"Modi autem et aut nemo.","sha256OciFile":{"file":"Delectus architecto voluptatum molestiae.","repo":"Ea aut soluta.","tag":"Aut sed dignissimos voluptas voluptas."},"sha256URL":"Nihil nisi ut.","url":"Natus voluptatibus fuga voluptatem sunt animi modi."}],"gitHash":"Porro eos vel et qui inventore adipisci.","images":[{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."}],"pluginGitHash":"Eveniet sint eligendi eos corporis voluptatum ipsa.","printedVersion":"Molestiae quam id animi."},"errMsg":"Et dolorem.","pipelineBuildID":6413898906962383000,"pipelineEndAt":"Similique occaecati dignissimos accusantium impedit quia.","pipelineStartAt":"Tempore dolores dolores animi nobis voluptas esse.","pipelineViewURL":"Eaque corrupti qui consequatur quos.","pipelineViewURLs":["Non earum.","Molestiae dolorum aut magnam ipsam maiores et."],"status":"In non assumenda doloremque ullam aut ut.","tektonStatus":{"pipelines":[{"endAt":"Deserunt maiores saepe quo nisi ea.","gitHash":"Tenetur quo voluptas in ut.","images":[{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."}],"name":"Ut deleniti rerum dolorem excepturi.","ociArtifacts":[{"files":["Laborum saepe dolor tempora.","Vitae quibusdam non impedit suscipit.","Voluptas voluptatibus accusantium culpa unde.","Tenetur aut repudiandae."],"repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},{"files":["Laborum saepe dolor tempora.","Vitae quibusdam non impedit suscipit.","Voluptas voluptatibus accusantium culpa unde.","Tenetur aut repudiandae."],"repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."}],"platform":"Nostrum illo laudantium aperiam numquam ratione est.","startAt":"Iste a totam debitis quo.","status":"In non assumenda doloremque ullam aut ut.","url":"Fugiat suscipit labore est voluptas odit nemo."},{"endAt":"Deserunt maiores saepe quo nisi ea.","gitHash":"Tenetur quo voluptas in ut.","images":[{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."}],"name":"Ut deleniti rerum dolorem excepturi.","ociArtifacts":[{"files":["Laborum saepe dolor tempora.","Vitae quibusdam non impedit suscipit.","Voluptas voluptatibus accusantium culpa unde.","Tenetur aut repudiandae."],"repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},{"files":["Laborum saepe dolor tempora.","Vitae quibusdam non impedit suscipit.","Voluptas voluptatibus accusantium culpa unde.","Tenetur aut repudiandae."],"repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."}],"platform":"Nostrum illo laudantium aperiam numquam ratione est.","startAt":"Iste a totam debitis quo.","status":"In non assumenda doloremque ullam aut ut.","url":"Fugiat suscipit labore est voluptas odit nemo."}]}},"required":["buildReport","errMsg","pipelineBuildID","pipelineEndAt","pipelineStartAt","pipelineViewURL","pipelineViewURLs","status","tektonStatus"]},"HTTPError":{"type":"object","properties":{"code":{"type":"integer","example":9020693220300857510,"format":"int64"},"message":{"type":"string","example":"In animi ut mollitia."}},"example":{"code":8193984659833759108,"message":"Fuga sit harum."},"required":["code","message"]},"ImageArtifact":{"type":"object","properties":{"platform":{"type":"string","example":"Sed odit commodi unde repellendus quisquam est."},"url":{"type":"string","example":"Odit asperiores sed qui autem voluptas."}},"example":{"platform":"Voluptas pariatur nobis reiciendis dolorum sint.","url":"Laboriosam ea modi."},"required":["platform","url"]},"ImageSyncRequest":{"type":"object","properties":{"source":{"type":"string","example":"Facere ex cum."},"target":{"type":"string","example":"Aut quisquam et temporibus."}},"example":{"source":"Esse consequuntur omnis quo provident.","target":"Sed est nihil non quia quia."},"required":["source","target"]},"OciArtifact":{"type":"object","properties":{"files":{"type":"array","items":{"type":"string","example":"Sint autem natus molestiae quia."},"example":["Quia accusantium.","Ipsum nihil eum et beatae minima molestiae.","Odit qui facere inventore nemo delectus sunt."]},"repo":{"type":"string","example":"Et repellat quis necessitatibus et quos."},"tag":{"type":"string","example":"Omnis veritatis assumenda quo dolores enim."}},"example":{"files":["Accusantium voluptatum aut omnis alias.","Esse et impedit.","Ut recusandae ullam neque autem accusantium.","Totam vel sint explicabo."],"repo":"Dolor dolor accusantium explicabo.","tag":"Praesentium et dicta."},"required":["files","repo","tag"]},"OciFile":{"type":"object","properties":{"file":{"type":"string","example":"Voluptatibus illo est sed qui dolorem."},"repo":{"type":"string","example":"Qui magni dolor est eligendi."},"tag":{"type":"string","example":"Culpa libero dignissimos occaecati."}},"example":{"file":"Natus et quaerat.","repo":"Deserunt suscipit nesciunt et porro aliquid.","tag":"Ut odio doloribus et eum voluptas enim."},"required":["file","repo","tag"]},"SyncImageRequestBody":{"type":"object","properties":{"ImageSyncRequest":{"$ref":"#/components/schemas/ImageSyncRequest"}},"example":{"ImageSyncRequest":{"source":"Culpa possimus.","target":"Perferendis nisi non quia debitis."}},"required":["ImageSyncRequest"]},"TektonPipeline":{"type":"object","properties":{"endAt":{"type":"string","example":"Qui iste ratione quisquam dolore dolores fuga."},"gitHash":{"type":"string","example":"Perferendis enim eius enim."},"images":{"type":"array","items":{"$ref":"#/components/schemas/ImageArtifact"},"example":[{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."}]},"name":{"type":"string","example":"Delectus voluptas accusantium quis."},"ociArtifacts":{"type":"array","items":{"$ref":"#/components/schemas/OciArtifact"},"example":[{"files":["Laborum saepe dolor tempora.","Vitae quibusdam non impedit suscipit.","Voluptas voluptatibus accusantium culpa unde.","Tenetur aut repudiandae."],"repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},{"files":["Laborum saepe dolor tempora.","Vitae quibusdam non impedit suscipit.","Voluptas voluptatibus accusantium culpa unde.","Tenetur aut repudiandae."],"repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."}]},"platform":{"type":"string","example":"Eveniet non accusantium voluptatem impedit."},"startAt":{"type":"string","example":"Omnis at doloribus non."},"status":{"type":"string","example":"SUCCESS","enum":["PENDING","PROCESSING","ABORTED","SUCCESS","FAILURE","ERROR"]},"url":{"type":"string","example":"Nemo quibusdam sunt voluptatem eveniet impedit."}},"example":{"endAt":"Voluptatem qui vero.","gitHash":"Ex quibusdam aut.","images":[{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."}],"name":"Asperiores repellendus omnis itaque dicta.","ociArtifacts":[{"files":["Laborum saepe dolor tempora.","Vitae quibusdam non impedit suscipit.","Voluptas voluptatibus accusantium culpa unde.","Tenetur aut repudiandae."],"repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},{"files":["Laborum saepe dolor tempora.","Vitae quibusdam non impedit suscipit.","Voluptas voluptatibus accusantium culpa unde.","Tenetur aut repudiandae."],"repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."}],"platform":"Deleniti illo pariatur.","startAt":"Ut cum minima labore omnis eos deserunt.","status":"In non assumenda doloremque ullam aut ut.","url":"Velit eaque quia et qui."},"required":["endAt","gitHash","images","name","ociArtifacts","platform","startAt","status","url"]},"TektonStatus":{"type":"object","properties":{"pipelines":{"type":"array","items":{"$ref":"#/components/schemas/TektonPipeline"},"example":[{"endAt":"Deserunt maiores saepe quo nisi ea.","gitHash":"Tenetur quo voluptas in ut.","images":[{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."}],"name":"Ut deleniti rerum dolorem excepturi.","ociArtifacts":[{"files":["Laborum saepe dolor tempora.","Vitae quibusdam non impedit suscipit.","Voluptas voluptatibus accusantium culpa unde.","Tenetur aut repudiandae."],"repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},{"files":["Laborum saepe dolor tempora.","Vitae quibusdam non impedit suscipit.","Voluptas voluptatibus accusantium culpa unde.","Tenetur aut repudiandae."],"repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."}],"platform":"Nostrum illo laudantium aperiam numquam ratione est.","startAt":"Iste a totam debitis quo.","status":"In non assumenda doloremque ullam aut ut.","url":"Fugiat suscipit labore est voluptas odit nemo."},{"endAt":"Deserunt maiores saepe quo nisi ea.","gitHash":"Tenetur quo voluptas in ut.","images":[{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."}],"name":"Ut deleniti rerum dolorem excepturi.","ociArtifacts":[{"files":["Laborum saepe dolor tempora.","Vitae quibusdam non impedit suscipit.","Voluptas voluptatibus accusantium culpa unde.","Tenetur aut repudiandae."],"repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},{"files":["Laborum saepe dolor tempora.","Vitae quibusdam non impedit suscipit.","Voluptas voluptatibus accusantium culpa unde.","Tenetur aut repudiandae."],"repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."}],"platform":"Nostrum illo laudantium aperiam numquam ratione est.","startAt":"Iste a totam debitis quo.","status":"In non assumenda doloremque ullam aut ut.","url":"Fugiat suscipit labore est voluptas odit nemo."}]}},"example":{"pipelines":[{"endAt":"Deserunt maiores saepe quo nisi ea.","gitHash":"Tenetur quo voluptas in ut.","images":[{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."}],"name":"Ut deleniti rerum dolorem excepturi.","ociArtifacts":[{"files":["Laborum saepe dolor tempora.","Vitae quibusdam non impedit suscipit.","Voluptas voluptatibus accusantium culpa unde.","Tenetur aut repudiandae."],"repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},{"files":["Laborum saepe dolor tempora.","Vitae quibusdam non impedit suscipit.","Voluptas voluptatibus accusantium culpa unde.","Tenetur aut repudiandae."],"repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."}],"platform":"Nostrum illo laudantium aperiam numquam ratione est.","startAt":"Iste a totam debitis quo.","status":"In non assumenda doloremque ullam aut ut.","url":"Fugiat suscipit labore est voluptas odit nemo."},{"endAt":"Deserunt maiores saepe quo nisi ea.","gitHash":"Tenetur quo voluptas in ut.","images":[{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."},{"platform":"Quo reprehenderit mollitia.","url":"Iste ut voluptas quia sed."}],"name":"Ut deleniti rerum dolorem excepturi.","ociArtifacts":[{"files":["Laborum saepe dolor tempora.","Vitae quibusdam non impedit suscipit.","Voluptas voluptatibus accusantium culpa unde.","Tenetur aut repudiandae."],"repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},{"files":["Laborum saepe dolor tempora.","Vitae quibusdam non impedit suscipit.","Voluptas voluptatibus accusantium culpa unde.","Tenetur aut repudiandae."],"repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."}],"platform":"Nostrum illo laudantium aperiam numquam ratione est.","startAt":"Iste a totam debitis quo.","status":"In non assumenda doloremque ullam aut ut.","url":"Fugiat suscipit labore est voluptas odit nemo."}]},"required":["pipelines"]},"UpdateRequestBody":{"type":"object","properties":{"DevBuild":{"$ref":"#/components/schemas/DevBuild"}},"example":{"DevBuild":{"id":8670468037696883245,"meta":{"createdAt":"Nihil soluta aut adipisci est.","createdBy":"Qui necessitatibus possimus ab quos facere.","updatedAt":"Repudiandae voluptatem rem earum aut at nulla."},"spec":{"buildEnv":"Natus totam esse maxime aliquid sunt.","builderImg":"At illo voluptas dolor.","edition":"community","features":"Beatae sunt nesciunt amet autem.","gitHash":"Sit accusamus aspernatur aut laboriosam.","gitRef":"Perspiciatis perspiciatis atque inventore id.","githubRepo":"Ut libero magnam sapiente dolores qui.","isHotfix":false,"isPushGCR":true,"pipelineEngine":"jenkins","pluginGitRef":"Deleniti at consequatur doloribus culpa velit et.","product":"pd","productBaseImg":"Voluptas hic.","productDockerfile":"Ut eum iusto id officiis.","targetImg":"Laboriosam ut perspiciatis porro.","version":"Distinctio aliquid eum."},"status":{"buildReport":{"binaries":[{"component":"Neque velit maiores culpa rerum accusamus.","ociFile":{"file":"Consectetur et officia necessitatibus et necessitatibus sint.","repo":"Enim minima et vel qui nulla qui.","tag":"Maiores aut rerum."},"platform":"Similique nesciunt dolorum quisquam qui odio.","sha256OciFile":{"file":"Consectetur et officia necessitatibus et necessitatibus sint.","repo":"Enim minima et vel qui nulla qui.","tag":"Maiores aut rerum."},"sha256URL":"Praesentium facilis corrupti ullam impedit incidunt.","url":"Aut quas pariatur qui."},{"component":"Neque velit maiores culpa rerum accusamus.","ociFile":{"file":"Consectetur et officia necessitatibus et necessitatibus sint.","repo":"Enim minima et vel qui nulla qui.","tag":"Maiores aut rerum."},"platform":"Similique nesciunt dolorum quisquam qui odio.","sha256OciFile":{"file":"Consectetur et officia necessitatibus et necessitatibus sint.","repo":"Enim minima et vel qui nulla qui.","tag":"Maiores aut rerum."},"sha256URL":"Praesentium facilis corrupti ullam impedit incidunt.","url":"Aut quas pariatur qui."}],"gitHash":"Harum repellat qui eos est velit.","images":[{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."}],"pluginGitHash":"Assumenda itaque necessitatibus eligendi qui qui illum.","printedVersion":"Aliquam quia eum quia id qui."},"errMsg":"Fugiat sint aut minus aperiam quod.","pipelineBuildID":6941289464511149,"pipelineEndAt":"Deleniti natus reprehenderit nihil animi hic fugiat.","pipelineStartAt":"Accusamus velit ipsam.","pipelineViewURL":"Enim harum dolorum.","pipelineViewURLs":["Illo blanditiis totam in.","Dignissimos tempore aut."],"status":"PENDING","tektonStatus":{"pipelines":[{"endAt":"Excepturi ipsa veniam aspernatur quae.","gitHash":"Voluptatem enim aliquam.","images":[{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."}],"name":"Dolores id quibusdam impedit corrupti veritatis.","ociArtifacts":[{"files":["Temporibus totam quae debitis odio hic.","Atque eos consequatur laudantium.","Vitae iste.","Odit blanditiis magni eaque quas eos voluptatem."],"repo":"Quam necessitatibus optio ipsam autem vel veniam.","tag":"Provident qui."},{"files":["Temporibus totam quae debitis odio hic.","Atque eos consequatur laudantium.","Vitae iste.","Odit blanditiis magni eaque quas eos voluptatem."],"repo":"Quam necessitatibus optio ipsam autem vel veniam.","tag":"Provident qui."},{"files":["Temporibus totam quae debitis odio hic.","Atque eos consequatur laudantium.","Vitae iste.","Odit blanditiis magni eaque quas eos voluptatem."],"repo":"Quam necessitatibus optio ipsam autem vel veniam.","tag":"Provident qui."}],"platform":"Quis quia vitae non ratione.","startAt":"Minus sapiente doloremque rerum quasi.","status":"PROCESSING","url":"Saepe rerum tenetur vero eveniet."},{"endAt":"Excepturi ipsa veniam aspernatur quae.","gitHash":"Voluptatem enim aliquam.","images":[{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."}],"name":"Dolores id quibusdam impedit corrupti veritatis.","ociArtifacts":[{"files":["Temporibus totam quae debitis odio hic.","Atque eos consequatur laudantium.","Vitae iste.","Odit blanditiis magni eaque quas eos voluptatem."],"repo":"Quam necessitatibus optio ipsam autem vel veniam.","tag":"Provident qui."},{"files":["Temporibus totam quae debitis odio hic.","Atque eos consequatur laudantium.","Vitae iste.","Odit blanditiis magni eaque quas eos voluptatem."],"repo":"Quam necessitatibus optio ipsam autem vel veniam.","tag":"Provident qui."},{"files":["Temporibus totam quae debitis odio hic.","Atque eos consequatur laudantium.","Vitae iste.","Odit blanditiis magni eaque quas eos voluptatem."],"repo":"Quam necessitatibus optio ipsam autem vel veniam.","tag":"Provident qui."}],"platform":"Quis quia vitae non ratione.","startAt":"Minus sapiente doloremque rerum quasi.","status":"PROCESSING","url":"Saepe rerum tenetur vero eveniet."},{"endAt":"Excepturi ipsa veniam aspernatur quae.","gitHash":"Voluptatem enim aliquam.","images":[{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."},{"platform":"Ut rerum dolorum aspernatur necessitatibus.","url":"Laborum iste nobis omnis quae."}],"name":"Dolores id quibusdam impedit corrupti veritatis.","ociArtifacts":[{"files":["Temporibus totam quae debitis odio hic.","Atque eos consequatur laudantium.","Vitae iste.","Odit blanditiis magni eaque quas eos voluptatem."],"repo":"Quam necessitatibus optio ipsam autem vel veniam.","tag":"Provident qui."},{"files":["Temporibus totam quae debitis odio hic.","Atque eos consequatur laudantium.","Vitae iste.","Odit blanditiis magni eaque quas eos voluptatem."],"repo":"Quam necessitatibus optio ipsam autem vel veniam.","tag":"Provident qui."},{"files":["Temporibus totam quae debitis odio hic.","Atque eos consequatur laudantium.","Vitae iste.","Odit blanditiis magni eaque quas eos voluptatem."],"repo":"Quam necessitatibus optio ipsam autem vel veniam.","tag":"Provident qui."}],"platform":"Quis quia vitae non ratione.","startAt":"Minus sapiente doloremque rerum quasi.","status":"PROCESSING","url":"Saepe rerum tenetur vero eveniet."}]}}}},"required":["DevBuild"]}}},"tags":[{"name":"artifact","description":"The artifact service provides operations to manage artifacts."},{"name":"devbuild","description":"The devbuild service provides operations to manage dev builds."}]} \ No newline at end of file diff --git a/experiments/tibuild-v2/gen/http/openapi3.yaml b/experiments/tibuild-v2/gen/http/openapi3.yaml deleted file mode 100644 index 88abe198..00000000 --- a/experiments/tibuild-v2/gen/http/openapi3.yaml +++ /dev/null @@ -1,3149 +0,0 @@ -openapi: 3.0.3 -info: - title: TiBuild API - description: TiBuild API - contact: - name: Flare Zuo - url: https://github.com/wuhuizuo - email: wuhui.zuo@pingcap.com - version: 2.0.0 -servers: - - url: http://localhost:8080 - - url: http://0.0.0.0:8080 -paths: - /api/artifact/sync-image: - post: - tags: - - artifact - summary: syncImage artifact - description: Sync hotfix image to dockerhub - operationId: artifact#syncImage - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/SyncImageRequestBody' - example: - ImageSyncRequest: - source: Culpa possimus. - target: Perferendis nisi non quia debitis. - responses: - "200": - description: OK response. - content: - application/json: - schema: - $ref: '#/components/schemas/ImageSyncRequest' - example: - source: Assumenda suscipit sint aut aut. - target: Et veniam sint repellendus qui doloribus. - "400": - description: 'BadRequest: Bad Request' - content: - application/json: - schema: - $ref: '#/components/schemas/HTTPError' - example: - code: 8187935244640291960 - message: Ut est. - "500": - description: 'InternalServerError: Internal Server Error' - content: - application/json: - schema: - $ref: '#/components/schemas/HTTPError' - example: - code: 1632181691891530920 - message: Velit cum aperiam architecto voluptas. - /api/devbuilds: - get: - tags: - - devbuild - summary: list devbuild - description: List devbuild - operationId: devbuild#list - parameters: - - name: size - in: query - description: The size limit of items - allowEmptyValue: true - schema: - type: integer - description: The size limit of items - default: 10 - example: 2223507446432947422 - format: int64 - example: 6041896995451658340 - - name: offset - in: query - description: The start position of items - allowEmptyValue: true - schema: - type: integer - description: The start position of items - default: 0 - example: 2446145646476286677 - format: int64 - example: 3939933697158613212 - - name: hotfix - in: query - description: Filter hotfix - allowEmptyValue: true - schema: - type: boolean - description: Filter hotfix - example: false - example: true - - name: createdBy - in: query - description: Filter created by - allowEmptyValue: true - schema: - type: string - description: Filter created by - example: Quos odio fuga culpa voluptatem tempora explicabo. - example: A quis autem. - responses: - "200": - description: OK response. - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/DevBuild' - example: - - id: 81949526081673625 - meta: - createdAt: Voluptatum voluptatum qui. - createdBy: Eum sit doloremque et rem vel sunt. - updatedAt: Quae ex ipsam eveniet error. - spec: - buildEnv: Dolorem suscipit ut. - builderImg: Minus itaque qui necessitatibus et voluptatum sint. - edition: community - features: Dolorem cupiditate. - gitHash: Ut officiis eum animi eligendi inventore totam. - gitRef: Eum sed consectetur ea. - githubRepo: Expedita officia molestiae eos. - isHotfix: true - isPushGCR: false - pipelineEngine: jenkins - pluginGitRef: Est et. - product: enterprise-plugin - productBaseImg: Est aspernatur et vel dignissimos non corrupti. - productDockerfile: Totam quod numquam ea cum. - targetImg: Velit tempora necessitatibus asperiores. - version: Sunt deserunt ut quod ut. - status: - buildReport: - binaries: - - component: Est consequatur quo voluptatem dolore. - ociFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - platform: Totam harum. - sha256OciFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - sha256URL: Non est enim sit provident. - url: Provident rerum omnis. - - component: Est consequatur quo voluptatem dolore. - ociFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - platform: Totam harum. - sha256OciFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - sha256URL: Non est enim sit provident. - url: Provident rerum omnis. - - component: Est consequatur quo voluptatem dolore. - ociFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - platform: Totam harum. - sha256OciFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - sha256URL: Non est enim sit provident. - url: Provident rerum omnis. - - component: Est consequatur quo voluptatem dolore. - ociFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - platform: Totam harum. - sha256OciFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - sha256URL: Non est enim sit provident. - url: Provident rerum omnis. - gitHash: Voluptatem ut excepturi aut molestias. - images: - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - pluginGitHash: Sed quasi aut. - printedVersion: Molestias aspernatur odio. - errMsg: Asperiores dolorum. - pipelineBuildID: 2976244863257590590 - pipelineEndAt: Et qui consequatur et. - pipelineStartAt: Dignissimos et nisi enim temporibus laboriosam quasi. - pipelineViewURL: Repellat magnam est ea et explicabo sunt. - pipelineViewURLs: - - Explicabo quos assumenda. - - Mollitia tempore. - status: PENDING - tektonStatus: - pipelines: - - endAt: Voluptas quibusdam fugiat et. - gitHash: Voluptatibus voluptas molestiae ut soluta libero. - images: - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - name: Enim illum ratione in dolor exercitationem fugit. - ociArtifacts: - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - platform: Aliquam animi amet dolorum aut qui. - startAt: Voluptatum perferendis. - status: PENDING - url: Dolores dignissimos quam. - - endAt: Voluptas quibusdam fugiat et. - gitHash: Voluptatibus voluptas molestiae ut soluta libero. - images: - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - name: Enim illum ratione in dolor exercitationem fugit. - ociArtifacts: - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - platform: Aliquam animi amet dolorum aut qui. - startAt: Voluptatum perferendis. - status: PENDING - url: Dolores dignissimos quam. - - id: 81949526081673625 - meta: - createdAt: Voluptatum voluptatum qui. - createdBy: Eum sit doloremque et rem vel sunt. - updatedAt: Quae ex ipsam eveniet error. - spec: - buildEnv: Dolorem suscipit ut. - builderImg: Minus itaque qui necessitatibus et voluptatum sint. - edition: community - features: Dolorem cupiditate. - gitHash: Ut officiis eum animi eligendi inventore totam. - gitRef: Eum sed consectetur ea. - githubRepo: Expedita officia molestiae eos. - isHotfix: true - isPushGCR: false - pipelineEngine: jenkins - pluginGitRef: Est et. - product: enterprise-plugin - productBaseImg: Est aspernatur et vel dignissimos non corrupti. - productDockerfile: Totam quod numquam ea cum. - targetImg: Velit tempora necessitatibus asperiores. - version: Sunt deserunt ut quod ut. - status: - buildReport: - binaries: - - component: Est consequatur quo voluptatem dolore. - ociFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - platform: Totam harum. - sha256OciFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - sha256URL: Non est enim sit provident. - url: Provident rerum omnis. - - component: Est consequatur quo voluptatem dolore. - ociFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - platform: Totam harum. - sha256OciFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - sha256URL: Non est enim sit provident. - url: Provident rerum omnis. - - component: Est consequatur quo voluptatem dolore. - ociFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - platform: Totam harum. - sha256OciFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - sha256URL: Non est enim sit provident. - url: Provident rerum omnis. - - component: Est consequatur quo voluptatem dolore. - ociFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - platform: Totam harum. - sha256OciFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - sha256URL: Non est enim sit provident. - url: Provident rerum omnis. - gitHash: Voluptatem ut excepturi aut molestias. - images: - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - pluginGitHash: Sed quasi aut. - printedVersion: Molestias aspernatur odio. - errMsg: Asperiores dolorum. - pipelineBuildID: 2976244863257590590 - pipelineEndAt: Et qui consequatur et. - pipelineStartAt: Dignissimos et nisi enim temporibus laboriosam quasi. - pipelineViewURL: Repellat magnam est ea et explicabo sunt. - pipelineViewURLs: - - Explicabo quos assumenda. - - Mollitia tempore. - status: PENDING - tektonStatus: - pipelines: - - endAt: Voluptas quibusdam fugiat et. - gitHash: Voluptatibus voluptas molestiae ut soluta libero. - images: - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - name: Enim illum ratione in dolor exercitationem fugit. - ociArtifacts: - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - platform: Aliquam animi amet dolorum aut qui. - startAt: Voluptatum perferendis. - status: PENDING - url: Dolores dignissimos quam. - - endAt: Voluptas quibusdam fugiat et. - gitHash: Voluptatibus voluptas molestiae ut soluta libero. - images: - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - name: Enim illum ratione in dolor exercitationem fugit. - ociArtifacts: - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - platform: Aliquam animi amet dolorum aut qui. - startAt: Voluptatum perferendis. - status: PENDING - url: Dolores dignissimos quam. - example: - - id: 81949526081673625 - meta: - createdAt: Voluptatum voluptatum qui. - createdBy: Eum sit doloremque et rem vel sunt. - updatedAt: Quae ex ipsam eveniet error. - spec: - buildEnv: Dolorem suscipit ut. - builderImg: Minus itaque qui necessitatibus et voluptatum sint. - edition: community - features: Dolorem cupiditate. - gitHash: Ut officiis eum animi eligendi inventore totam. - gitRef: Eum sed consectetur ea. - githubRepo: Expedita officia molestiae eos. - isHotfix: true - isPushGCR: false - pipelineEngine: jenkins - pluginGitRef: Est et. - product: enterprise-plugin - productBaseImg: Est aspernatur et vel dignissimos non corrupti. - productDockerfile: Totam quod numquam ea cum. - targetImg: Velit tempora necessitatibus asperiores. - version: Sunt deserunt ut quod ut. - status: - buildReport: - binaries: - - component: Est consequatur quo voluptatem dolore. - ociFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - platform: Totam harum. - sha256OciFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - sha256URL: Non est enim sit provident. - url: Provident rerum omnis. - - component: Est consequatur quo voluptatem dolore. - ociFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - platform: Totam harum. - sha256OciFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - sha256URL: Non est enim sit provident. - url: Provident rerum omnis. - - component: Est consequatur quo voluptatem dolore. - ociFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - platform: Totam harum. - sha256OciFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - sha256URL: Non est enim sit provident. - url: Provident rerum omnis. - - component: Est consequatur quo voluptatem dolore. - ociFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - platform: Totam harum. - sha256OciFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - sha256URL: Non est enim sit provident. - url: Provident rerum omnis. - gitHash: Voluptatem ut excepturi aut molestias. - images: - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - pluginGitHash: Sed quasi aut. - printedVersion: Molestias aspernatur odio. - errMsg: Asperiores dolorum. - pipelineBuildID: 2976244863257590590 - pipelineEndAt: Et qui consequatur et. - pipelineStartAt: Dignissimos et nisi enim temporibus laboriosam quasi. - pipelineViewURL: Repellat magnam est ea et explicabo sunt. - pipelineViewURLs: - - Explicabo quos assumenda. - - Mollitia tempore. - status: PENDING - tektonStatus: - pipelines: - - endAt: Voluptas quibusdam fugiat et. - gitHash: Voluptatibus voluptas molestiae ut soluta libero. - images: - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - name: Enim illum ratione in dolor exercitationem fugit. - ociArtifacts: - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - platform: Aliquam animi amet dolorum aut qui. - startAt: Voluptatum perferendis. - status: PENDING - url: Dolores dignissimos quam. - - endAt: Voluptas quibusdam fugiat et. - gitHash: Voluptatibus voluptas molestiae ut soluta libero. - images: - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - name: Enim illum ratione in dolor exercitationem fugit. - ociArtifacts: - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - platform: Aliquam animi amet dolorum aut qui. - startAt: Voluptatum perferendis. - status: PENDING - url: Dolores dignissimos quam. - - id: 81949526081673625 - meta: - createdAt: Voluptatum voluptatum qui. - createdBy: Eum sit doloremque et rem vel sunt. - updatedAt: Quae ex ipsam eveniet error. - spec: - buildEnv: Dolorem suscipit ut. - builderImg: Minus itaque qui necessitatibus et voluptatum sint. - edition: community - features: Dolorem cupiditate. - gitHash: Ut officiis eum animi eligendi inventore totam. - gitRef: Eum sed consectetur ea. - githubRepo: Expedita officia molestiae eos. - isHotfix: true - isPushGCR: false - pipelineEngine: jenkins - pluginGitRef: Est et. - product: enterprise-plugin - productBaseImg: Est aspernatur et vel dignissimos non corrupti. - productDockerfile: Totam quod numquam ea cum. - targetImg: Velit tempora necessitatibus asperiores. - version: Sunt deserunt ut quod ut. - status: - buildReport: - binaries: - - component: Est consequatur quo voluptatem dolore. - ociFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - platform: Totam harum. - sha256OciFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - sha256URL: Non est enim sit provident. - url: Provident rerum omnis. - - component: Est consequatur quo voluptatem dolore. - ociFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - platform: Totam harum. - sha256OciFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - sha256URL: Non est enim sit provident. - url: Provident rerum omnis. - - component: Est consequatur quo voluptatem dolore. - ociFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - platform: Totam harum. - sha256OciFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - sha256URL: Non est enim sit provident. - url: Provident rerum omnis. - - component: Est consequatur quo voluptatem dolore. - ociFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - platform: Totam harum. - sha256OciFile: - file: Et quis doloribus. - repo: Et consequuntur autem voluptatem temporibus eos. - tag: Voluptatem dolores rerum rerum dicta. - sha256URL: Non est enim sit provident. - url: Provident rerum omnis. - gitHash: Voluptatem ut excepturi aut molestias. - images: - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - pluginGitHash: Sed quasi aut. - printedVersion: Molestias aspernatur odio. - errMsg: Asperiores dolorum. - pipelineBuildID: 2976244863257590590 - pipelineEndAt: Et qui consequatur et. - pipelineStartAt: Dignissimos et nisi enim temporibus laboriosam quasi. - pipelineViewURL: Repellat magnam est ea et explicabo sunt. - pipelineViewURLs: - - Explicabo quos assumenda. - - Mollitia tempore. - status: PENDING - tektonStatus: - pipelines: - - endAt: Voluptas quibusdam fugiat et. - gitHash: Voluptatibus voluptas molestiae ut soluta libero. - images: - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - name: Enim illum ratione in dolor exercitationem fugit. - ociArtifacts: - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - platform: Aliquam animi amet dolorum aut qui. - startAt: Voluptatum perferendis. - status: PENDING - url: Dolores dignissimos quam. - - endAt: Voluptas quibusdam fugiat et. - gitHash: Voluptatibus voluptas molestiae ut soluta libero. - images: - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - - platform: Voluptatum commodi. - url: Temporibus sit enim dolorem voluptatem rem. - name: Enim illum ratione in dolor exercitationem fugit. - ociArtifacts: - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - - files: - - Temporibus voluptatem. - - Sit omnis. - - Et et. - repo: Quis similique a ipsum. - tag: Natus quisquam consequatur porro. - platform: Aliquam animi amet dolorum aut qui. - startAt: Voluptatum perferendis. - status: PENDING - url: Dolores dignissimos quam. - "400": - description: 'BadRequest: Bad Request' - content: - application/json: - schema: - $ref: '#/components/schemas/HTTPError' - example: - code: 6486387872566373554 - message: Et totam. - post: - tags: - - devbuild - summary: create devbuild - description: Create and trigger devbuild - operationId: devbuild#create - parameters: - - name: dryrun - in: query - description: Dry run - allowEmptyValue: true - schema: - type: boolean - description: Dry run - default: false - example: true - example: false - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/CreateRequestBody' - example: - createdBy: mortimer@herzogfranecki.biz - request: - buildEnv: Sunt nihil quia numquam suscipit corrupti qui. - builderImg: Sint ut blanditiis. - edition: enterprise - features: Aperiam natus in ut quae accusantium. - gitRef: Numquam possimus possimus ipsum rerum unde. - githubRepo: Numquam neque reiciendis quaerat. - isHotfix: true - isPushGCR: true - pipelineEngine: tekton - pluginGitRef: Laboriosam esse dicta. - product: tidb - productBaseImg: Tempore ut dolores. - productDockerfile: Iusto suscipit. - targetImg: Et aut error doloremque non itaque. - version: Voluptas quia reprehenderit fugit quo debitis numquam. - responses: - "200": - description: OK response. - content: - application/json: - schema: - $ref: '#/components/schemas/DevBuild' - example: - id: 6347095018216416956 - meta: - createdAt: A voluptatem pariatur. - createdBy: Sed laboriosam nostrum autem est. - updatedAt: Consequatur dolores provident unde non est quo. - spec: - buildEnv: Illum ex quia est autem est. - builderImg: Ratione consequatur quisquam et. - edition: community - features: Doloremque culpa omnis quia iure aut. - gitHash: Velit fugit nihil et quia cupiditate. - gitRef: Similique quis. - githubRepo: Possimus maxime et qui eius unde eos. - isHotfix: false - isPushGCR: false - pipelineEngine: tekton - pluginGitRef: Exercitationem molestias ut molestiae a id molestiae. - product: ticdc - productBaseImg: Assumenda ducimus ut architecto architecto quos. - productDockerfile: Non ut vel deserunt officiis quia et. - targetImg: Quae blanditiis. - version: Eaque eos nostrum dolore nulla est eos. - status: - buildReport: - binaries: - - component: Omnis neque aut illum possimus. - ociFile: - file: Quisquam illum. - repo: Ea consequuntur vero velit. - tag: A qui pariatur facere. - platform: Velit dolor expedita qui earum omnis. - sha256OciFile: - file: Quisquam illum. - repo: Ea consequuntur vero velit. - tag: A qui pariatur facere. - sha256URL: Natus accusantium nesciunt suscipit aperiam. - url: Illo et asperiores aperiam consequatur perferendis delectus. - - component: Omnis neque aut illum possimus. - ociFile: - file: Quisquam illum. - repo: Ea consequuntur vero velit. - tag: A qui pariatur facere. - platform: Velit dolor expedita qui earum omnis. - sha256OciFile: - file: Quisquam illum. - repo: Ea consequuntur vero velit. - tag: A qui pariatur facere. - sha256URL: Natus accusantium nesciunt suscipit aperiam. - url: Illo et asperiores aperiam consequatur perferendis delectus. - - component: Omnis neque aut illum possimus. - ociFile: - file: Quisquam illum. - repo: Ea consequuntur vero velit. - tag: A qui pariatur facere. - platform: Velit dolor expedita qui earum omnis. - sha256OciFile: - file: Quisquam illum. - repo: Ea consequuntur vero velit. - tag: A qui pariatur facere. - sha256URL: Natus accusantium nesciunt suscipit aperiam. - url: Illo et asperiores aperiam consequatur perferendis delectus. - - component: Omnis neque aut illum possimus. - ociFile: - file: Quisquam illum. - repo: Ea consequuntur vero velit. - tag: A qui pariatur facere. - platform: Velit dolor expedita qui earum omnis. - sha256OciFile: - file: Quisquam illum. - repo: Ea consequuntur vero velit. - tag: A qui pariatur facere. - sha256URL: Natus accusantium nesciunt suscipit aperiam. - url: Illo et asperiores aperiam consequatur perferendis delectus. - gitHash: Natus nulla. - images: - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - pluginGitHash: Ut inventore. - printedVersion: Enim ut itaque sit tenetur recusandae. - errMsg: Occaecati dolor voluptatum maiores a. - pipelineBuildID: 6890238418056580283 - pipelineEndAt: Corrupti et voluptatem voluptas provident. - pipelineStartAt: Ea non et. - pipelineViewURL: Debitis labore ut. - pipelineViewURLs: - - Dicta rerum a nihil quia quia. - - Sed ut. - status: FAILURE - tektonStatus: - pipelines: - - endAt: Possimus officiis. - gitHash: Qui suscipit. - images: - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - name: Voluptate asperiores atque voluptatem ea. - ociArtifacts: - - files: - - Sit praesentium sed illum esse. - - Ea debitis. - - Quia enim sint aut asperiores. - - Architecto enim molestiae dolorem est. - repo: Eum fugit ut cupiditate. - tag: Aut veniam consectetur temporibus debitis ab recusandae. - - files: - - Sit praesentium sed illum esse. - - Ea debitis. - - Quia enim sint aut asperiores. - - Architecto enim molestiae dolorem est. - repo: Eum fugit ut cupiditate. - tag: Aut veniam consectetur temporibus debitis ab recusandae. - platform: Qui at. - startAt: Fugit pariatur minima. - status: PENDING - url: Facilis illo occaecati facilis consequatur temporibus sit. - - endAt: Possimus officiis. - gitHash: Qui suscipit. - images: - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - name: Voluptate asperiores atque voluptatem ea. - ociArtifacts: - - files: - - Sit praesentium sed illum esse. - - Ea debitis. - - Quia enim sint aut asperiores. - - Architecto enim molestiae dolorem est. - repo: Eum fugit ut cupiditate. - tag: Aut veniam consectetur temporibus debitis ab recusandae. - - files: - - Sit praesentium sed illum esse. - - Ea debitis. - - Quia enim sint aut asperiores. - - Architecto enim molestiae dolorem est. - repo: Eum fugit ut cupiditate. - tag: Aut veniam consectetur temporibus debitis ab recusandae. - platform: Qui at. - startAt: Fugit pariatur minima. - status: PENDING - url: Facilis illo occaecati facilis consequatur temporibus sit. - "400": - description: 'BadRequest: Bad Request' - content: - application/json: - schema: - $ref: '#/components/schemas/HTTPError' - example: - code: 72546087042811667 - message: Et commodi culpa necessitatibus in eum. - "500": - description: 'InternalServerError: Internal Server Error' - content: - application/json: - schema: - $ref: '#/components/schemas/HTTPError' - example: - code: 2513694823749906997 - message: Voluptate doloribus architecto numquam est. - /api/devbuilds/{id}: - get: - tags: - - devbuild - summary: get devbuild - description: Get devbuild - operationId: devbuild#get - parameters: - - name: sync - in: query - description: Whether sync with jenkins - allowEmptyValue: true - schema: - type: boolean - description: Whether sync with jenkins - default: false - example: true - example: false - - name: id - in: path - description: ID of build - required: true - schema: - type: integer - description: ID of build - example: 1 - format: int64 - example: 1 - responses: - "200": - description: OK response. - content: - application/json: - schema: - $ref: '#/components/schemas/DevBuild' - example: - id: 827047275187766585 - meta: - createdAt: A voluptatem pariatur. - createdBy: Sed laboriosam nostrum autem est. - updatedAt: Consequatur dolores provident unde non est quo. - spec: - buildEnv: Illum ex quia est autem est. - builderImg: Ratione consequatur quisquam et. - edition: community - features: Doloremque culpa omnis quia iure aut. - gitHash: Velit fugit nihil et quia cupiditate. - gitRef: Similique quis. - githubRepo: Possimus maxime et qui eius unde eos. - isHotfix: false - isPushGCR: false - pipelineEngine: tekton - pluginGitRef: Exercitationem molestias ut molestiae a id molestiae. - product: ticdc - productBaseImg: Assumenda ducimus ut architecto architecto quos. - productDockerfile: Non ut vel deserunt officiis quia et. - targetImg: Quae blanditiis. - version: Eaque eos nostrum dolore nulla est eos. - status: - buildReport: - binaries: - - component: Omnis neque aut illum possimus. - ociFile: - file: Quisquam illum. - repo: Ea consequuntur vero velit. - tag: A qui pariatur facere. - platform: Velit dolor expedita qui earum omnis. - sha256OciFile: - file: Quisquam illum. - repo: Ea consequuntur vero velit. - tag: A qui pariatur facere. - sha256URL: Natus accusantium nesciunt suscipit aperiam. - url: Illo et asperiores aperiam consequatur perferendis delectus. - - component: Omnis neque aut illum possimus. - ociFile: - file: Quisquam illum. - repo: Ea consequuntur vero velit. - tag: A qui pariatur facere. - platform: Velit dolor expedita qui earum omnis. - sha256OciFile: - file: Quisquam illum. - repo: Ea consequuntur vero velit. - tag: A qui pariatur facere. - sha256URL: Natus accusantium nesciunt suscipit aperiam. - url: Illo et asperiores aperiam consequatur perferendis delectus. - - component: Omnis neque aut illum possimus. - ociFile: - file: Quisquam illum. - repo: Ea consequuntur vero velit. - tag: A qui pariatur facere. - platform: Velit dolor expedita qui earum omnis. - sha256OciFile: - file: Quisquam illum. - repo: Ea consequuntur vero velit. - tag: A qui pariatur facere. - sha256URL: Natus accusantium nesciunt suscipit aperiam. - url: Illo et asperiores aperiam consequatur perferendis delectus. - - component: Omnis neque aut illum possimus. - ociFile: - file: Quisquam illum. - repo: Ea consequuntur vero velit. - tag: A qui pariatur facere. - platform: Velit dolor expedita qui earum omnis. - sha256OciFile: - file: Quisquam illum. - repo: Ea consequuntur vero velit. - tag: A qui pariatur facere. - sha256URL: Natus accusantium nesciunt suscipit aperiam. - url: Illo et asperiores aperiam consequatur perferendis delectus. - gitHash: Natus nulla. - images: - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - pluginGitHash: Ut inventore. - printedVersion: Enim ut itaque sit tenetur recusandae. - errMsg: Occaecati dolor voluptatum maiores a. - pipelineBuildID: 6890238418056580283 - pipelineEndAt: Corrupti et voluptatem voluptas provident. - pipelineStartAt: Ea non et. - pipelineViewURL: Debitis labore ut. - pipelineViewURLs: - - Dicta rerum a nihil quia quia. - - Sed ut. - status: FAILURE - tektonStatus: - pipelines: - - endAt: Possimus officiis. - gitHash: Qui suscipit. - images: - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - name: Voluptate asperiores atque voluptatem ea. - ociArtifacts: - - files: - - Sit praesentium sed illum esse. - - Ea debitis. - - Quia enim sint aut asperiores. - - Architecto enim molestiae dolorem est. - repo: Eum fugit ut cupiditate. - tag: Aut veniam consectetur temporibus debitis ab recusandae. - - files: - - Sit praesentium sed illum esse. - - Ea debitis. - - Quia enim sint aut asperiores. - - Architecto enim molestiae dolorem est. - repo: Eum fugit ut cupiditate. - tag: Aut veniam consectetur temporibus debitis ab recusandae. - platform: Qui at. - startAt: Fugit pariatur minima. - status: PENDING - url: Facilis illo occaecati facilis consequatur temporibus sit. - - endAt: Possimus officiis. - gitHash: Qui suscipit. - images: - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - name: Voluptate asperiores atque voluptatem ea. - ociArtifacts: - - files: - - Sit praesentium sed illum esse. - - Ea debitis. - - Quia enim sint aut asperiores. - - Architecto enim molestiae dolorem est. - repo: Eum fugit ut cupiditate. - tag: Aut veniam consectetur temporibus debitis ab recusandae. - - files: - - Sit praesentium sed illum esse. - - Ea debitis. - - Quia enim sint aut asperiores. - - Architecto enim molestiae dolorem est. - repo: Eum fugit ut cupiditate. - tag: Aut veniam consectetur temporibus debitis ab recusandae. - platform: Qui at. - startAt: Fugit pariatur minima. - status: PENDING - url: Facilis illo occaecati facilis consequatur temporibus sit. - "400": - description: 'BadRequest: Bad Request' - content: - application/json: - schema: - $ref: '#/components/schemas/HTTPError' - example: - code: 804244386186570785 - message: Et commodi dolorum. - "500": - description: 'InternalServerError: Internal Server Error' - content: - application/json: - schema: - $ref: '#/components/schemas/HTTPError' - example: - code: 8047731952312619183 - message: Facere magnam velit optio est et doloribus. - put: - tags: - - devbuild - summary: update devbuild - description: Update devbuild status - operationId: devbuild#update - parameters: - - name: dryrun - in: query - description: Dry run - allowEmptyValue: true - schema: - type: boolean - description: Dry run - default: false - example: false - example: false - - name: id - in: path - description: ID of build - required: true - schema: - type: integer - description: ID of build - example: 1 - format: int64 - example: 1 - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateRequestBody' - example: - DevBuild: - id: 8670468037696883245 - meta: - createdAt: Nihil soluta aut adipisci est. - createdBy: Qui necessitatibus possimus ab quos facere. - updatedAt: Repudiandae voluptatem rem earum aut at nulla. - spec: - buildEnv: Natus totam esse maxime aliquid sunt. - builderImg: At illo voluptas dolor. - edition: community - features: Beatae sunt nesciunt amet autem. - gitHash: Sit accusamus aspernatur aut laboriosam. - gitRef: Perspiciatis perspiciatis atque inventore id. - githubRepo: Ut libero magnam sapiente dolores qui. - isHotfix: false - isPushGCR: true - pipelineEngine: jenkins - pluginGitRef: Deleniti at consequatur doloribus culpa velit et. - product: pd - productBaseImg: Voluptas hic. - productDockerfile: Ut eum iusto id officiis. - targetImg: Laboriosam ut perspiciatis porro. - version: Distinctio aliquid eum. - status: - buildReport: - binaries: - - component: Neque velit maiores culpa rerum accusamus. - ociFile: - file: Consectetur et officia necessitatibus et necessitatibus sint. - repo: Enim minima et vel qui nulla qui. - tag: Maiores aut rerum. - platform: Similique nesciunt dolorum quisquam qui odio. - sha256OciFile: - file: Consectetur et officia necessitatibus et necessitatibus sint. - repo: Enim minima et vel qui nulla qui. - tag: Maiores aut rerum. - sha256URL: Praesentium facilis corrupti ullam impedit incidunt. - url: Aut quas pariatur qui. - - component: Neque velit maiores culpa rerum accusamus. - ociFile: - file: Consectetur et officia necessitatibus et necessitatibus sint. - repo: Enim minima et vel qui nulla qui. - tag: Maiores aut rerum. - platform: Similique nesciunt dolorum quisquam qui odio. - sha256OciFile: - file: Consectetur et officia necessitatibus et necessitatibus sint. - repo: Enim minima et vel qui nulla qui. - tag: Maiores aut rerum. - sha256URL: Praesentium facilis corrupti ullam impedit incidunt. - url: Aut quas pariatur qui. - gitHash: Harum repellat qui eos est velit. - images: - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - pluginGitHash: Assumenda itaque necessitatibus eligendi qui qui illum. - printedVersion: Aliquam quia eum quia id qui. - errMsg: Fugiat sint aut minus aperiam quod. - pipelineBuildID: 6941289464511149 - pipelineEndAt: Deleniti natus reprehenderit nihil animi hic fugiat. - pipelineStartAt: Accusamus velit ipsam. - pipelineViewURL: Enim harum dolorum. - pipelineViewURLs: - - Illo blanditiis totam in. - - Dignissimos tempore aut. - status: PENDING - tektonStatus: - pipelines: - - endAt: Excepturi ipsa veniam aspernatur quae. - gitHash: Voluptatem enim aliquam. - images: - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - name: Dolores id quibusdam impedit corrupti veritatis. - ociArtifacts: - - files: - - Temporibus totam quae debitis odio hic. - - Atque eos consequatur laudantium. - - Vitae iste. - - Odit blanditiis magni eaque quas eos voluptatem. - repo: Quam necessitatibus optio ipsam autem vel veniam. - tag: Provident qui. - - files: - - Temporibus totam quae debitis odio hic. - - Atque eos consequatur laudantium. - - Vitae iste. - - Odit blanditiis magni eaque quas eos voluptatem. - repo: Quam necessitatibus optio ipsam autem vel veniam. - tag: Provident qui. - - files: - - Temporibus totam quae debitis odio hic. - - Atque eos consequatur laudantium. - - Vitae iste. - - Odit blanditiis magni eaque quas eos voluptatem. - repo: Quam necessitatibus optio ipsam autem vel veniam. - tag: Provident qui. - platform: Quis quia vitae non ratione. - startAt: Minus sapiente doloremque rerum quasi. - status: PROCESSING - url: Saepe rerum tenetur vero eveniet. - - endAt: Excepturi ipsa veniam aspernatur quae. - gitHash: Voluptatem enim aliquam. - images: - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - name: Dolores id quibusdam impedit corrupti veritatis. - ociArtifacts: - - files: - - Temporibus totam quae debitis odio hic. - - Atque eos consequatur laudantium. - - Vitae iste. - - Odit blanditiis magni eaque quas eos voluptatem. - repo: Quam necessitatibus optio ipsam autem vel veniam. - tag: Provident qui. - - files: - - Temporibus totam quae debitis odio hic. - - Atque eos consequatur laudantium. - - Vitae iste. - - Odit blanditiis magni eaque quas eos voluptatem. - repo: Quam necessitatibus optio ipsam autem vel veniam. - tag: Provident qui. - - files: - - Temporibus totam quae debitis odio hic. - - Atque eos consequatur laudantium. - - Vitae iste. - - Odit blanditiis magni eaque quas eos voluptatem. - repo: Quam necessitatibus optio ipsam autem vel veniam. - tag: Provident qui. - platform: Quis quia vitae non ratione. - startAt: Minus sapiente doloremque rerum quasi. - status: PROCESSING - url: Saepe rerum tenetur vero eveniet. - - endAt: Excepturi ipsa veniam aspernatur quae. - gitHash: Voluptatem enim aliquam. - images: - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - name: Dolores id quibusdam impedit corrupti veritatis. - ociArtifacts: - - files: - - Temporibus totam quae debitis odio hic. - - Atque eos consequatur laudantium. - - Vitae iste. - - Odit blanditiis magni eaque quas eos voluptatem. - repo: Quam necessitatibus optio ipsam autem vel veniam. - tag: Provident qui. - - files: - - Temporibus totam quae debitis odio hic. - - Atque eos consequatur laudantium. - - Vitae iste. - - Odit blanditiis magni eaque quas eos voluptatem. - repo: Quam necessitatibus optio ipsam autem vel veniam. - tag: Provident qui. - - files: - - Temporibus totam quae debitis odio hic. - - Atque eos consequatur laudantium. - - Vitae iste. - - Odit blanditiis magni eaque quas eos voluptatem. - repo: Quam necessitatibus optio ipsam autem vel veniam. - tag: Provident qui. - platform: Quis quia vitae non ratione. - startAt: Minus sapiente doloremque rerum quasi. - status: PROCESSING - url: Saepe rerum tenetur vero eveniet. - responses: - "200": - description: OK response. - content: - application/json: - schema: - $ref: '#/components/schemas/DevBuild' - example: - id: 5709777671415595256 - meta: - createdAt: A voluptatem pariatur. - createdBy: Sed laboriosam nostrum autem est. - updatedAt: Consequatur dolores provident unde non est quo. - spec: - buildEnv: Illum ex quia est autem est. - builderImg: Ratione consequatur quisquam et. - edition: community - features: Doloremque culpa omnis quia iure aut. - gitHash: Velit fugit nihil et quia cupiditate. - gitRef: Similique quis. - githubRepo: Possimus maxime et qui eius unde eos. - isHotfix: false - isPushGCR: false - pipelineEngine: tekton - pluginGitRef: Exercitationem molestias ut molestiae a id molestiae. - product: ticdc - productBaseImg: Assumenda ducimus ut architecto architecto quos. - productDockerfile: Non ut vel deserunt officiis quia et. - targetImg: Quae blanditiis. - version: Eaque eos nostrum dolore nulla est eos. - status: - buildReport: - binaries: - - component: Omnis neque aut illum possimus. - ociFile: - file: Quisquam illum. - repo: Ea consequuntur vero velit. - tag: A qui pariatur facere. - platform: Velit dolor expedita qui earum omnis. - sha256OciFile: - file: Quisquam illum. - repo: Ea consequuntur vero velit. - tag: A qui pariatur facere. - sha256URL: Natus accusantium nesciunt suscipit aperiam. - url: Illo et asperiores aperiam consequatur perferendis delectus. - - component: Omnis neque aut illum possimus. - ociFile: - file: Quisquam illum. - repo: Ea consequuntur vero velit. - tag: A qui pariatur facere. - platform: Velit dolor expedita qui earum omnis. - sha256OciFile: - file: Quisquam illum. - repo: Ea consequuntur vero velit. - tag: A qui pariatur facere. - sha256URL: Natus accusantium nesciunt suscipit aperiam. - url: Illo et asperiores aperiam consequatur perferendis delectus. - - component: Omnis neque aut illum possimus. - ociFile: - file: Quisquam illum. - repo: Ea consequuntur vero velit. - tag: A qui pariatur facere. - platform: Velit dolor expedita qui earum omnis. - sha256OciFile: - file: Quisquam illum. - repo: Ea consequuntur vero velit. - tag: A qui pariatur facere. - sha256URL: Natus accusantium nesciunt suscipit aperiam. - url: Illo et asperiores aperiam consequatur perferendis delectus. - - component: Omnis neque aut illum possimus. - ociFile: - file: Quisquam illum. - repo: Ea consequuntur vero velit. - tag: A qui pariatur facere. - platform: Velit dolor expedita qui earum omnis. - sha256OciFile: - file: Quisquam illum. - repo: Ea consequuntur vero velit. - tag: A qui pariatur facere. - sha256URL: Natus accusantium nesciunt suscipit aperiam. - url: Illo et asperiores aperiam consequatur perferendis delectus. - gitHash: Natus nulla. - images: - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - pluginGitHash: Ut inventore. - printedVersion: Enim ut itaque sit tenetur recusandae. - errMsg: Occaecati dolor voluptatum maiores a. - pipelineBuildID: 6890238418056580283 - pipelineEndAt: Corrupti et voluptatem voluptas provident. - pipelineStartAt: Ea non et. - pipelineViewURL: Debitis labore ut. - pipelineViewURLs: - - Dicta rerum a nihil quia quia. - - Sed ut. - status: FAILURE - tektonStatus: - pipelines: - - endAt: Possimus officiis. - gitHash: Qui suscipit. - images: - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - name: Voluptate asperiores atque voluptatem ea. - ociArtifacts: - - files: - - Sit praesentium sed illum esse. - - Ea debitis. - - Quia enim sint aut asperiores. - - Architecto enim molestiae dolorem est. - repo: Eum fugit ut cupiditate. - tag: Aut veniam consectetur temporibus debitis ab recusandae. - - files: - - Sit praesentium sed illum esse. - - Ea debitis. - - Quia enim sint aut asperiores. - - Architecto enim molestiae dolorem est. - repo: Eum fugit ut cupiditate. - tag: Aut veniam consectetur temporibus debitis ab recusandae. - platform: Qui at. - startAt: Fugit pariatur minima. - status: PENDING - url: Facilis illo occaecati facilis consequatur temporibus sit. - - endAt: Possimus officiis. - gitHash: Qui suscipit. - images: - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - name: Voluptate asperiores atque voluptatem ea. - ociArtifacts: - - files: - - Sit praesentium sed illum esse. - - Ea debitis. - - Quia enim sint aut asperiores. - - Architecto enim molestiae dolorem est. - repo: Eum fugit ut cupiditate. - tag: Aut veniam consectetur temporibus debitis ab recusandae. - - files: - - Sit praesentium sed illum esse. - - Ea debitis. - - Quia enim sint aut asperiores. - - Architecto enim molestiae dolorem est. - repo: Eum fugit ut cupiditate. - tag: Aut veniam consectetur temporibus debitis ab recusandae. - platform: Qui at. - startAt: Fugit pariatur minima. - status: PENDING - url: Facilis illo occaecati facilis consequatur temporibus sit. - "400": - description: 'BadRequest: Bad Request' - content: - application/json: - schema: - $ref: '#/components/schemas/HTTPError' - example: - code: 4223371461273182730 - message: Ratione est. - "500": - description: 'InternalServerError: Internal Server Error' - content: - application/json: - schema: - $ref: '#/components/schemas/HTTPError' - example: - code: 3734524361972111096 - message: Consectetur vitae sapiente nihil earum sint. - /api/devbuilds/{id}/rerun: - post: - tags: - - devbuild - summary: rerun devbuild - description: Rerun devbuild - operationId: devbuild#rerun - parameters: - - name: dryrun - in: query - description: Dry run - allowEmptyValue: true - schema: - type: boolean - description: Dry run - default: false - example: false - example: true - - name: id - in: path - description: ID of build - required: true - schema: - type: integer - description: ID of build - example: 1 - format: int64 - example: 1 - responses: - "200": - description: OK response. - content: - application/json: - schema: - $ref: '#/components/schemas/DevBuild' - example: - id: 4770785565623516564 - meta: - createdAt: A voluptatem pariatur. - createdBy: Sed laboriosam nostrum autem est. - updatedAt: Consequatur dolores provident unde non est quo. - spec: - buildEnv: Illum ex quia est autem est. - builderImg: Ratione consequatur quisquam et. - edition: community - features: Doloremque culpa omnis quia iure aut. - gitHash: Velit fugit nihil et quia cupiditate. - gitRef: Similique quis. - githubRepo: Possimus maxime et qui eius unde eos. - isHotfix: false - isPushGCR: false - pipelineEngine: tekton - pluginGitRef: Exercitationem molestias ut molestiae a id molestiae. - product: ticdc - productBaseImg: Assumenda ducimus ut architecto architecto quos. - productDockerfile: Non ut vel deserunt officiis quia et. - targetImg: Quae blanditiis. - version: Eaque eos nostrum dolore nulla est eos. - status: - buildReport: - binaries: - - component: Omnis neque aut illum possimus. - ociFile: - file: Quisquam illum. - repo: Ea consequuntur vero velit. - tag: A qui pariatur facere. - platform: Velit dolor expedita qui earum omnis. - sha256OciFile: - file: Quisquam illum. - repo: Ea consequuntur vero velit. - tag: A qui pariatur facere. - sha256URL: Natus accusantium nesciunt suscipit aperiam. - url: Illo et asperiores aperiam consequatur perferendis delectus. - - component: Omnis neque aut illum possimus. - ociFile: - file: Quisquam illum. - repo: Ea consequuntur vero velit. - tag: A qui pariatur facere. - platform: Velit dolor expedita qui earum omnis. - sha256OciFile: - file: Quisquam illum. - repo: Ea consequuntur vero velit. - tag: A qui pariatur facere. - sha256URL: Natus accusantium nesciunt suscipit aperiam. - url: Illo et asperiores aperiam consequatur perferendis delectus. - - component: Omnis neque aut illum possimus. - ociFile: - file: Quisquam illum. - repo: Ea consequuntur vero velit. - tag: A qui pariatur facere. - platform: Velit dolor expedita qui earum omnis. - sha256OciFile: - file: Quisquam illum. - repo: Ea consequuntur vero velit. - tag: A qui pariatur facere. - sha256URL: Natus accusantium nesciunt suscipit aperiam. - url: Illo et asperiores aperiam consequatur perferendis delectus. - - component: Omnis neque aut illum possimus. - ociFile: - file: Quisquam illum. - repo: Ea consequuntur vero velit. - tag: A qui pariatur facere. - platform: Velit dolor expedita qui earum omnis. - sha256OciFile: - file: Quisquam illum. - repo: Ea consequuntur vero velit. - tag: A qui pariatur facere. - sha256URL: Natus accusantium nesciunt suscipit aperiam. - url: Illo et asperiores aperiam consequatur perferendis delectus. - gitHash: Natus nulla. - images: - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - pluginGitHash: Ut inventore. - printedVersion: Enim ut itaque sit tenetur recusandae. - errMsg: Occaecati dolor voluptatum maiores a. - pipelineBuildID: 6890238418056580283 - pipelineEndAt: Corrupti et voluptatem voluptas provident. - pipelineStartAt: Ea non et. - pipelineViewURL: Debitis labore ut. - pipelineViewURLs: - - Dicta rerum a nihil quia quia. - - Sed ut. - status: FAILURE - tektonStatus: - pipelines: - - endAt: Possimus officiis. - gitHash: Qui suscipit. - images: - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - name: Voluptate asperiores atque voluptatem ea. - ociArtifacts: - - files: - - Sit praesentium sed illum esse. - - Ea debitis. - - Quia enim sint aut asperiores. - - Architecto enim molestiae dolorem est. - repo: Eum fugit ut cupiditate. - tag: Aut veniam consectetur temporibus debitis ab recusandae. - - files: - - Sit praesentium sed illum esse. - - Ea debitis. - - Quia enim sint aut asperiores. - - Architecto enim molestiae dolorem est. - repo: Eum fugit ut cupiditate. - tag: Aut veniam consectetur temporibus debitis ab recusandae. - platform: Qui at. - startAt: Fugit pariatur minima. - status: PENDING - url: Facilis illo occaecati facilis consequatur temporibus sit. - - endAt: Possimus officiis. - gitHash: Qui suscipit. - images: - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - - platform: Quae quo quis. - url: Dolor nihil aperiam magnam. - name: Voluptate asperiores atque voluptatem ea. - ociArtifacts: - - files: - - Sit praesentium sed illum esse. - - Ea debitis. - - Quia enim sint aut asperiores. - - Architecto enim molestiae dolorem est. - repo: Eum fugit ut cupiditate. - tag: Aut veniam consectetur temporibus debitis ab recusandae. - - files: - - Sit praesentium sed illum esse. - - Ea debitis. - - Quia enim sint aut asperiores. - - Architecto enim molestiae dolorem est. - repo: Eum fugit ut cupiditate. - tag: Aut veniam consectetur temporibus debitis ab recusandae. - platform: Qui at. - startAt: Fugit pariatur minima. - status: PENDING - url: Facilis illo occaecati facilis consequatur temporibus sit. - "400": - description: 'BadRequest: Bad Request' - content: - application/json: - schema: - $ref: '#/components/schemas/HTTPError' - example: - code: 4796566189838332103 - message: Cumque laudantium molestiae. - "500": - description: 'InternalServerError: Internal Server Error' - content: - application/json: - schema: - $ref: '#/components/schemas/HTTPError' - example: - code: 5213612161793508242 - message: Impedit dicta quos esse et maxime. -components: - schemas: - BinArtifact: - type: object - properties: - component: - type: string - example: Qui consequuntur ut. - ociFile: - $ref: '#/components/schemas/OciFile' - platform: - type: string - example: Quis aut placeat. - sha256OciFile: - $ref: '#/components/schemas/OciFile' - sha256URL: - type: string - example: Hic eaque ullam quia vel et sit. - url: - type: string - example: Dolores quos optio. - example: - component: Et distinctio nihil cum. - ociFile: - file: Delectus architecto voluptatum molestiae. - repo: Ea aut soluta. - tag: Aut sed dignissimos voluptas voluptas. - platform: Quos molestias culpa. - sha256OciFile: - file: Delectus architecto voluptatum molestiae. - repo: Ea aut soluta. - tag: Aut sed dignissimos voluptas voluptas. - sha256URL: Soluta reprehenderit minima voluptates dolores asperiores. - url: Delectus accusantium ut quaerat. - required: - - component - - ociFile - - platform - - sha256OciFile - - sha256URL - - url - BuildReport: - type: object - properties: - binaries: - type: array - items: - $ref: '#/components/schemas/BinArtifact' - example: - - component: Numquam natus eos laboriosam quasi et. - ociFile: - file: Delectus architecto voluptatum molestiae. - repo: Ea aut soluta. - tag: Aut sed dignissimos voluptas voluptas. - platform: Modi autem et aut nemo. - sha256OciFile: - file: Delectus architecto voluptatum molestiae. - repo: Ea aut soluta. - tag: Aut sed dignissimos voluptas voluptas. - sha256URL: Nihil nisi ut. - url: Natus voluptatibus fuga voluptatem sunt animi modi. - - component: Numquam natus eos laboriosam quasi et. - ociFile: - file: Delectus architecto voluptatum molestiae. - repo: Ea aut soluta. - tag: Aut sed dignissimos voluptas voluptas. - platform: Modi autem et aut nemo. - sha256OciFile: - file: Delectus architecto voluptatum molestiae. - repo: Ea aut soluta. - tag: Aut sed dignissimos voluptas voluptas. - sha256URL: Nihil nisi ut. - url: Natus voluptatibus fuga voluptatem sunt animi modi. - - component: Numquam natus eos laboriosam quasi et. - ociFile: - file: Delectus architecto voluptatum molestiae. - repo: Ea aut soluta. - tag: Aut sed dignissimos voluptas voluptas. - platform: Modi autem et aut nemo. - sha256OciFile: - file: Delectus architecto voluptatum molestiae. - repo: Ea aut soluta. - tag: Aut sed dignissimos voluptas voluptas. - sha256URL: Nihil nisi ut. - url: Natus voluptatibus fuga voluptatem sunt animi modi. - - component: Numquam natus eos laboriosam quasi et. - ociFile: - file: Delectus architecto voluptatum molestiae. - repo: Ea aut soluta. - tag: Aut sed dignissimos voluptas voluptas. - platform: Modi autem et aut nemo. - sha256OciFile: - file: Delectus architecto voluptatum molestiae. - repo: Ea aut soluta. - tag: Aut sed dignissimos voluptas voluptas. - sha256URL: Nihil nisi ut. - url: Natus voluptatibus fuga voluptatem sunt animi modi. - gitHash: - type: string - example: Et consequatur reprehenderit repellat. - images: - type: array - items: - $ref: '#/components/schemas/ImageArtifact' - example: - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - pluginGitHash: - type: string - example: Non dignissimos magni. - printedVersion: - type: string - example: Voluptate dolorum. - example: - binaries: - - component: Numquam natus eos laboriosam quasi et. - ociFile: - file: Delectus architecto voluptatum molestiae. - repo: Ea aut soluta. - tag: Aut sed dignissimos voluptas voluptas. - platform: Modi autem et aut nemo. - sha256OciFile: - file: Delectus architecto voluptatum molestiae. - repo: Ea aut soluta. - tag: Aut sed dignissimos voluptas voluptas. - sha256URL: Nihil nisi ut. - url: Natus voluptatibus fuga voluptatem sunt animi modi. - - component: Numquam natus eos laboriosam quasi et. - ociFile: - file: Delectus architecto voluptatum molestiae. - repo: Ea aut soluta. - tag: Aut sed dignissimos voluptas voluptas. - platform: Modi autem et aut nemo. - sha256OciFile: - file: Delectus architecto voluptatum molestiae. - repo: Ea aut soluta. - tag: Aut sed dignissimos voluptas voluptas. - sha256URL: Nihil nisi ut. - url: Natus voluptatibus fuga voluptatem sunt animi modi. - - component: Numquam natus eos laboriosam quasi et. - ociFile: - file: Delectus architecto voluptatum molestiae. - repo: Ea aut soluta. - tag: Aut sed dignissimos voluptas voluptas. - platform: Modi autem et aut nemo. - sha256OciFile: - file: Delectus architecto voluptatum molestiae. - repo: Ea aut soluta. - tag: Aut sed dignissimos voluptas voluptas. - sha256URL: Nihil nisi ut. - url: Natus voluptatibus fuga voluptatem sunt animi modi. - gitHash: Tempore qui veniam quia. - images: - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - pluginGitHash: Neque incidunt et quae fugit ea. - printedVersion: Beatae porro omnis voluptas cumque sunt laboriosam. - required: - - binaries - - gitHash - - images - - pluginGitHash - - printedVersion - CreateRequestBody: - type: object - properties: - createdBy: - type: string - description: Creator of build - example: wilfrid_gorczany@christiansen.name - format: email - request: - $ref: '#/components/schemas/DevBuildRequest' - example: - createdBy: alda.kautzer@dickishields.biz - request: - buildEnv: Sunt nihil quia numquam suscipit corrupti qui. - builderImg: Sint ut blanditiis. - edition: enterprise - features: Aperiam natus in ut quae accusantium. - gitRef: Numquam possimus possimus ipsum rerum unde. - githubRepo: Numquam neque reiciendis quaerat. - isHotfix: true - isPushGCR: true - pipelineEngine: tekton - pluginGitRef: Laboriosam esse dicta. - product: tidb - productBaseImg: Tempore ut dolores. - productDockerfile: Iusto suscipit. - targetImg: Et aut error doloremque non itaque. - version: Voluptas quia reprehenderit fugit quo debitis numquam. - required: - - createdBy - - request - DevBuild: - type: object - properties: - id: - type: integer - example: 3026413034801598164 - format: int64 - meta: - $ref: '#/components/schemas/DevBuildMeta' - spec: - $ref: '#/components/schemas/DevBuildSpec' - status: - $ref: '#/components/schemas/DevBuildStatus' - example: - id: 5615396365765690377 - meta: - createdAt: Omnis fugiat magni ut qui deleniti. - createdBy: Beatae aperiam quo. - updatedAt: Consequatur saepe officia animi laborum voluptates. - spec: - buildEnv: Architecto dolores. - builderImg: Soluta consectetur unde perspiciatis dolores sed ipsum. - edition: Quam molestiae non. - features: Omnis et doloremque. - gitHash: Quae suscipit aut accusamus ea quia. - gitRef: Praesentium rerum excepturi non et illo reiciendis. - githubRepo: Provident odio magnam minus. - isHotfix: false - isPushGCR: false - pipelineEngine: Quos sint dicta totam cumque quidem. - pluginGitRef: Et optio. - product: Et velit magni mollitia dolor. - productBaseImg: Voluptatem fugit veniam ex ut non totam. - productDockerfile: Illum delectus dicta neque nulla. - targetImg: Dolorem et. - version: Libero sed voluptate animi optio. - status: - buildReport: - binaries: - - component: Numquam natus eos laboriosam quasi et. - ociFile: - file: Delectus architecto voluptatum molestiae. - repo: Ea aut soluta. - tag: Aut sed dignissimos voluptas voluptas. - platform: Modi autem et aut nemo. - sha256OciFile: - file: Delectus architecto voluptatum molestiae. - repo: Ea aut soluta. - tag: Aut sed dignissimos voluptas voluptas. - sha256URL: Nihil nisi ut. - url: Natus voluptatibus fuga voluptatem sunt animi modi. - - component: Numquam natus eos laboriosam quasi et. - ociFile: - file: Delectus architecto voluptatum molestiae. - repo: Ea aut soluta. - tag: Aut sed dignissimos voluptas voluptas. - platform: Modi autem et aut nemo. - sha256OciFile: - file: Delectus architecto voluptatum molestiae. - repo: Ea aut soluta. - tag: Aut sed dignissimos voluptas voluptas. - sha256URL: Nihil nisi ut. - url: Natus voluptatibus fuga voluptatem sunt animi modi. - - component: Numquam natus eos laboriosam quasi et. - ociFile: - file: Delectus architecto voluptatum molestiae. - repo: Ea aut soluta. - tag: Aut sed dignissimos voluptas voluptas. - platform: Modi autem et aut nemo. - sha256OciFile: - file: Delectus architecto voluptatum molestiae. - repo: Ea aut soluta. - tag: Aut sed dignissimos voluptas voluptas. - sha256URL: Nihil nisi ut. - url: Natus voluptatibus fuga voluptatem sunt animi modi. - - component: Numquam natus eos laboriosam quasi et. - ociFile: - file: Delectus architecto voluptatum molestiae. - repo: Ea aut soluta. - tag: Aut sed dignissimos voluptas voluptas. - platform: Modi autem et aut nemo. - sha256OciFile: - file: Delectus architecto voluptatum molestiae. - repo: Ea aut soluta. - tag: Aut sed dignissimos voluptas voluptas. - sha256URL: Nihil nisi ut. - url: Natus voluptatibus fuga voluptatem sunt animi modi. - gitHash: Porro eos vel et qui inventore adipisci. - images: - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - pluginGitHash: Eveniet sint eligendi eos corporis voluptatum ipsa. - printedVersion: Molestiae quam id animi. - errMsg: Quas maiores recusandae. - pipelineBuildID: 7214947228892467714 - pipelineEndAt: Dolorem repudiandae doloribus placeat enim sequi. - pipelineStartAt: Voluptatem excepturi reprehenderit. - pipelineViewURL: Voluptatum tempore omnis rerum vel. - pipelineViewURLs: - - Dolorum id. - - Cupiditate nesciunt consequatur necessitatibus sint quisquam quia. - - Earum expedita minima ipsam repudiandae. - status: In non assumenda doloremque ullam aut ut. - tektonStatus: - pipelines: - - endAt: Deserunt maiores saepe quo nisi ea. - gitHash: Tenetur quo voluptas in ut. - images: - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - name: Ut deleniti rerum dolorem excepturi. - ociArtifacts: - - files: - - Laborum saepe dolor tempora. - - Vitae quibusdam non impedit suscipit. - - Voluptas voluptatibus accusantium culpa unde. - - Tenetur aut repudiandae. - repo: Architecto sunt. - tag: Ut quod totam minus non sequi. - - files: - - Laborum saepe dolor tempora. - - Vitae quibusdam non impedit suscipit. - - Voluptas voluptatibus accusantium culpa unde. - - Tenetur aut repudiandae. - repo: Architecto sunt. - tag: Ut quod totam minus non sequi. - platform: Nostrum illo laudantium aperiam numquam ratione est. - startAt: Iste a totam debitis quo. - status: In non assumenda doloremque ullam aut ut. - url: Fugiat suscipit labore est voluptas odit nemo. - - endAt: Deserunt maiores saepe quo nisi ea. - gitHash: Tenetur quo voluptas in ut. - images: - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - name: Ut deleniti rerum dolorem excepturi. - ociArtifacts: - - files: - - Laborum saepe dolor tempora. - - Vitae quibusdam non impedit suscipit. - - Voluptas voluptatibus accusantium culpa unde. - - Tenetur aut repudiandae. - repo: Architecto sunt. - tag: Ut quod totam minus non sequi. - - files: - - Laborum saepe dolor tempora. - - Vitae quibusdam non impedit suscipit. - - Voluptas voluptatibus accusantium culpa unde. - - Tenetur aut repudiandae. - repo: Architecto sunt. - tag: Ut quod totam minus non sequi. - platform: Nostrum illo laudantium aperiam numquam ratione est. - startAt: Iste a totam debitis quo. - status: In non assumenda doloremque ullam aut ut. - url: Fugiat suscipit labore est voluptas odit nemo. - required: - - id - - meta - - spec - - status - DevBuildMeta: - type: object - properties: - createdAt: - type: string - example: Totam vero accusantium neque odio ratione. - createdBy: - type: string - example: Ut aliquam. - updatedAt: - type: string - example: Tempora ut et id neque. - example: - createdAt: Error et ad perspiciatis quibusdam omnis saepe. - createdBy: Explicabo non deleniti. - updatedAt: Consequatur veniam rerum quae voluptas consequuntur. - required: - - createdAt - - createdBy - - updatedAt - DevBuildRequest: - type: object - properties: - buildEnv: - type: string - example: Harum quia ipsa perferendis. - builderImg: - type: string - example: Pariatur enim voluptate autem provident magnam. - edition: - type: string - example: enterprise - enum: - - enterprise - - community - features: - type: string - example: Ut fugiat. - gitRef: - type: string - example: Voluptas reiciendis est. - githubRepo: - type: string - example: Quis itaque in dignissimos et omnis. - isHotfix: - type: boolean - example: true - isPushGCR: - type: boolean - example: true - pipelineEngine: - type: string - example: tekton - enum: - - jenkins - - tekton - pluginGitRef: - type: string - example: Consectetur saepe recusandae. - product: - type: string - example: drainer - enum: - - tidb - - enterprise-plugin - - tikv - - pd - - tiflash - - br - - dumpling - - tidb-lightning - - ticdc - - ticdc-newarch - - dm - - tidb-binlog - - tidb-tools - - ng-monitoring - - tidb-dashboard - - drainer - - pump - - "" - productBaseImg: - type: string - example: Occaecati accusantium et ad earum possimus accusamus. - productDockerfile: - type: string - example: Et dolorum natus. - targetImg: - type: string - example: Quidem asperiores neque. - version: - type: string - example: Velit rerum. - example: - buildEnv: Quis quod sed at ut quia placeat. - builderImg: Quia minima. - edition: Quam molestiae non. - features: Modi quos impedit ut. - gitRef: Vel natus. - githubRepo: Quidem beatae non quas et ex. - isHotfix: true - isPushGCR: true - pipelineEngine: Quos sint dicta totam cumque quidem. - pluginGitRef: Nesciunt sit fuga magnam. - product: Et velit magni mollitia dolor. - productBaseImg: Architecto velit qui. - productDockerfile: Eos autem praesentium. - targetImg: Quisquam et velit. - version: Sequi ea incidunt magni ut laborum nihil. - required: - - edition - - gitRef - - product - - version - DevBuildSpec: - type: object - properties: - buildEnv: - type: string - example: Consequatur impedit et quibusdam et consectetur. - builderImg: - type: string - example: Facere nihil ad aspernatur maxime aperiam. - edition: - type: string - example: enterprise - enum: - - enterprise - - community - features: - type: string - example: Consequatur est inventore. - gitHash: - type: string - example: Veniam alias est quod quo quia. - gitRef: - type: string - example: Officiis magni. - githubRepo: - type: string - example: Qui accusamus doloribus. - isHotfix: - type: boolean - example: false - isPushGCR: - type: boolean - example: true - pipelineEngine: - type: string - example: tekton - enum: - - jenkins - - tekton - pluginGitRef: - type: string - example: Explicabo qui veniam voluptates nisi. - product: - type: string - example: pd - enum: - - tidb - - enterprise-plugin - - tikv - - pd - - tiflash - - br - - dumpling - - tidb-lightning - - ticdc - - ticdc-newarch - - dm - - tidb-binlog - - tidb-tools - - ng-monitoring - - tidb-dashboard - - drainer - - pump - - "" - productBaseImg: - type: string - example: Quae nihil eos et ab et sed. - productDockerfile: - type: string - example: Minima quo nulla. - targetImg: - type: string - example: Vel quas non omnis aut. - version: - type: string - example: Laboriosam reprehenderit et. - example: - buildEnv: Qui voluptas. - builderImg: Et officiis. - edition: Quam molestiae non. - features: Et voluptas consequatur recusandae voluptatibus. - gitHash: Quibusdam sapiente autem omnis qui autem aliquid. - gitRef: Magni sed voluptates. - githubRepo: Minima maiores rem. - isHotfix: false - isPushGCR: false - pipelineEngine: Quos sint dicta totam cumque quidem. - pluginGitRef: Debitis quisquam. - product: Et velit magni mollitia dolor. - productBaseImg: Doloribus necessitatibus rerum quo. - productDockerfile: Sint itaque et sint minima quas earum. - targetImg: Ea commodi et. - version: Et assumenda. - required: - - buildEnv - - builderImg - - edition - - features - - gitHash - - gitRef - - githubRepo - - isHotfix - - isPushGCR - - pipelineEngine - - pluginGitRef - - product - - productBaseImg - - productDockerfile - - targetImg - - version - DevBuildStatus: - type: object - properties: - buildReport: - $ref: '#/components/schemas/BuildReport' - errMsg: - type: string - example: Velit distinctio. - pipelineBuildID: - type: integer - example: 6563606615849146876 - format: int64 - pipelineEndAt: - type: string - example: In maxime nisi et. - pipelineStartAt: - type: string - example: Inventore omnis dolores qui assumenda amet. - pipelineViewURL: - type: string - example: Distinctio numquam placeat consequatur repellendus. - pipelineViewURLs: - type: array - items: - type: string - example: Inventore sed cupiditate possimus qui recusandae. - example: - - Sapiente ratione dolor eum culpa. - - Enim dicta. - - Rerum aut. - - Blanditiis aut rem beatae. - status: - type: string - example: FAILURE - enum: - - PENDING - - PROCESSING - - ABORTED - - SUCCESS - - FAILURE - - ERROR - tektonStatus: - $ref: '#/components/schemas/TektonStatus' - example: - buildReport: - binaries: - - component: Numquam natus eos laboriosam quasi et. - ociFile: - file: Delectus architecto voluptatum molestiae. - repo: Ea aut soluta. - tag: Aut sed dignissimos voluptas voluptas. - platform: Modi autem et aut nemo. - sha256OciFile: - file: Delectus architecto voluptatum molestiae. - repo: Ea aut soluta. - tag: Aut sed dignissimos voluptas voluptas. - sha256URL: Nihil nisi ut. - url: Natus voluptatibus fuga voluptatem sunt animi modi. - - component: Numquam natus eos laboriosam quasi et. - ociFile: - file: Delectus architecto voluptatum molestiae. - repo: Ea aut soluta. - tag: Aut sed dignissimos voluptas voluptas. - platform: Modi autem et aut nemo. - sha256OciFile: - file: Delectus architecto voluptatum molestiae. - repo: Ea aut soluta. - tag: Aut sed dignissimos voluptas voluptas. - sha256URL: Nihil nisi ut. - url: Natus voluptatibus fuga voluptatem sunt animi modi. - - component: Numquam natus eos laboriosam quasi et. - ociFile: - file: Delectus architecto voluptatum molestiae. - repo: Ea aut soluta. - tag: Aut sed dignissimos voluptas voluptas. - platform: Modi autem et aut nemo. - sha256OciFile: - file: Delectus architecto voluptatum molestiae. - repo: Ea aut soluta. - tag: Aut sed dignissimos voluptas voluptas. - sha256URL: Nihil nisi ut. - url: Natus voluptatibus fuga voluptatem sunt animi modi. - - component: Numquam natus eos laboriosam quasi et. - ociFile: - file: Delectus architecto voluptatum molestiae. - repo: Ea aut soluta. - tag: Aut sed dignissimos voluptas voluptas. - platform: Modi autem et aut nemo. - sha256OciFile: - file: Delectus architecto voluptatum molestiae. - repo: Ea aut soluta. - tag: Aut sed dignissimos voluptas voluptas. - sha256URL: Nihil nisi ut. - url: Natus voluptatibus fuga voluptatem sunt animi modi. - gitHash: Porro eos vel et qui inventore adipisci. - images: - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - pluginGitHash: Eveniet sint eligendi eos corporis voluptatum ipsa. - printedVersion: Molestiae quam id animi. - errMsg: Et dolorem. - pipelineBuildID: 6413898906962383000 - pipelineEndAt: Similique occaecati dignissimos accusantium impedit quia. - pipelineStartAt: Tempore dolores dolores animi nobis voluptas esse. - pipelineViewURL: Eaque corrupti qui consequatur quos. - pipelineViewURLs: - - Non earum. - - Molestiae dolorum aut magnam ipsam maiores et. - status: In non assumenda doloremque ullam aut ut. - tektonStatus: - pipelines: - - endAt: Deserunt maiores saepe quo nisi ea. - gitHash: Tenetur quo voluptas in ut. - images: - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - name: Ut deleniti rerum dolorem excepturi. - ociArtifacts: - - files: - - Laborum saepe dolor tempora. - - Vitae quibusdam non impedit suscipit. - - Voluptas voluptatibus accusantium culpa unde. - - Tenetur aut repudiandae. - repo: Architecto sunt. - tag: Ut quod totam minus non sequi. - - files: - - Laborum saepe dolor tempora. - - Vitae quibusdam non impedit suscipit. - - Voluptas voluptatibus accusantium culpa unde. - - Tenetur aut repudiandae. - repo: Architecto sunt. - tag: Ut quod totam minus non sequi. - platform: Nostrum illo laudantium aperiam numquam ratione est. - startAt: Iste a totam debitis quo. - status: In non assumenda doloremque ullam aut ut. - url: Fugiat suscipit labore est voluptas odit nemo. - - endAt: Deserunt maiores saepe quo nisi ea. - gitHash: Tenetur quo voluptas in ut. - images: - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - name: Ut deleniti rerum dolorem excepturi. - ociArtifacts: - - files: - - Laborum saepe dolor tempora. - - Vitae quibusdam non impedit suscipit. - - Voluptas voluptatibus accusantium culpa unde. - - Tenetur aut repudiandae. - repo: Architecto sunt. - tag: Ut quod totam minus non sequi. - - files: - - Laborum saepe dolor tempora. - - Vitae quibusdam non impedit suscipit. - - Voluptas voluptatibus accusantium culpa unde. - - Tenetur aut repudiandae. - repo: Architecto sunt. - tag: Ut quod totam minus non sequi. - platform: Nostrum illo laudantium aperiam numquam ratione est. - startAt: Iste a totam debitis quo. - status: In non assumenda doloremque ullam aut ut. - url: Fugiat suscipit labore est voluptas odit nemo. - required: - - buildReport - - errMsg - - pipelineBuildID - - pipelineEndAt - - pipelineStartAt - - pipelineViewURL - - pipelineViewURLs - - status - - tektonStatus - HTTPError: - type: object - properties: - code: - type: integer - example: 9020693220300857510 - format: int64 - message: - type: string - example: In animi ut mollitia. - example: - code: 8193984659833759108 - message: Fuga sit harum. - required: - - code - - message - ImageArtifact: - type: object - properties: - platform: - type: string - example: Sed odit commodi unde repellendus quisquam est. - url: - type: string - example: Odit asperiores sed qui autem voluptas. - example: - platform: Voluptas pariatur nobis reiciendis dolorum sint. - url: Laboriosam ea modi. - required: - - platform - - url - ImageSyncRequest: - type: object - properties: - source: - type: string - example: Facere ex cum. - target: - type: string - example: Aut quisquam et temporibus. - example: - source: Esse consequuntur omnis quo provident. - target: Sed est nihil non quia quia. - required: - - source - - target - OciArtifact: - type: object - properties: - files: - type: array - items: - type: string - example: Sint autem natus molestiae quia. - example: - - Quia accusantium. - - Ipsum nihil eum et beatae minima molestiae. - - Odit qui facere inventore nemo delectus sunt. - repo: - type: string - example: Et repellat quis necessitatibus et quos. - tag: - type: string - example: Omnis veritatis assumenda quo dolores enim. - example: - files: - - Accusantium voluptatum aut omnis alias. - - Esse et impedit. - - Ut recusandae ullam neque autem accusantium. - - Totam vel sint explicabo. - repo: Dolor dolor accusantium explicabo. - tag: Praesentium et dicta. - required: - - files - - repo - - tag - OciFile: - type: object - properties: - file: - type: string - example: Voluptatibus illo est sed qui dolorem. - repo: - type: string - example: Qui magni dolor est eligendi. - tag: - type: string - example: Culpa libero dignissimos occaecati. - example: - file: Natus et quaerat. - repo: Deserunt suscipit nesciunt et porro aliquid. - tag: Ut odio doloribus et eum voluptas enim. - required: - - file - - repo - - tag - SyncImageRequestBody: - type: object - properties: - ImageSyncRequest: - $ref: '#/components/schemas/ImageSyncRequest' - example: - ImageSyncRequest: - source: Culpa possimus. - target: Perferendis nisi non quia debitis. - required: - - ImageSyncRequest - TektonPipeline: - type: object - properties: - endAt: - type: string - example: Qui iste ratione quisquam dolore dolores fuga. - gitHash: - type: string - example: Perferendis enim eius enim. - images: - type: array - items: - $ref: '#/components/schemas/ImageArtifact' - example: - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - name: - type: string - example: Delectus voluptas accusantium quis. - ociArtifacts: - type: array - items: - $ref: '#/components/schemas/OciArtifact' - example: - - files: - - Laborum saepe dolor tempora. - - Vitae quibusdam non impedit suscipit. - - Voluptas voluptatibus accusantium culpa unde. - - Tenetur aut repudiandae. - repo: Architecto sunt. - tag: Ut quod totam minus non sequi. - - files: - - Laborum saepe dolor tempora. - - Vitae quibusdam non impedit suscipit. - - Voluptas voluptatibus accusantium culpa unde. - - Tenetur aut repudiandae. - repo: Architecto sunt. - tag: Ut quod totam minus non sequi. - platform: - type: string - example: Eveniet non accusantium voluptatem impedit. - startAt: - type: string - example: Omnis at doloribus non. - status: - type: string - example: SUCCESS - enum: - - PENDING - - PROCESSING - - ABORTED - - SUCCESS - - FAILURE - - ERROR - url: - type: string - example: Nemo quibusdam sunt voluptatem eveniet impedit. - example: - endAt: Voluptatem qui vero. - gitHash: Ex quibusdam aut. - images: - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - name: Asperiores repellendus omnis itaque dicta. - ociArtifacts: - - files: - - Laborum saepe dolor tempora. - - Vitae quibusdam non impedit suscipit. - - Voluptas voluptatibus accusantium culpa unde. - - Tenetur aut repudiandae. - repo: Architecto sunt. - tag: Ut quod totam minus non sequi. - - files: - - Laborum saepe dolor tempora. - - Vitae quibusdam non impedit suscipit. - - Voluptas voluptatibus accusantium culpa unde. - - Tenetur aut repudiandae. - repo: Architecto sunt. - tag: Ut quod totam minus non sequi. - platform: Deleniti illo pariatur. - startAt: Ut cum minima labore omnis eos deserunt. - status: In non assumenda doloremque ullam aut ut. - url: Velit eaque quia et qui. - required: - - endAt - - gitHash - - images - - name - - ociArtifacts - - platform - - startAt - - status - - url - TektonStatus: - type: object - properties: - pipelines: - type: array - items: - $ref: '#/components/schemas/TektonPipeline' - example: - - endAt: Deserunt maiores saepe quo nisi ea. - gitHash: Tenetur quo voluptas in ut. - images: - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - name: Ut deleniti rerum dolorem excepturi. - ociArtifacts: - - files: - - Laborum saepe dolor tempora. - - Vitae quibusdam non impedit suscipit. - - Voluptas voluptatibus accusantium culpa unde. - - Tenetur aut repudiandae. - repo: Architecto sunt. - tag: Ut quod totam minus non sequi. - - files: - - Laborum saepe dolor tempora. - - Vitae quibusdam non impedit suscipit. - - Voluptas voluptatibus accusantium culpa unde. - - Tenetur aut repudiandae. - repo: Architecto sunt. - tag: Ut quod totam minus non sequi. - platform: Nostrum illo laudantium aperiam numquam ratione est. - startAt: Iste a totam debitis quo. - status: In non assumenda doloremque ullam aut ut. - url: Fugiat suscipit labore est voluptas odit nemo. - - endAt: Deserunt maiores saepe quo nisi ea. - gitHash: Tenetur quo voluptas in ut. - images: - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - name: Ut deleniti rerum dolorem excepturi. - ociArtifacts: - - files: - - Laborum saepe dolor tempora. - - Vitae quibusdam non impedit suscipit. - - Voluptas voluptatibus accusantium culpa unde. - - Tenetur aut repudiandae. - repo: Architecto sunt. - tag: Ut quod totam minus non sequi. - - files: - - Laborum saepe dolor tempora. - - Vitae quibusdam non impedit suscipit. - - Voluptas voluptatibus accusantium culpa unde. - - Tenetur aut repudiandae. - repo: Architecto sunt. - tag: Ut quod totam minus non sequi. - platform: Nostrum illo laudantium aperiam numquam ratione est. - startAt: Iste a totam debitis quo. - status: In non assumenda doloremque ullam aut ut. - url: Fugiat suscipit labore est voluptas odit nemo. - example: - pipelines: - - endAt: Deserunt maiores saepe quo nisi ea. - gitHash: Tenetur quo voluptas in ut. - images: - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - name: Ut deleniti rerum dolorem excepturi. - ociArtifacts: - - files: - - Laborum saepe dolor tempora. - - Vitae quibusdam non impedit suscipit. - - Voluptas voluptatibus accusantium culpa unde. - - Tenetur aut repudiandae. - repo: Architecto sunt. - tag: Ut quod totam minus non sequi. - - files: - - Laborum saepe dolor tempora. - - Vitae quibusdam non impedit suscipit. - - Voluptas voluptatibus accusantium culpa unde. - - Tenetur aut repudiandae. - repo: Architecto sunt. - tag: Ut quod totam minus non sequi. - platform: Nostrum illo laudantium aperiam numquam ratione est. - startAt: Iste a totam debitis quo. - status: In non assumenda doloremque ullam aut ut. - url: Fugiat suscipit labore est voluptas odit nemo. - - endAt: Deserunt maiores saepe quo nisi ea. - gitHash: Tenetur quo voluptas in ut. - images: - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - - platform: Quo reprehenderit mollitia. - url: Iste ut voluptas quia sed. - name: Ut deleniti rerum dolorem excepturi. - ociArtifacts: - - files: - - Laborum saepe dolor tempora. - - Vitae quibusdam non impedit suscipit. - - Voluptas voluptatibus accusantium culpa unde. - - Tenetur aut repudiandae. - repo: Architecto sunt. - tag: Ut quod totam minus non sequi. - - files: - - Laborum saepe dolor tempora. - - Vitae quibusdam non impedit suscipit. - - Voluptas voluptatibus accusantium culpa unde. - - Tenetur aut repudiandae. - repo: Architecto sunt. - tag: Ut quod totam minus non sequi. - platform: Nostrum illo laudantium aperiam numquam ratione est. - startAt: Iste a totam debitis quo. - status: In non assumenda doloremque ullam aut ut. - url: Fugiat suscipit labore est voluptas odit nemo. - required: - - pipelines - UpdateRequestBody: - type: object - properties: - DevBuild: - $ref: '#/components/schemas/DevBuild' - example: - DevBuild: - id: 8670468037696883245 - meta: - createdAt: Nihil soluta aut adipisci est. - createdBy: Qui necessitatibus possimus ab quos facere. - updatedAt: Repudiandae voluptatem rem earum aut at nulla. - spec: - buildEnv: Natus totam esse maxime aliquid sunt. - builderImg: At illo voluptas dolor. - edition: community - features: Beatae sunt nesciunt amet autem. - gitHash: Sit accusamus aspernatur aut laboriosam. - gitRef: Perspiciatis perspiciatis atque inventore id. - githubRepo: Ut libero magnam sapiente dolores qui. - isHotfix: false - isPushGCR: true - pipelineEngine: jenkins - pluginGitRef: Deleniti at consequatur doloribus culpa velit et. - product: pd - productBaseImg: Voluptas hic. - productDockerfile: Ut eum iusto id officiis. - targetImg: Laboriosam ut perspiciatis porro. - version: Distinctio aliquid eum. - status: - buildReport: - binaries: - - component: Neque velit maiores culpa rerum accusamus. - ociFile: - file: Consectetur et officia necessitatibus et necessitatibus sint. - repo: Enim minima et vel qui nulla qui. - tag: Maiores aut rerum. - platform: Similique nesciunt dolorum quisquam qui odio. - sha256OciFile: - file: Consectetur et officia necessitatibus et necessitatibus sint. - repo: Enim minima et vel qui nulla qui. - tag: Maiores aut rerum. - sha256URL: Praesentium facilis corrupti ullam impedit incidunt. - url: Aut quas pariatur qui. - - component: Neque velit maiores culpa rerum accusamus. - ociFile: - file: Consectetur et officia necessitatibus et necessitatibus sint. - repo: Enim minima et vel qui nulla qui. - tag: Maiores aut rerum. - platform: Similique nesciunt dolorum quisquam qui odio. - sha256OciFile: - file: Consectetur et officia necessitatibus et necessitatibus sint. - repo: Enim minima et vel qui nulla qui. - tag: Maiores aut rerum. - sha256URL: Praesentium facilis corrupti ullam impedit incidunt. - url: Aut quas pariatur qui. - gitHash: Harum repellat qui eos est velit. - images: - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - pluginGitHash: Assumenda itaque necessitatibus eligendi qui qui illum. - printedVersion: Aliquam quia eum quia id qui. - errMsg: Fugiat sint aut minus aperiam quod. - pipelineBuildID: 6941289464511149 - pipelineEndAt: Deleniti natus reprehenderit nihil animi hic fugiat. - pipelineStartAt: Accusamus velit ipsam. - pipelineViewURL: Enim harum dolorum. - pipelineViewURLs: - - Illo blanditiis totam in. - - Dignissimos tempore aut. - status: PENDING - tektonStatus: - pipelines: - - endAt: Excepturi ipsa veniam aspernatur quae. - gitHash: Voluptatem enim aliquam. - images: - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - name: Dolores id quibusdam impedit corrupti veritatis. - ociArtifacts: - - files: - - Temporibus totam quae debitis odio hic. - - Atque eos consequatur laudantium. - - Vitae iste. - - Odit blanditiis magni eaque quas eos voluptatem. - repo: Quam necessitatibus optio ipsam autem vel veniam. - tag: Provident qui. - - files: - - Temporibus totam quae debitis odio hic. - - Atque eos consequatur laudantium. - - Vitae iste. - - Odit blanditiis magni eaque quas eos voluptatem. - repo: Quam necessitatibus optio ipsam autem vel veniam. - tag: Provident qui. - - files: - - Temporibus totam quae debitis odio hic. - - Atque eos consequatur laudantium. - - Vitae iste. - - Odit blanditiis magni eaque quas eos voluptatem. - repo: Quam necessitatibus optio ipsam autem vel veniam. - tag: Provident qui. - platform: Quis quia vitae non ratione. - startAt: Minus sapiente doloremque rerum quasi. - status: PROCESSING - url: Saepe rerum tenetur vero eveniet. - - endAt: Excepturi ipsa veniam aspernatur quae. - gitHash: Voluptatem enim aliquam. - images: - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - name: Dolores id quibusdam impedit corrupti veritatis. - ociArtifacts: - - files: - - Temporibus totam quae debitis odio hic. - - Atque eos consequatur laudantium. - - Vitae iste. - - Odit blanditiis magni eaque quas eos voluptatem. - repo: Quam necessitatibus optio ipsam autem vel veniam. - tag: Provident qui. - - files: - - Temporibus totam quae debitis odio hic. - - Atque eos consequatur laudantium. - - Vitae iste. - - Odit blanditiis magni eaque quas eos voluptatem. - repo: Quam necessitatibus optio ipsam autem vel veniam. - tag: Provident qui. - - files: - - Temporibus totam quae debitis odio hic. - - Atque eos consequatur laudantium. - - Vitae iste. - - Odit blanditiis magni eaque quas eos voluptatem. - repo: Quam necessitatibus optio ipsam autem vel veniam. - tag: Provident qui. - platform: Quis quia vitae non ratione. - startAt: Minus sapiente doloremque rerum quasi. - status: PROCESSING - url: Saepe rerum tenetur vero eveniet. - - endAt: Excepturi ipsa veniam aspernatur quae. - gitHash: Voluptatem enim aliquam. - images: - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - - platform: Ut rerum dolorum aspernatur necessitatibus. - url: Laborum iste nobis omnis quae. - name: Dolores id quibusdam impedit corrupti veritatis. - ociArtifacts: - - files: - - Temporibus totam quae debitis odio hic. - - Atque eos consequatur laudantium. - - Vitae iste. - - Odit blanditiis magni eaque quas eos voluptatem. - repo: Quam necessitatibus optio ipsam autem vel veniam. - tag: Provident qui. - - files: - - Temporibus totam quae debitis odio hic. - - Atque eos consequatur laudantium. - - Vitae iste. - - Odit blanditiis magni eaque quas eos voluptatem. - repo: Quam necessitatibus optio ipsam autem vel veniam. - tag: Provident qui. - - files: - - Temporibus totam quae debitis odio hic. - - Atque eos consequatur laudantium. - - Vitae iste. - - Odit blanditiis magni eaque quas eos voluptatem. - repo: Quam necessitatibus optio ipsam autem vel veniam. - tag: Provident qui. - platform: Quis quia vitae non ratione. - startAt: Minus sapiente doloremque rerum quasi. - status: PROCESSING - url: Saepe rerum tenetur vero eveniet. - required: - - DevBuild -tags: - - name: artifact - description: The artifact service provides operations to manage artifacts. - - name: devbuild - description: The devbuild service provides operations to manage dev builds. diff --git a/experiments/tibuild-v2/go.mod b/experiments/tibuild-v2/go.mod index fb5d7b9a..b643ccc2 100644 --- a/experiments/tibuild-v2/go.mod +++ b/experiments/tibuild-v2/go.mod @@ -3,30 +3,54 @@ module github.com/PingCAP-QE/ee-apps/tibuild go 1.24.0 require ( + entgo.io/ent v0.14.3 + github.com/google/go-containerregistry v0.20.3 github.com/rs/zerolog v1.33.0 - goa.design/clue v1.1.0 + github.com/stretchr/testify v1.10.0 + goa.design/clue v1.0.7 goa.design/goa/v3 v3.20.0 goa.design/plugins/v3 v3.20.0 gopkg.in/yaml.v3 v3.0.1 ) require ( + ariga.io/atlas v0.31.1-0.20250212144724-069be8033e83 // indirect + github.com/agext/levenshtein v1.2.3 // indirect + github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect github.com/aws/smithy-go v1.22.2 // indirect + github.com/bmatcuk/doublestar v1.3.4 // indirect + github.com/containerd/stargz-snapshotter/estargz v0.16.3 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dimfeld/httppath v0.0.0-20170720192232-ee938bf73598 // indirect + github.com/docker/cli v27.5.0+incompatible // indirect + github.com/docker/distribution v2.8.3+incompatible // indirect + github.com/docker/docker-credential-helpers v0.8.2 // indirect github.com/go-chi/chi/v5 v5.2.1 // indirect github.com/go-logr/logr v1.4.2 // indirect - github.com/gohugoio/hashstructure v0.5.0 // indirect + github.com/go-openapi/inflect v0.21.0 // indirect + github.com/google/go-cmp v0.7.0 // indirect github.com/google/uuid v1.6.0 // indirect github.com/gorilla/websocket v1.5.3 // indirect + github.com/hashicorp/hcl/v2 v2.23.0 // indirect + github.com/klauspost/compress v1.17.11 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/manveru/faker v0.0.0-20171103152722-9fbc68a78c4d // indirect github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.19 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/mitchellh/go-wordwrap v1.0.1 // indirect + github.com/opencontainers/go-digest v1.0.0 // indirect + github.com/opencontainers/image-spec v1.1.0 // indirect + github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect - github.com/stretchr/testify v1.10.0 // indirect + github.com/sirupsen/logrus v1.9.3 // indirect + github.com/vbatts/tar-split v0.11.6 // indirect + github.com/zclconf/go-cty v1.15.1 // indirect + github.com/zclconf/go-cty-yaml v1.1.0 // indirect go.opentelemetry.io/otel v1.34.0 // indirect + go.opentelemetry.io/otel/sdk v1.34.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.34.0 // indirect go.opentelemetry.io/otel/trace v1.34.0 // indirect golang.org/x/mod v0.23.0 // indirect golang.org/x/net v0.35.0 // indirect diff --git a/experiments/tibuild-v2/go.sum b/experiments/tibuild-v2/go.sum index cb3a11b1..fdab701c 100644 --- a/experiments/tibuild-v2/go.sum +++ b/experiments/tibuild-v2/go.sum @@ -1,28 +1,58 @@ +ariga.io/atlas v0.31.1-0.20250212144724-069be8033e83 h1:nX4HXncwIdvQ8/8sIUIf1nyCkK8qdBaHQ7EtzPpuiGE= +ariga.io/atlas v0.31.1-0.20250212144724-069be8033e83/go.mod h1:Oe1xWPuu5q9LzyrWfbZmEZxFYeu4BHTyzfjeW2aZp/w= +entgo.io/ent v0.14.3 h1:wokAV/kIlH9TeklJWGGS7AYJdVckr0DloWjIcO9iIIQ= +entgo.io/ent v0.14.3/go.mod h1:aDPE/OziPEu8+OWbzy4UlvWmD2/kbRuWfK2A40hcxJM= +github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60= +github.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= +github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= +github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= +github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= +github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= github.com/aws/smithy-go v1.22.2 h1:6D9hW43xKFrRx/tXXfAlIZc4JI+yQe6snnWcQyxSyLQ= github.com/aws/smithy-go v1.22.2/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= +github.com/bmatcuk/doublestar v1.3.4 h1:gPypJ5xD31uhX6Tf54sDPUOBXTqKH4c9aPY66CyQrS0= +github.com/bmatcuk/doublestar v1.3.4/go.mod h1:wiQtGV+rzVYxB7WIlirSN++5HPtPlXEo9MEoZQC/PmE= +github.com/containerd/stargz-snapshotter/estargz v0.16.3 h1:7evrXtoh1mSbGj/pfRccTampEyKpjpOnS3CyiV1Ebr8= +github.com/containerd/stargz-snapshotter/estargz v0.16.3/go.mod h1:uyr4BfYfOj3G9WBVE8cOlQmXAbPN9VEQpBBeJIuOipU= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dimfeld/httppath v0.0.0-20170720192232-ee938bf73598 h1:MGKhKyiYrvMDZsmLR/+RGffQSXwEkXgfLSA08qDn9AI= github.com/dimfeld/httppath v0.0.0-20170720192232-ee938bf73598/go.mod h1:0FpDmbrt36utu8jEmeU05dPC9AB5tsLYVVi+ZHfyuwI= +github.com/docker/cli v27.5.0+incompatible h1:aMphQkcGtpHixwwhAXJT1rrK/detk2JIvDaFkLctbGM= +github.com/docker/cli v27.5.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= +github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/docker-credential-helpers v0.8.2 h1:bX3YxiGzFP5sOXWc3bTPEXdEaZSeVMrFgOr3T+zrFAo= +github.com/docker/docker-credential-helpers v0.8.2/go.mod h1:P3ci7E3lwkZg6XiHdRKft1KckHiO9a2rNtyFbZ/ry9M= github.com/go-chi/chi/v5 v5.2.1 h1:KOIHODQj58PmL80G2Eak4WdvUzjSJSm0vG72crDCqb8= github.com/go-chi/chi/v5 v5.2.1/go.mod h1:L2yAIGWB3H+phAw1NxKwWM+7eUH/lU8pOMm5hHcoops= github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-openapi/inflect v0.21.0 h1:FoBjBTQEcbg2cJUWX6uwL9OyIW8eqc9k4KhN4lfbeYk= +github.com/go-openapi/inflect v0.21.0/go.mod h1:INezMuUu7SJQc2AyR3WO0DqqYUJSj8Kb4hBd7WtjlAw= +github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= +github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gohugoio/hashstructure v0.5.0 h1:G2fjSBU36RdwEJBWJ+919ERvOVqAg9tfcYp47K9swqg= -github.com/gohugoio/hashstructure v0.5.0/go.mod h1:Ser0TniXuu/eauYmrwM4o64EBvySxNzITEOLlm4igec= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/go-containerregistry v0.20.3 h1:oNx7IdTI936V8CQRveCjaxOiegWwvM7kqkbXTpyiovI= +github.com/google/go-containerregistry v0.20.3/go.mod h1:w00pIgBRDVUDFM6bq+Qx8lwNWK+cxgCuX1vd3PIBDNI= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/hashicorp/hcl/v2 v2.23.0 h1:Fphj1/gCylPxHutVSEOf2fBOh1VE4AuLV7+kbJf3qos= +github.com/hashicorp/hcl/v2 v2.23.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= +github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= +github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= @@ -37,10 +67,23 @@ github.com/manveru/gobdd v0.0.0-20131210092515-f1a17fdd710b/go.mod h1:Bj8LjjP0Re github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y= +github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= +github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= +github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= +github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= @@ -49,14 +92,26 @@ github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99 github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/vbatts/tar-split v0.11.6 h1:4SjTW5+PU11n6fZenf2IPoV8/tz3AaYHMWjf23envGs= +github.com/vbatts/tar-split v0.11.6/go.mod h1:dqKNtesIOr2j2Qv3W/cHjnvk9I8+G7oAkFDFN6TCBEI= +github.com/zclconf/go-cty v1.15.1 h1:RgQYm4j2EvoBRXOPxhUvxPzRrGDo1eCOhHXuGfrj5S0= +github.com/zclconf/go-cty v1.15.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= +github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= +github.com/zclconf/go-cty-yaml v1.1.0 h1:nP+jp0qPHv2IhUVqmQSzjvqAWcObN0KBkUl2rWBdig0= +github.com/zclconf/go-cty-yaml v1.1.0/go.mod h1:9YLUH4g7lOhVWqUbctnVlZ5KLpg7JAprQNgxSZ1Gyxs= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.34.0 h1:jBpDk4HAUsrnVO1FsfCfCOTEc/MkInJmvfCHYLFiT80= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.34.0/go.mod h1:H9LUIM1daaeZaz91vZcfeM0fejXPmgCYE8ZhzqfJuiU= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.31.0 h1:UGZ1QwZWY67Z6BmckTU+9Rxn04m2bD3gD6Mk0OIOCPk= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.31.0/go.mod h1:fcwWuDuaObkkChiDlhEpSq9+X1C0omv+s5mBtToAQ64= go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= @@ -65,8 +120,8 @@ go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= -goa.design/clue v1.1.0 h1:HAgmiLSDB++SX4Shv8bYLewRmD8MtztSLiUHFSoo0Qg= -goa.design/clue v1.1.0/go.mod h1:wlamhUMR5f2EIxVK2O/Fp0QwBK9VzijEsLi0VPxRPUE= +goa.design/clue v1.0.7 h1:Z0qhUTvMMo2C7bxn9X7Wt4DXahGMdYuIg7pr3F+iLOs= +goa.design/clue v1.0.7/go.mod h1:z9vhVyNCV02Aggr20KilzR/QQigD/wuz+0uGvWr4MYk= goa.design/goa/v3 v3.20.0 h1:mYYNqCBg9SSxe2jxvPJFOPmJqqKkSAUSU84jpczky3s= goa.design/goa/v3 v3.20.0/go.mod h1:g8sT4ioTaRt8BZKwZ1YOQe7UgWqkZMx+q6NWgQfzLUU= goa.design/plugins/v3 v3.20.0 h1:1PaevrRloUS6Dd/BsvwmdQmrlStzf1vX7KMhLKQut6E= @@ -77,6 +132,7 @@ golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -97,5 +153,8 @@ google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojt gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= +gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= diff --git a/experiments/tibuild-v2/internal/database/ent/client.go b/experiments/tibuild-v2/internal/database/ent/client.go new file mode 100644 index 00000000..5de8e8b4 --- /dev/null +++ b/experiments/tibuild-v2/internal/database/ent/client.go @@ -0,0 +1,340 @@ +// Code generated by ent, DO NOT EDIT. + +package ent + +import ( + "context" + "errors" + "fmt" + "log" + "reflect" + + "github.com/PingCAP-QE/ee-apps/tibuild/internal/database/ent/migrate" + + "entgo.io/ent" + "entgo.io/ent/dialect" + "entgo.io/ent/dialect/sql" + "github.com/PingCAP-QE/ee-apps/tibuild/internal/database/ent/devbuild" +) + +// Client is the client that holds all ent builders. +type Client struct { + config + // Schema is the client for creating, migrating and dropping schema. + Schema *migrate.Schema + // DevBuild is the client for interacting with the DevBuild builders. + DevBuild *DevBuildClient +} + +// NewClient creates a new client configured with the given options. +func NewClient(opts ...Option) *Client { + client := &Client{config: newConfig(opts...)} + client.init() + return client +} + +func (c *Client) init() { + c.Schema = migrate.NewSchema(c.driver) + c.DevBuild = NewDevBuildClient(c.config) +} + +type ( + // config is the configuration for the client and its builder. + config struct { + // driver used for executing database requests. + driver dialect.Driver + // debug enable a debug logging. + debug bool + // log used for logging on debug mode. + log func(...any) + // hooks to execute on mutations. + hooks *hooks + // interceptors to execute on queries. + inters *inters + } + // Option function to configure the client. + Option func(*config) +) + +// newConfig creates a new config for the client. +func newConfig(opts ...Option) config { + cfg := config{log: log.Println, hooks: &hooks{}, inters: &inters{}} + cfg.options(opts...) + return cfg +} + +// options applies the options on the config object. +func (c *config) options(opts ...Option) { + for _, opt := range opts { + opt(c) + } + if c.debug { + c.driver = dialect.Debug(c.driver, c.log) + } +} + +// Debug enables debug logging on the ent.Driver. +func Debug() Option { + return func(c *config) { + c.debug = true + } +} + +// Log sets the logging function for debug mode. +func Log(fn func(...any)) Option { + return func(c *config) { + c.log = fn + } +} + +// Driver configures the client driver. +func Driver(driver dialect.Driver) Option { + return func(c *config) { + c.driver = driver + } +} + +// Open opens a database/sql.DB specified by the driver name and +// the data source name, and returns a new client attached to it. +// Optional parameters can be added for configuring the client. +func Open(driverName, dataSourceName string, options ...Option) (*Client, error) { + switch driverName { + case dialect.MySQL, dialect.Postgres, dialect.SQLite: + drv, err := sql.Open(driverName, dataSourceName) + if err != nil { + return nil, err + } + return NewClient(append(options, Driver(drv))...), nil + default: + return nil, fmt.Errorf("unsupported driver: %q", driverName) + } +} + +// ErrTxStarted is returned when trying to start a new transaction from a transactional client. +var ErrTxStarted = errors.New("ent: cannot start a transaction within a transaction") + +// Tx returns a new transactional client. The provided context +// is used until the transaction is committed or rolled back. +func (c *Client) Tx(ctx context.Context) (*Tx, error) { + if _, ok := c.driver.(*txDriver); ok { + return nil, ErrTxStarted + } + tx, err := newTx(ctx, c.driver) + if err != nil { + return nil, fmt.Errorf("ent: starting a transaction: %w", err) + } + cfg := c.config + cfg.driver = tx + return &Tx{ + ctx: ctx, + config: cfg, + DevBuild: NewDevBuildClient(cfg), + }, nil +} + +// BeginTx returns a transactional client with specified options. +func (c *Client) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) { + if _, ok := c.driver.(*txDriver); ok { + return nil, errors.New("ent: cannot start a transaction within a transaction") + } + tx, err := c.driver.(interface { + BeginTx(context.Context, *sql.TxOptions) (dialect.Tx, error) + }).BeginTx(ctx, opts) + if err != nil { + return nil, fmt.Errorf("ent: starting a transaction: %w", err) + } + cfg := c.config + cfg.driver = &txDriver{tx: tx, drv: c.driver} + return &Tx{ + ctx: ctx, + config: cfg, + DevBuild: NewDevBuildClient(cfg), + }, nil +} + +// Debug returns a new debug-client. It's used to get verbose logging on specific operations. +// +// client.Debug(). +// DevBuild. +// Query(). +// Count(ctx) +func (c *Client) Debug() *Client { + if c.debug { + return c + } + cfg := c.config + cfg.driver = dialect.Debug(c.driver, c.log) + client := &Client{config: cfg} + client.init() + return client +} + +// Close closes the database connection and prevents new queries from starting. +func (c *Client) Close() error { + return c.driver.Close() +} + +// Use adds the mutation hooks to all the entity clients. +// In order to add hooks to a specific client, call: `client.Node.Use(...)`. +func (c *Client) Use(hooks ...Hook) { + c.DevBuild.Use(hooks...) +} + +// Intercept adds the query interceptors to all the entity clients. +// In order to add interceptors to a specific client, call: `client.Node.Intercept(...)`. +func (c *Client) Intercept(interceptors ...Interceptor) { + c.DevBuild.Intercept(interceptors...) +} + +// Mutate implements the ent.Mutator interface. +func (c *Client) Mutate(ctx context.Context, m Mutation) (Value, error) { + switch m := m.(type) { + case *DevBuildMutation: + return c.DevBuild.mutate(ctx, m) + default: + return nil, fmt.Errorf("ent: unknown mutation type %T", m) + } +} + +// DevBuildClient is a client for the DevBuild schema. +type DevBuildClient struct { + config +} + +// NewDevBuildClient returns a client for the DevBuild from the given config. +func NewDevBuildClient(c config) *DevBuildClient { + return &DevBuildClient{config: c} +} + +// Use adds a list of mutation hooks to the hooks stack. +// A call to `Use(f, g, h)` equals to `devbuild.Hooks(f(g(h())))`. +func (c *DevBuildClient) Use(hooks ...Hook) { + c.hooks.DevBuild = append(c.hooks.DevBuild, hooks...) +} + +// Intercept adds a list of query interceptors to the interceptors stack. +// A call to `Intercept(f, g, h)` equals to `devbuild.Intercept(f(g(h())))`. +func (c *DevBuildClient) Intercept(interceptors ...Interceptor) { + c.inters.DevBuild = append(c.inters.DevBuild, interceptors...) +} + +// Create returns a builder for creating a DevBuild entity. +func (c *DevBuildClient) Create() *DevBuildCreate { + mutation := newDevBuildMutation(c.config, OpCreate) + return &DevBuildCreate{config: c.config, hooks: c.Hooks(), mutation: mutation} +} + +// CreateBulk returns a builder for creating a bulk of DevBuild entities. +func (c *DevBuildClient) CreateBulk(builders ...*DevBuildCreate) *DevBuildCreateBulk { + return &DevBuildCreateBulk{config: c.config, builders: builders} +} + +// MapCreateBulk creates a bulk creation builder from the given slice. For each item in the slice, the function creates +// a builder and applies setFunc on it. +func (c *DevBuildClient) MapCreateBulk(slice any, setFunc func(*DevBuildCreate, int)) *DevBuildCreateBulk { + rv := reflect.ValueOf(slice) + if rv.Kind() != reflect.Slice { + return &DevBuildCreateBulk{err: fmt.Errorf("calling to DevBuildClient.MapCreateBulk with wrong type %T, need slice", slice)} + } + builders := make([]*DevBuildCreate, rv.Len()) + for i := 0; i < rv.Len(); i++ { + builders[i] = c.Create() + setFunc(builders[i], i) + } + return &DevBuildCreateBulk{config: c.config, builders: builders} +} + +// Update returns an update builder for DevBuild. +func (c *DevBuildClient) Update() *DevBuildUpdate { + mutation := newDevBuildMutation(c.config, OpUpdate) + return &DevBuildUpdate{config: c.config, hooks: c.Hooks(), mutation: mutation} +} + +// UpdateOne returns an update builder for the given entity. +func (c *DevBuildClient) UpdateOne(db *DevBuild) *DevBuildUpdateOne { + mutation := newDevBuildMutation(c.config, OpUpdateOne, withDevBuild(db)) + return &DevBuildUpdateOne{config: c.config, hooks: c.Hooks(), mutation: mutation} +} + +// UpdateOneID returns an update builder for the given id. +func (c *DevBuildClient) UpdateOneID(id int) *DevBuildUpdateOne { + mutation := newDevBuildMutation(c.config, OpUpdateOne, withDevBuildID(id)) + return &DevBuildUpdateOne{config: c.config, hooks: c.Hooks(), mutation: mutation} +} + +// Delete returns a delete builder for DevBuild. +func (c *DevBuildClient) Delete() *DevBuildDelete { + mutation := newDevBuildMutation(c.config, OpDelete) + return &DevBuildDelete{config: c.config, hooks: c.Hooks(), mutation: mutation} +} + +// DeleteOne returns a builder for deleting the given entity. +func (c *DevBuildClient) DeleteOne(db *DevBuild) *DevBuildDeleteOne { + return c.DeleteOneID(db.ID) +} + +// DeleteOneID returns a builder for deleting the given entity by its id. +func (c *DevBuildClient) DeleteOneID(id int) *DevBuildDeleteOne { + builder := c.Delete().Where(devbuild.ID(id)) + builder.mutation.id = &id + builder.mutation.op = OpDeleteOne + return &DevBuildDeleteOne{builder} +} + +// Query returns a query builder for DevBuild. +func (c *DevBuildClient) Query() *DevBuildQuery { + return &DevBuildQuery{ + config: c.config, + ctx: &QueryContext{Type: TypeDevBuild}, + inters: c.Interceptors(), + } +} + +// Get returns a DevBuild entity by its id. +func (c *DevBuildClient) Get(ctx context.Context, id int) (*DevBuild, error) { + return c.Query().Where(devbuild.ID(id)).Only(ctx) +} + +// GetX is like Get, but panics if an error occurs. +func (c *DevBuildClient) GetX(ctx context.Context, id int) *DevBuild { + obj, err := c.Get(ctx, id) + if err != nil { + panic(err) + } + return obj +} + +// Hooks returns the client hooks. +func (c *DevBuildClient) Hooks() []Hook { + return c.hooks.DevBuild +} + +// Interceptors returns the client interceptors. +func (c *DevBuildClient) Interceptors() []Interceptor { + return c.inters.DevBuild +} + +func (c *DevBuildClient) mutate(ctx context.Context, m *DevBuildMutation) (Value, error) { + switch m.Op() { + case OpCreate: + return (&DevBuildCreate{config: c.config, hooks: c.Hooks(), mutation: m}).Save(ctx) + case OpUpdate: + return (&DevBuildUpdate{config: c.config, hooks: c.Hooks(), mutation: m}).Save(ctx) + case OpUpdateOne: + return (&DevBuildUpdateOne{config: c.config, hooks: c.Hooks(), mutation: m}).Save(ctx) + case OpDelete, OpDeleteOne: + return (&DevBuildDelete{config: c.config, hooks: c.Hooks(), mutation: m}).Exec(ctx) + default: + return nil, fmt.Errorf("ent: unknown DevBuild mutation op: %q", m.Op()) + } +} + +// hooks and interceptors per client, for fast access. +type ( + hooks struct { + DevBuild []ent.Hook + } + inters struct { + DevBuild []ent.Interceptor + } +) diff --git a/experiments/tibuild-v2/internal/database/ent/devbuild.go b/experiments/tibuild-v2/internal/database/ent/devbuild.go new file mode 100644 index 00000000..d3e94eeb --- /dev/null +++ b/experiments/tibuild-v2/internal/database/ent/devbuild.go @@ -0,0 +1,390 @@ +// Code generated by ent, DO NOT EDIT. + +package ent + +import ( + "encoding/json" + "fmt" + "strings" + "time" + + "entgo.io/ent" + "entgo.io/ent/dialect/sql" + "github.com/PingCAP-QE/ee-apps/tibuild/internal/database/ent/devbuild" +) + +// DevBuild is the model entity for the DevBuild schema. +type DevBuild struct { + config `json:"-"` + // ID of the ent. + ID int `json:"id,omitempty"` + // User who created the build + CreatedBy string `json:"created_by,omitempty"` + // Time when the build was created + CreatedAt time.Time `json:"created_at,omitempty"` + // Time when the build was last updated + UpdatedAt time.Time `json:"updated_at,omitempty"` + // Product being built + Product string `json:"product,omitempty"` + // Edition of the product + Edition string `json:"edition,omitempty"` + // Version of the build + Version string `json:"version,omitempty"` + // GitHub repository + GithubRepo string `json:"github_repo,omitempty"` + // Git reference of the build + GitRef string `json:"git_ref,omitempty"` + // Git commit SHA + GitHash string `json:"git_hash,omitempty"` + // Git reference of the plugin + PluginGitRef string `json:"plugin_git_ref,omitempty"` + // Whether the build is a hotfix + IsHotfix bool `json:"is_hotfix,omitempty"` + // Whether to push to GCR + IsPushGcr bool `json:"is_push_gcr,omitempty"` + // Target image name + TargetImg string `json:"target_img,omitempty"` + // Pipeline engine used + PipelineEngine string `json:"pipeline_engine,omitempty"` + // Builder image used + BuilderImg string `json:"builder_img,omitempty"` + // Build environment + BuildEnv string `json:"build_env,omitempty"` + // Features included in the build + Features string `json:"features,omitempty"` + // Base image for the product + ProductBaseImg string `json:"product_base_img,omitempty"` + // Path to artifact image building dockerfile + ProductDockerfile string `json:"product_dockerfile,omitempty"` + // Build status + Status string `json:"status,omitempty"` + // Build status message + ErrMsg string `json:"err_msg,omitempty"` + // ID of the pipeline build + PipelineBuildID int64 `json:"pipeline_build_id,omitempty"` + // Build pipeline started time + PipelineStartAt time.Time `json:"pipeline_start_at,omitempty"` + // Build pipeline completed time + PipelineEndAt time.Time `json:"pipeline_end_at,omitempty"` + // JSON report of the build + BuildReport map[string]interface{} `json:"build_report,omitempty"` + // Tekton status + TektonStatus map[string]interface{} `json:"tekton_status,omitempty"` + selectValues sql.SelectValues +} + +// scanValues returns the types for scanning values from sql.Rows. +func (*DevBuild) scanValues(columns []string) ([]any, error) { + values := make([]any, len(columns)) + for i := range columns { + switch columns[i] { + case devbuild.FieldBuildReport, devbuild.FieldTektonStatus: + values[i] = new([]byte) + case devbuild.FieldIsHotfix, devbuild.FieldIsPushGcr: + values[i] = new(sql.NullBool) + case devbuild.FieldID, devbuild.FieldPipelineBuildID: + values[i] = new(sql.NullInt64) + case devbuild.FieldCreatedBy, devbuild.FieldProduct, devbuild.FieldEdition, devbuild.FieldVersion, devbuild.FieldGithubRepo, devbuild.FieldGitRef, devbuild.FieldGitHash, devbuild.FieldPluginGitRef, devbuild.FieldTargetImg, devbuild.FieldPipelineEngine, devbuild.FieldBuilderImg, devbuild.FieldBuildEnv, devbuild.FieldFeatures, devbuild.FieldProductBaseImg, devbuild.FieldProductDockerfile, devbuild.FieldStatus, devbuild.FieldErrMsg: + values[i] = new(sql.NullString) + case devbuild.FieldCreatedAt, devbuild.FieldUpdatedAt, devbuild.FieldPipelineStartAt, devbuild.FieldPipelineEndAt: + values[i] = new(sql.NullTime) + default: + values[i] = new(sql.UnknownType) + } + } + return values, nil +} + +// assignValues assigns the values that were returned from sql.Rows (after scanning) +// to the DevBuild fields. +func (db *DevBuild) assignValues(columns []string, values []any) error { + if m, n := len(values), len(columns); m < n { + return fmt.Errorf("mismatch number of scan values: %d != %d", m, n) + } + for i := range columns { + switch columns[i] { + case devbuild.FieldID: + value, ok := values[i].(*sql.NullInt64) + if !ok { + return fmt.Errorf("unexpected type %T for field id", value) + } + db.ID = int(value.Int64) + case devbuild.FieldCreatedBy: + if value, ok := values[i].(*sql.NullString); !ok { + return fmt.Errorf("unexpected type %T for field created_by", values[i]) + } else if value.Valid { + db.CreatedBy = value.String + } + case devbuild.FieldCreatedAt: + if value, ok := values[i].(*sql.NullTime); !ok { + return fmt.Errorf("unexpected type %T for field created_at", values[i]) + } else if value.Valid { + db.CreatedAt = value.Time + } + case devbuild.FieldUpdatedAt: + if value, ok := values[i].(*sql.NullTime); !ok { + return fmt.Errorf("unexpected type %T for field updated_at", values[i]) + } else if value.Valid { + db.UpdatedAt = value.Time + } + case devbuild.FieldProduct: + if value, ok := values[i].(*sql.NullString); !ok { + return fmt.Errorf("unexpected type %T for field product", values[i]) + } else if value.Valid { + db.Product = value.String + } + case devbuild.FieldEdition: + if value, ok := values[i].(*sql.NullString); !ok { + return fmt.Errorf("unexpected type %T for field edition", values[i]) + } else if value.Valid { + db.Edition = value.String + } + case devbuild.FieldVersion: + if value, ok := values[i].(*sql.NullString); !ok { + return fmt.Errorf("unexpected type %T for field version", values[i]) + } else if value.Valid { + db.Version = value.String + } + case devbuild.FieldGithubRepo: + if value, ok := values[i].(*sql.NullString); !ok { + return fmt.Errorf("unexpected type %T for field github_repo", values[i]) + } else if value.Valid { + db.GithubRepo = value.String + } + case devbuild.FieldGitRef: + if value, ok := values[i].(*sql.NullString); !ok { + return fmt.Errorf("unexpected type %T for field git_ref", values[i]) + } else if value.Valid { + db.GitRef = value.String + } + case devbuild.FieldGitHash: + if value, ok := values[i].(*sql.NullString); !ok { + return fmt.Errorf("unexpected type %T for field git_hash", values[i]) + } else if value.Valid { + db.GitHash = value.String + } + case devbuild.FieldPluginGitRef: + if value, ok := values[i].(*sql.NullString); !ok { + return fmt.Errorf("unexpected type %T for field plugin_git_ref", values[i]) + } else if value.Valid { + db.PluginGitRef = value.String + } + case devbuild.FieldIsHotfix: + if value, ok := values[i].(*sql.NullBool); !ok { + return fmt.Errorf("unexpected type %T for field is_hotfix", values[i]) + } else if value.Valid { + db.IsHotfix = value.Bool + } + case devbuild.FieldIsPushGcr: + if value, ok := values[i].(*sql.NullBool); !ok { + return fmt.Errorf("unexpected type %T for field is_push_gcr", values[i]) + } else if value.Valid { + db.IsPushGcr = value.Bool + } + case devbuild.FieldTargetImg: + if value, ok := values[i].(*sql.NullString); !ok { + return fmt.Errorf("unexpected type %T for field target_img", values[i]) + } else if value.Valid { + db.TargetImg = value.String + } + case devbuild.FieldPipelineEngine: + if value, ok := values[i].(*sql.NullString); !ok { + return fmt.Errorf("unexpected type %T for field pipeline_engine", values[i]) + } else if value.Valid { + db.PipelineEngine = value.String + } + case devbuild.FieldBuilderImg: + if value, ok := values[i].(*sql.NullString); !ok { + return fmt.Errorf("unexpected type %T for field builder_img", values[i]) + } else if value.Valid { + db.BuilderImg = value.String + } + case devbuild.FieldBuildEnv: + if value, ok := values[i].(*sql.NullString); !ok { + return fmt.Errorf("unexpected type %T for field build_env", values[i]) + } else if value.Valid { + db.BuildEnv = value.String + } + case devbuild.FieldFeatures: + if value, ok := values[i].(*sql.NullString); !ok { + return fmt.Errorf("unexpected type %T for field features", values[i]) + } else if value.Valid { + db.Features = value.String + } + case devbuild.FieldProductBaseImg: + if value, ok := values[i].(*sql.NullString); !ok { + return fmt.Errorf("unexpected type %T for field product_base_img", values[i]) + } else if value.Valid { + db.ProductBaseImg = value.String + } + case devbuild.FieldProductDockerfile: + if value, ok := values[i].(*sql.NullString); !ok { + return fmt.Errorf("unexpected type %T for field product_dockerfile", values[i]) + } else if value.Valid { + db.ProductDockerfile = value.String + } + case devbuild.FieldStatus: + if value, ok := values[i].(*sql.NullString); !ok { + return fmt.Errorf("unexpected type %T for field status", values[i]) + } else if value.Valid { + db.Status = value.String + } + case devbuild.FieldErrMsg: + if value, ok := values[i].(*sql.NullString); !ok { + return fmt.Errorf("unexpected type %T for field err_msg", values[i]) + } else if value.Valid { + db.ErrMsg = value.String + } + case devbuild.FieldPipelineBuildID: + if value, ok := values[i].(*sql.NullInt64); !ok { + return fmt.Errorf("unexpected type %T for field pipeline_build_id", values[i]) + } else if value.Valid { + db.PipelineBuildID = value.Int64 + } + case devbuild.FieldPipelineStartAt: + if value, ok := values[i].(*sql.NullTime); !ok { + return fmt.Errorf("unexpected type %T for field pipeline_start_at", values[i]) + } else if value.Valid { + db.PipelineStartAt = value.Time + } + case devbuild.FieldPipelineEndAt: + if value, ok := values[i].(*sql.NullTime); !ok { + return fmt.Errorf("unexpected type %T for field pipeline_end_at", values[i]) + } else if value.Valid { + db.PipelineEndAt = value.Time + } + case devbuild.FieldBuildReport: + if value, ok := values[i].(*[]byte); !ok { + return fmt.Errorf("unexpected type %T for field build_report", values[i]) + } else if value != nil && len(*value) > 0 { + if err := json.Unmarshal(*value, &db.BuildReport); err != nil { + return fmt.Errorf("unmarshal field build_report: %w", err) + } + } + case devbuild.FieldTektonStatus: + if value, ok := values[i].(*[]byte); !ok { + return fmt.Errorf("unexpected type %T for field tekton_status", values[i]) + } else if value != nil && len(*value) > 0 { + if err := json.Unmarshal(*value, &db.TektonStatus); err != nil { + return fmt.Errorf("unmarshal field tekton_status: %w", err) + } + } + default: + db.selectValues.Set(columns[i], values[i]) + } + } + return nil +} + +// Value returns the ent.Value that was dynamically selected and assigned to the DevBuild. +// This includes values selected through modifiers, order, etc. +func (db *DevBuild) Value(name string) (ent.Value, error) { + return db.selectValues.Get(name) +} + +// Update returns a builder for updating this DevBuild. +// Note that you need to call DevBuild.Unwrap() before calling this method if this DevBuild +// was returned from a transaction, and the transaction was committed or rolled back. +func (db *DevBuild) Update() *DevBuildUpdateOne { + return NewDevBuildClient(db.config).UpdateOne(db) +} + +// Unwrap unwraps the DevBuild entity that was returned from a transaction after it was closed, +// so that all future queries will be executed through the driver which created the transaction. +func (db *DevBuild) Unwrap() *DevBuild { + _tx, ok := db.config.driver.(*txDriver) + if !ok { + panic("ent: DevBuild is not a transactional entity") + } + db.config.driver = _tx.drv + return db +} + +// String implements the fmt.Stringer. +func (db *DevBuild) String() string { + var builder strings.Builder + builder.WriteString("DevBuild(") + builder.WriteString(fmt.Sprintf("id=%v, ", db.ID)) + builder.WriteString("created_by=") + builder.WriteString(db.CreatedBy) + builder.WriteString(", ") + builder.WriteString("created_at=") + builder.WriteString(db.CreatedAt.Format(time.ANSIC)) + builder.WriteString(", ") + builder.WriteString("updated_at=") + builder.WriteString(db.UpdatedAt.Format(time.ANSIC)) + builder.WriteString(", ") + builder.WriteString("product=") + builder.WriteString(db.Product) + builder.WriteString(", ") + builder.WriteString("edition=") + builder.WriteString(db.Edition) + builder.WriteString(", ") + builder.WriteString("version=") + builder.WriteString(db.Version) + builder.WriteString(", ") + builder.WriteString("github_repo=") + builder.WriteString(db.GithubRepo) + builder.WriteString(", ") + builder.WriteString("git_ref=") + builder.WriteString(db.GitRef) + builder.WriteString(", ") + builder.WriteString("git_hash=") + builder.WriteString(db.GitHash) + builder.WriteString(", ") + builder.WriteString("plugin_git_ref=") + builder.WriteString(db.PluginGitRef) + builder.WriteString(", ") + builder.WriteString("is_hotfix=") + builder.WriteString(fmt.Sprintf("%v", db.IsHotfix)) + builder.WriteString(", ") + builder.WriteString("is_push_gcr=") + builder.WriteString(fmt.Sprintf("%v", db.IsPushGcr)) + builder.WriteString(", ") + builder.WriteString("target_img=") + builder.WriteString(db.TargetImg) + builder.WriteString(", ") + builder.WriteString("pipeline_engine=") + builder.WriteString(db.PipelineEngine) + builder.WriteString(", ") + builder.WriteString("builder_img=") + builder.WriteString(db.BuilderImg) + builder.WriteString(", ") + builder.WriteString("build_env=") + builder.WriteString(db.BuildEnv) + builder.WriteString(", ") + builder.WriteString("features=") + builder.WriteString(db.Features) + builder.WriteString(", ") + builder.WriteString("product_base_img=") + builder.WriteString(db.ProductBaseImg) + builder.WriteString(", ") + builder.WriteString("product_dockerfile=") + builder.WriteString(db.ProductDockerfile) + builder.WriteString(", ") + builder.WriteString("status=") + builder.WriteString(db.Status) + builder.WriteString(", ") + builder.WriteString("err_msg=") + builder.WriteString(db.ErrMsg) + builder.WriteString(", ") + builder.WriteString("pipeline_build_id=") + builder.WriteString(fmt.Sprintf("%v", db.PipelineBuildID)) + builder.WriteString(", ") + builder.WriteString("pipeline_start_at=") + builder.WriteString(db.PipelineStartAt.Format(time.ANSIC)) + builder.WriteString(", ") + builder.WriteString("pipeline_end_at=") + builder.WriteString(db.PipelineEndAt.Format(time.ANSIC)) + builder.WriteString(", ") + builder.WriteString("build_report=") + builder.WriteString(fmt.Sprintf("%v", db.BuildReport)) + builder.WriteString(", ") + builder.WriteString("tekton_status=") + builder.WriteString(fmt.Sprintf("%v", db.TektonStatus)) + builder.WriteByte(')') + return builder.String() +} + +// DevBuilds is a parsable slice of DevBuild. +type DevBuilds []*DevBuild diff --git a/experiments/tibuild-v2/internal/database/ent/devbuild/devbuild.go b/experiments/tibuild-v2/internal/database/ent/devbuild/devbuild.go new file mode 100644 index 00000000..889bf301 --- /dev/null +++ b/experiments/tibuild-v2/internal/database/ent/devbuild/devbuild.go @@ -0,0 +1,288 @@ +// Code generated by ent, DO NOT EDIT. + +package devbuild + +import ( + "time" + + "entgo.io/ent/dialect/sql" +) + +const ( + // Label holds the string label denoting the devbuild type in the database. + Label = "dev_build" + // FieldID holds the string denoting the id field in the database. + FieldID = "id" + // FieldCreatedBy holds the string denoting the created_by field in the database. + FieldCreatedBy = "created_by" + // FieldCreatedAt holds the string denoting the created_at field in the database. + FieldCreatedAt = "created_at" + // FieldUpdatedAt holds the string denoting the updated_at field in the database. + FieldUpdatedAt = "updated_at" + // FieldProduct holds the string denoting the product field in the database. + FieldProduct = "product" + // FieldEdition holds the string denoting the edition field in the database. + FieldEdition = "edition" + // FieldVersion holds the string denoting the version field in the database. + FieldVersion = "version" + // FieldGithubRepo holds the string denoting the github_repo field in the database. + FieldGithubRepo = "github_repo" + // FieldGitRef holds the string denoting the git_ref field in the database. + FieldGitRef = "git_ref" + // FieldGitHash holds the string denoting the git_hash field in the database. + FieldGitHash = "git_hash" + // FieldPluginGitRef holds the string denoting the plugin_git_ref field in the database. + FieldPluginGitRef = "plugin_git_ref" + // FieldIsHotfix holds the string denoting the is_hotfix field in the database. + FieldIsHotfix = "is_hotfix" + // FieldIsPushGcr holds the string denoting the is_push_gcr field in the database. + FieldIsPushGcr = "is_push_gcr" + // FieldTargetImg holds the string denoting the target_img field in the database. + FieldTargetImg = "target_img" + // FieldPipelineEngine holds the string denoting the pipeline_engine field in the database. + FieldPipelineEngine = "pipeline_engine" + // FieldBuilderImg holds the string denoting the builder_img field in the database. + FieldBuilderImg = "builder_img" + // FieldBuildEnv holds the string denoting the build_env field in the database. + FieldBuildEnv = "build_env" + // FieldFeatures holds the string denoting the features field in the database. + FieldFeatures = "features" + // FieldProductBaseImg holds the string denoting the product_base_img field in the database. + FieldProductBaseImg = "product_base_img" + // FieldProductDockerfile holds the string denoting the product_dockerfile field in the database. + FieldProductDockerfile = "product_dockerfile" + // FieldStatus holds the string denoting the status field in the database. + FieldStatus = "status" + // FieldErrMsg holds the string denoting the err_msg field in the database. + FieldErrMsg = "err_msg" + // FieldPipelineBuildID holds the string denoting the pipeline_build_id field in the database. + FieldPipelineBuildID = "pipeline_build_id" + // FieldPipelineStartAt holds the string denoting the pipeline_start_at field in the database. + FieldPipelineStartAt = "pipeline_start_at" + // FieldPipelineEndAt holds the string denoting the pipeline_end_at field in the database. + FieldPipelineEndAt = "pipeline_end_at" + // FieldBuildReport holds the string denoting the build_report field in the database. + FieldBuildReport = "build_report" + // FieldTektonStatus holds the string denoting the tekton_status field in the database. + FieldTektonStatus = "tekton_status" + // Table holds the table name of the devbuild in the database. + Table = "dev_builds" +) + +// Columns holds all SQL columns for devbuild fields. +var Columns = []string{ + FieldID, + FieldCreatedBy, + FieldCreatedAt, + FieldUpdatedAt, + FieldProduct, + FieldEdition, + FieldVersion, + FieldGithubRepo, + FieldGitRef, + FieldGitHash, + FieldPluginGitRef, + FieldIsHotfix, + FieldIsPushGcr, + FieldTargetImg, + FieldPipelineEngine, + FieldBuilderImg, + FieldBuildEnv, + FieldFeatures, + FieldProductBaseImg, + FieldProductDockerfile, + FieldStatus, + FieldErrMsg, + FieldPipelineBuildID, + FieldPipelineStartAt, + FieldPipelineEndAt, + FieldBuildReport, + FieldTektonStatus, +} + +// ValidColumn reports if the column name is valid (part of the table columns). +func ValidColumn(column string) bool { + for i := range Columns { + if column == Columns[i] { + return true + } + } + return false +} + +var ( + // CreatedByValidator is a validator for the "created_by" field. It is called by the builders before save. + CreatedByValidator func(string) error + // DefaultCreatedAt holds the default value on creation for the "created_at" field. + DefaultCreatedAt func() time.Time + // DefaultUpdatedAt holds the default value on creation for the "updated_at" field. + DefaultUpdatedAt func() time.Time + // UpdateDefaultUpdatedAt holds the default value on update for the "updated_at" field. + UpdateDefaultUpdatedAt func() time.Time + // ProductValidator is a validator for the "product" field. It is called by the builders before save. + ProductValidator func(string) error + // EditionValidator is a validator for the "edition" field. It is called by the builders before save. + EditionValidator func(string) error + // VersionValidator is a validator for the "version" field. It is called by the builders before save. + VersionValidator func(string) error + // GithubRepoValidator is a validator for the "github_repo" field. It is called by the builders before save. + GithubRepoValidator func(string) error + // GitRefValidator is a validator for the "git_ref" field. It is called by the builders before save. + GitRefValidator func(string) error + // GitHashValidator is a validator for the "git_hash" field. It is called by the builders before save. + GitHashValidator func(string) error + // PluginGitRefValidator is a validator for the "plugin_git_ref" field. It is called by the builders before save. + PluginGitRefValidator func(string) error + // DefaultIsHotfix holds the default value on creation for the "is_hotfix" field. + DefaultIsHotfix bool + // TargetImgValidator is a validator for the "target_img" field. It is called by the builders before save. + TargetImgValidator func(string) error + // DefaultPipelineEngine holds the default value on creation for the "pipeline_engine" field. + DefaultPipelineEngine string + // PipelineEngineValidator is a validator for the "pipeline_engine" field. It is called by the builders before save. + PipelineEngineValidator func(string) error + // BuilderImgValidator is a validator for the "builder_img" field. It is called by the builders before save. + BuilderImgValidator func(string) error + // BuildEnvValidator is a validator for the "build_env" field. It is called by the builders before save. + BuildEnvValidator func(string) error + // FeaturesValidator is a validator for the "features" field. It is called by the builders before save. + FeaturesValidator func(string) error + // ProductBaseImgValidator is a validator for the "product_base_img" field. It is called by the builders before save. + ProductBaseImgValidator func(string) error + // ProductDockerfileValidator is a validator for the "product_dockerfile" field. It is called by the builders before save. + ProductDockerfileValidator func(string) error + // DefaultStatus holds the default value on creation for the "status" field. + DefaultStatus string + // StatusValidator is a validator for the "status" field. It is called by the builders before save. + StatusValidator func(string) error + // ErrMsgValidator is a validator for the "err_msg" field. It is called by the builders before save. + ErrMsgValidator func(string) error +) + +// OrderOption defines the ordering options for the DevBuild queries. +type OrderOption func(*sql.Selector) + +// ByID orders the results by the id field. +func ByID(opts ...sql.OrderTermOption) OrderOption { + return sql.OrderByField(FieldID, opts...).ToFunc() +} + +// ByCreatedBy orders the results by the created_by field. +func ByCreatedBy(opts ...sql.OrderTermOption) OrderOption { + return sql.OrderByField(FieldCreatedBy, opts...).ToFunc() +} + +// ByCreatedAt orders the results by the created_at field. +func ByCreatedAt(opts ...sql.OrderTermOption) OrderOption { + return sql.OrderByField(FieldCreatedAt, opts...).ToFunc() +} + +// ByUpdatedAt orders the results by the updated_at field. +func ByUpdatedAt(opts ...sql.OrderTermOption) OrderOption { + return sql.OrderByField(FieldUpdatedAt, opts...).ToFunc() +} + +// ByProduct orders the results by the product field. +func ByProduct(opts ...sql.OrderTermOption) OrderOption { + return sql.OrderByField(FieldProduct, opts...).ToFunc() +} + +// ByEdition orders the results by the edition field. +func ByEdition(opts ...sql.OrderTermOption) OrderOption { + return sql.OrderByField(FieldEdition, opts...).ToFunc() +} + +// ByVersion orders the results by the version field. +func ByVersion(opts ...sql.OrderTermOption) OrderOption { + return sql.OrderByField(FieldVersion, opts...).ToFunc() +} + +// ByGithubRepo orders the results by the github_repo field. +func ByGithubRepo(opts ...sql.OrderTermOption) OrderOption { + return sql.OrderByField(FieldGithubRepo, opts...).ToFunc() +} + +// ByGitRef orders the results by the git_ref field. +func ByGitRef(opts ...sql.OrderTermOption) OrderOption { + return sql.OrderByField(FieldGitRef, opts...).ToFunc() +} + +// ByGitHash orders the results by the git_hash field. +func ByGitHash(opts ...sql.OrderTermOption) OrderOption { + return sql.OrderByField(FieldGitHash, opts...).ToFunc() +} + +// ByPluginGitRef orders the results by the plugin_git_ref field. +func ByPluginGitRef(opts ...sql.OrderTermOption) OrderOption { + return sql.OrderByField(FieldPluginGitRef, opts...).ToFunc() +} + +// ByIsHotfix orders the results by the is_hotfix field. +func ByIsHotfix(opts ...sql.OrderTermOption) OrderOption { + return sql.OrderByField(FieldIsHotfix, opts...).ToFunc() +} + +// ByIsPushGcr orders the results by the is_push_gcr field. +func ByIsPushGcr(opts ...sql.OrderTermOption) OrderOption { + return sql.OrderByField(FieldIsPushGcr, opts...).ToFunc() +} + +// ByTargetImg orders the results by the target_img field. +func ByTargetImg(opts ...sql.OrderTermOption) OrderOption { + return sql.OrderByField(FieldTargetImg, opts...).ToFunc() +} + +// ByPipelineEngine orders the results by the pipeline_engine field. +func ByPipelineEngine(opts ...sql.OrderTermOption) OrderOption { + return sql.OrderByField(FieldPipelineEngine, opts...).ToFunc() +} + +// ByBuilderImg orders the results by the builder_img field. +func ByBuilderImg(opts ...sql.OrderTermOption) OrderOption { + return sql.OrderByField(FieldBuilderImg, opts...).ToFunc() +} + +// ByBuildEnv orders the results by the build_env field. +func ByBuildEnv(opts ...sql.OrderTermOption) OrderOption { + return sql.OrderByField(FieldBuildEnv, opts...).ToFunc() +} + +// ByFeatures orders the results by the features field. +func ByFeatures(opts ...sql.OrderTermOption) OrderOption { + return sql.OrderByField(FieldFeatures, opts...).ToFunc() +} + +// ByProductBaseImg orders the results by the product_base_img field. +func ByProductBaseImg(opts ...sql.OrderTermOption) OrderOption { + return sql.OrderByField(FieldProductBaseImg, opts...).ToFunc() +} + +// ByProductDockerfile orders the results by the product_dockerfile field. +func ByProductDockerfile(opts ...sql.OrderTermOption) OrderOption { + return sql.OrderByField(FieldProductDockerfile, opts...).ToFunc() +} + +// ByStatus orders the results by the status field. +func ByStatus(opts ...sql.OrderTermOption) OrderOption { + return sql.OrderByField(FieldStatus, opts...).ToFunc() +} + +// ByErrMsg orders the results by the err_msg field. +func ByErrMsg(opts ...sql.OrderTermOption) OrderOption { + return sql.OrderByField(FieldErrMsg, opts...).ToFunc() +} + +// ByPipelineBuildID orders the results by the pipeline_build_id field. +func ByPipelineBuildID(opts ...sql.OrderTermOption) OrderOption { + return sql.OrderByField(FieldPipelineBuildID, opts...).ToFunc() +} + +// ByPipelineStartAt orders the results by the pipeline_start_at field. +func ByPipelineStartAt(opts ...sql.OrderTermOption) OrderOption { + return sql.OrderByField(FieldPipelineStartAt, opts...).ToFunc() +} + +// ByPipelineEndAt orders the results by the pipeline_end_at field. +func ByPipelineEndAt(opts ...sql.OrderTermOption) OrderOption { + return sql.OrderByField(FieldPipelineEndAt, opts...).ToFunc() +} diff --git a/experiments/tibuild-v2/internal/database/ent/devbuild/where.go b/experiments/tibuild-v2/internal/database/ent/devbuild/where.go new file mode 100644 index 00000000..09f7c085 --- /dev/null +++ b/experiments/tibuild-v2/internal/database/ent/devbuild/where.go @@ -0,0 +1,1745 @@ +// Code generated by ent, DO NOT EDIT. + +package devbuild + +import ( + "time" + + "entgo.io/ent/dialect/sql" + "github.com/PingCAP-QE/ee-apps/tibuild/internal/database/ent/predicate" +) + +// ID filters vertices based on their ID field. +func ID(id int) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldID, id)) +} + +// IDEQ applies the EQ predicate on the ID field. +func IDEQ(id int) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldID, id)) +} + +// IDNEQ applies the NEQ predicate on the ID field. +func IDNEQ(id int) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNEQ(FieldID, id)) +} + +// IDIn applies the In predicate on the ID field. +func IDIn(ids ...int) predicate.DevBuild { + return predicate.DevBuild(sql.FieldIn(FieldID, ids...)) +} + +// IDNotIn applies the NotIn predicate on the ID field. +func IDNotIn(ids ...int) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotIn(FieldID, ids...)) +} + +// IDGT applies the GT predicate on the ID field. +func IDGT(id int) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGT(FieldID, id)) +} + +// IDGTE applies the GTE predicate on the ID field. +func IDGTE(id int) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGTE(FieldID, id)) +} + +// IDLT applies the LT predicate on the ID field. +func IDLT(id int) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLT(FieldID, id)) +} + +// IDLTE applies the LTE predicate on the ID field. +func IDLTE(id int) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLTE(FieldID, id)) +} + +// CreatedBy applies equality check predicate on the "created_by" field. It's identical to CreatedByEQ. +func CreatedBy(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldCreatedBy, v)) +} + +// CreatedAt applies equality check predicate on the "created_at" field. It's identical to CreatedAtEQ. +func CreatedAt(v time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldCreatedAt, v)) +} + +// UpdatedAt applies equality check predicate on the "updated_at" field. It's identical to UpdatedAtEQ. +func UpdatedAt(v time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldUpdatedAt, v)) +} + +// Product applies equality check predicate on the "product" field. It's identical to ProductEQ. +func Product(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldProduct, v)) +} + +// Edition applies equality check predicate on the "edition" field. It's identical to EditionEQ. +func Edition(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldEdition, v)) +} + +// Version applies equality check predicate on the "version" field. It's identical to VersionEQ. +func Version(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldVersion, v)) +} + +// GithubRepo applies equality check predicate on the "github_repo" field. It's identical to GithubRepoEQ. +func GithubRepo(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldGithubRepo, v)) +} + +// GitRef applies equality check predicate on the "git_ref" field. It's identical to GitRefEQ. +func GitRef(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldGitRef, v)) +} + +// GitHash applies equality check predicate on the "git_hash" field. It's identical to GitHashEQ. +func GitHash(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldGitHash, v)) +} + +// PluginGitRef applies equality check predicate on the "plugin_git_ref" field. It's identical to PluginGitRefEQ. +func PluginGitRef(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldPluginGitRef, v)) +} + +// IsHotfix applies equality check predicate on the "is_hotfix" field. It's identical to IsHotfixEQ. +func IsHotfix(v bool) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldIsHotfix, v)) +} + +// IsPushGcr applies equality check predicate on the "is_push_gcr" field. It's identical to IsPushGcrEQ. +func IsPushGcr(v bool) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldIsPushGcr, v)) +} + +// TargetImg applies equality check predicate on the "target_img" field. It's identical to TargetImgEQ. +func TargetImg(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldTargetImg, v)) +} + +// PipelineEngine applies equality check predicate on the "pipeline_engine" field. It's identical to PipelineEngineEQ. +func PipelineEngine(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldPipelineEngine, v)) +} + +// BuilderImg applies equality check predicate on the "builder_img" field. It's identical to BuilderImgEQ. +func BuilderImg(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldBuilderImg, v)) +} + +// BuildEnv applies equality check predicate on the "build_env" field. It's identical to BuildEnvEQ. +func BuildEnv(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldBuildEnv, v)) +} + +// Features applies equality check predicate on the "features" field. It's identical to FeaturesEQ. +func Features(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldFeatures, v)) +} + +// ProductBaseImg applies equality check predicate on the "product_base_img" field. It's identical to ProductBaseImgEQ. +func ProductBaseImg(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldProductBaseImg, v)) +} + +// ProductDockerfile applies equality check predicate on the "product_dockerfile" field. It's identical to ProductDockerfileEQ. +func ProductDockerfile(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldProductDockerfile, v)) +} + +// Status applies equality check predicate on the "status" field. It's identical to StatusEQ. +func Status(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldStatus, v)) +} + +// ErrMsg applies equality check predicate on the "err_msg" field. It's identical to ErrMsgEQ. +func ErrMsg(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldErrMsg, v)) +} + +// PipelineBuildID applies equality check predicate on the "pipeline_build_id" field. It's identical to PipelineBuildIDEQ. +func PipelineBuildID(v int64) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldPipelineBuildID, v)) +} + +// PipelineStartAt applies equality check predicate on the "pipeline_start_at" field. It's identical to PipelineStartAtEQ. +func PipelineStartAt(v time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldPipelineStartAt, v)) +} + +// PipelineEndAt applies equality check predicate on the "pipeline_end_at" field. It's identical to PipelineEndAtEQ. +func PipelineEndAt(v time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldPipelineEndAt, v)) +} + +// CreatedByEQ applies the EQ predicate on the "created_by" field. +func CreatedByEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldCreatedBy, v)) +} + +// CreatedByNEQ applies the NEQ predicate on the "created_by" field. +func CreatedByNEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNEQ(FieldCreatedBy, v)) +} + +// CreatedByIn applies the In predicate on the "created_by" field. +func CreatedByIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldIn(FieldCreatedBy, vs...)) +} + +// CreatedByNotIn applies the NotIn predicate on the "created_by" field. +func CreatedByNotIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotIn(FieldCreatedBy, vs...)) +} + +// CreatedByGT applies the GT predicate on the "created_by" field. +func CreatedByGT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGT(FieldCreatedBy, v)) +} + +// CreatedByGTE applies the GTE predicate on the "created_by" field. +func CreatedByGTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGTE(FieldCreatedBy, v)) +} + +// CreatedByLT applies the LT predicate on the "created_by" field. +func CreatedByLT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLT(FieldCreatedBy, v)) +} + +// CreatedByLTE applies the LTE predicate on the "created_by" field. +func CreatedByLTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLTE(FieldCreatedBy, v)) +} + +// CreatedByContains applies the Contains predicate on the "created_by" field. +func CreatedByContains(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContains(FieldCreatedBy, v)) +} + +// CreatedByHasPrefix applies the HasPrefix predicate on the "created_by" field. +func CreatedByHasPrefix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasPrefix(FieldCreatedBy, v)) +} + +// CreatedByHasSuffix applies the HasSuffix predicate on the "created_by" field. +func CreatedByHasSuffix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasSuffix(FieldCreatedBy, v)) +} + +// CreatedByIsNil applies the IsNil predicate on the "created_by" field. +func CreatedByIsNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldIsNull(FieldCreatedBy)) +} + +// CreatedByNotNil applies the NotNil predicate on the "created_by" field. +func CreatedByNotNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotNull(FieldCreatedBy)) +} + +// CreatedByEqualFold applies the EqualFold predicate on the "created_by" field. +func CreatedByEqualFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEqualFold(FieldCreatedBy, v)) +} + +// CreatedByContainsFold applies the ContainsFold predicate on the "created_by" field. +func CreatedByContainsFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContainsFold(FieldCreatedBy, v)) +} + +// CreatedAtEQ applies the EQ predicate on the "created_at" field. +func CreatedAtEQ(v time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldCreatedAt, v)) +} + +// CreatedAtNEQ applies the NEQ predicate on the "created_at" field. +func CreatedAtNEQ(v time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNEQ(FieldCreatedAt, v)) +} + +// CreatedAtIn applies the In predicate on the "created_at" field. +func CreatedAtIn(vs ...time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldIn(FieldCreatedAt, vs...)) +} + +// CreatedAtNotIn applies the NotIn predicate on the "created_at" field. +func CreatedAtNotIn(vs ...time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotIn(FieldCreatedAt, vs...)) +} + +// CreatedAtGT applies the GT predicate on the "created_at" field. +func CreatedAtGT(v time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGT(FieldCreatedAt, v)) +} + +// CreatedAtGTE applies the GTE predicate on the "created_at" field. +func CreatedAtGTE(v time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGTE(FieldCreatedAt, v)) +} + +// CreatedAtLT applies the LT predicate on the "created_at" field. +func CreatedAtLT(v time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLT(FieldCreatedAt, v)) +} + +// CreatedAtLTE applies the LTE predicate on the "created_at" field. +func CreatedAtLTE(v time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLTE(FieldCreatedAt, v)) +} + +// UpdatedAtEQ applies the EQ predicate on the "updated_at" field. +func UpdatedAtEQ(v time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldUpdatedAt, v)) +} + +// UpdatedAtNEQ applies the NEQ predicate on the "updated_at" field. +func UpdatedAtNEQ(v time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNEQ(FieldUpdatedAt, v)) +} + +// UpdatedAtIn applies the In predicate on the "updated_at" field. +func UpdatedAtIn(vs ...time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldIn(FieldUpdatedAt, vs...)) +} + +// UpdatedAtNotIn applies the NotIn predicate on the "updated_at" field. +func UpdatedAtNotIn(vs ...time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotIn(FieldUpdatedAt, vs...)) +} + +// UpdatedAtGT applies the GT predicate on the "updated_at" field. +func UpdatedAtGT(v time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGT(FieldUpdatedAt, v)) +} + +// UpdatedAtGTE applies the GTE predicate on the "updated_at" field. +func UpdatedAtGTE(v time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGTE(FieldUpdatedAt, v)) +} + +// UpdatedAtLT applies the LT predicate on the "updated_at" field. +func UpdatedAtLT(v time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLT(FieldUpdatedAt, v)) +} + +// UpdatedAtLTE applies the LTE predicate on the "updated_at" field. +func UpdatedAtLTE(v time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLTE(FieldUpdatedAt, v)) +} + +// ProductEQ applies the EQ predicate on the "product" field. +func ProductEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldProduct, v)) +} + +// ProductNEQ applies the NEQ predicate on the "product" field. +func ProductNEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNEQ(FieldProduct, v)) +} + +// ProductIn applies the In predicate on the "product" field. +func ProductIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldIn(FieldProduct, vs...)) +} + +// ProductNotIn applies the NotIn predicate on the "product" field. +func ProductNotIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotIn(FieldProduct, vs...)) +} + +// ProductGT applies the GT predicate on the "product" field. +func ProductGT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGT(FieldProduct, v)) +} + +// ProductGTE applies the GTE predicate on the "product" field. +func ProductGTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGTE(FieldProduct, v)) +} + +// ProductLT applies the LT predicate on the "product" field. +func ProductLT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLT(FieldProduct, v)) +} + +// ProductLTE applies the LTE predicate on the "product" field. +func ProductLTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLTE(FieldProduct, v)) +} + +// ProductContains applies the Contains predicate on the "product" field. +func ProductContains(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContains(FieldProduct, v)) +} + +// ProductHasPrefix applies the HasPrefix predicate on the "product" field. +func ProductHasPrefix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasPrefix(FieldProduct, v)) +} + +// ProductHasSuffix applies the HasSuffix predicate on the "product" field. +func ProductHasSuffix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasSuffix(FieldProduct, v)) +} + +// ProductIsNil applies the IsNil predicate on the "product" field. +func ProductIsNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldIsNull(FieldProduct)) +} + +// ProductNotNil applies the NotNil predicate on the "product" field. +func ProductNotNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotNull(FieldProduct)) +} + +// ProductEqualFold applies the EqualFold predicate on the "product" field. +func ProductEqualFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEqualFold(FieldProduct, v)) +} + +// ProductContainsFold applies the ContainsFold predicate on the "product" field. +func ProductContainsFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContainsFold(FieldProduct, v)) +} + +// EditionEQ applies the EQ predicate on the "edition" field. +func EditionEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldEdition, v)) +} + +// EditionNEQ applies the NEQ predicate on the "edition" field. +func EditionNEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNEQ(FieldEdition, v)) +} + +// EditionIn applies the In predicate on the "edition" field. +func EditionIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldIn(FieldEdition, vs...)) +} + +// EditionNotIn applies the NotIn predicate on the "edition" field. +func EditionNotIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotIn(FieldEdition, vs...)) +} + +// EditionGT applies the GT predicate on the "edition" field. +func EditionGT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGT(FieldEdition, v)) +} + +// EditionGTE applies the GTE predicate on the "edition" field. +func EditionGTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGTE(FieldEdition, v)) +} + +// EditionLT applies the LT predicate on the "edition" field. +func EditionLT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLT(FieldEdition, v)) +} + +// EditionLTE applies the LTE predicate on the "edition" field. +func EditionLTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLTE(FieldEdition, v)) +} + +// EditionContains applies the Contains predicate on the "edition" field. +func EditionContains(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContains(FieldEdition, v)) +} + +// EditionHasPrefix applies the HasPrefix predicate on the "edition" field. +func EditionHasPrefix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasPrefix(FieldEdition, v)) +} + +// EditionHasSuffix applies the HasSuffix predicate on the "edition" field. +func EditionHasSuffix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasSuffix(FieldEdition, v)) +} + +// EditionIsNil applies the IsNil predicate on the "edition" field. +func EditionIsNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldIsNull(FieldEdition)) +} + +// EditionNotNil applies the NotNil predicate on the "edition" field. +func EditionNotNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotNull(FieldEdition)) +} + +// EditionEqualFold applies the EqualFold predicate on the "edition" field. +func EditionEqualFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEqualFold(FieldEdition, v)) +} + +// EditionContainsFold applies the ContainsFold predicate on the "edition" field. +func EditionContainsFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContainsFold(FieldEdition, v)) +} + +// VersionEQ applies the EQ predicate on the "version" field. +func VersionEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldVersion, v)) +} + +// VersionNEQ applies the NEQ predicate on the "version" field. +func VersionNEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNEQ(FieldVersion, v)) +} + +// VersionIn applies the In predicate on the "version" field. +func VersionIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldIn(FieldVersion, vs...)) +} + +// VersionNotIn applies the NotIn predicate on the "version" field. +func VersionNotIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotIn(FieldVersion, vs...)) +} + +// VersionGT applies the GT predicate on the "version" field. +func VersionGT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGT(FieldVersion, v)) +} + +// VersionGTE applies the GTE predicate on the "version" field. +func VersionGTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGTE(FieldVersion, v)) +} + +// VersionLT applies the LT predicate on the "version" field. +func VersionLT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLT(FieldVersion, v)) +} + +// VersionLTE applies the LTE predicate on the "version" field. +func VersionLTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLTE(FieldVersion, v)) +} + +// VersionContains applies the Contains predicate on the "version" field. +func VersionContains(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContains(FieldVersion, v)) +} + +// VersionHasPrefix applies the HasPrefix predicate on the "version" field. +func VersionHasPrefix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasPrefix(FieldVersion, v)) +} + +// VersionHasSuffix applies the HasSuffix predicate on the "version" field. +func VersionHasSuffix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasSuffix(FieldVersion, v)) +} + +// VersionIsNil applies the IsNil predicate on the "version" field. +func VersionIsNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldIsNull(FieldVersion)) +} + +// VersionNotNil applies the NotNil predicate on the "version" field. +func VersionNotNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotNull(FieldVersion)) +} + +// VersionEqualFold applies the EqualFold predicate on the "version" field. +func VersionEqualFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEqualFold(FieldVersion, v)) +} + +// VersionContainsFold applies the ContainsFold predicate on the "version" field. +func VersionContainsFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContainsFold(FieldVersion, v)) +} + +// GithubRepoEQ applies the EQ predicate on the "github_repo" field. +func GithubRepoEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldGithubRepo, v)) +} + +// GithubRepoNEQ applies the NEQ predicate on the "github_repo" field. +func GithubRepoNEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNEQ(FieldGithubRepo, v)) +} + +// GithubRepoIn applies the In predicate on the "github_repo" field. +func GithubRepoIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldIn(FieldGithubRepo, vs...)) +} + +// GithubRepoNotIn applies the NotIn predicate on the "github_repo" field. +func GithubRepoNotIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotIn(FieldGithubRepo, vs...)) +} + +// GithubRepoGT applies the GT predicate on the "github_repo" field. +func GithubRepoGT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGT(FieldGithubRepo, v)) +} + +// GithubRepoGTE applies the GTE predicate on the "github_repo" field. +func GithubRepoGTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGTE(FieldGithubRepo, v)) +} + +// GithubRepoLT applies the LT predicate on the "github_repo" field. +func GithubRepoLT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLT(FieldGithubRepo, v)) +} + +// GithubRepoLTE applies the LTE predicate on the "github_repo" field. +func GithubRepoLTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLTE(FieldGithubRepo, v)) +} + +// GithubRepoContains applies the Contains predicate on the "github_repo" field. +func GithubRepoContains(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContains(FieldGithubRepo, v)) +} + +// GithubRepoHasPrefix applies the HasPrefix predicate on the "github_repo" field. +func GithubRepoHasPrefix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasPrefix(FieldGithubRepo, v)) +} + +// GithubRepoHasSuffix applies the HasSuffix predicate on the "github_repo" field. +func GithubRepoHasSuffix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasSuffix(FieldGithubRepo, v)) +} + +// GithubRepoIsNil applies the IsNil predicate on the "github_repo" field. +func GithubRepoIsNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldIsNull(FieldGithubRepo)) +} + +// GithubRepoNotNil applies the NotNil predicate on the "github_repo" field. +func GithubRepoNotNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotNull(FieldGithubRepo)) +} + +// GithubRepoEqualFold applies the EqualFold predicate on the "github_repo" field. +func GithubRepoEqualFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEqualFold(FieldGithubRepo, v)) +} + +// GithubRepoContainsFold applies the ContainsFold predicate on the "github_repo" field. +func GithubRepoContainsFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContainsFold(FieldGithubRepo, v)) +} + +// GitRefEQ applies the EQ predicate on the "git_ref" field. +func GitRefEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldGitRef, v)) +} + +// GitRefNEQ applies the NEQ predicate on the "git_ref" field. +func GitRefNEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNEQ(FieldGitRef, v)) +} + +// GitRefIn applies the In predicate on the "git_ref" field. +func GitRefIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldIn(FieldGitRef, vs...)) +} + +// GitRefNotIn applies the NotIn predicate on the "git_ref" field. +func GitRefNotIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotIn(FieldGitRef, vs...)) +} + +// GitRefGT applies the GT predicate on the "git_ref" field. +func GitRefGT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGT(FieldGitRef, v)) +} + +// GitRefGTE applies the GTE predicate on the "git_ref" field. +func GitRefGTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGTE(FieldGitRef, v)) +} + +// GitRefLT applies the LT predicate on the "git_ref" field. +func GitRefLT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLT(FieldGitRef, v)) +} + +// GitRefLTE applies the LTE predicate on the "git_ref" field. +func GitRefLTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLTE(FieldGitRef, v)) +} + +// GitRefContains applies the Contains predicate on the "git_ref" field. +func GitRefContains(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContains(FieldGitRef, v)) +} + +// GitRefHasPrefix applies the HasPrefix predicate on the "git_ref" field. +func GitRefHasPrefix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasPrefix(FieldGitRef, v)) +} + +// GitRefHasSuffix applies the HasSuffix predicate on the "git_ref" field. +func GitRefHasSuffix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasSuffix(FieldGitRef, v)) +} + +// GitRefIsNil applies the IsNil predicate on the "git_ref" field. +func GitRefIsNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldIsNull(FieldGitRef)) +} + +// GitRefNotNil applies the NotNil predicate on the "git_ref" field. +func GitRefNotNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotNull(FieldGitRef)) +} + +// GitRefEqualFold applies the EqualFold predicate on the "git_ref" field. +func GitRefEqualFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEqualFold(FieldGitRef, v)) +} + +// GitRefContainsFold applies the ContainsFold predicate on the "git_ref" field. +func GitRefContainsFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContainsFold(FieldGitRef, v)) +} + +// GitHashEQ applies the EQ predicate on the "git_hash" field. +func GitHashEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldGitHash, v)) +} + +// GitHashNEQ applies the NEQ predicate on the "git_hash" field. +func GitHashNEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNEQ(FieldGitHash, v)) +} + +// GitHashIn applies the In predicate on the "git_hash" field. +func GitHashIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldIn(FieldGitHash, vs...)) +} + +// GitHashNotIn applies the NotIn predicate on the "git_hash" field. +func GitHashNotIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotIn(FieldGitHash, vs...)) +} + +// GitHashGT applies the GT predicate on the "git_hash" field. +func GitHashGT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGT(FieldGitHash, v)) +} + +// GitHashGTE applies the GTE predicate on the "git_hash" field. +func GitHashGTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGTE(FieldGitHash, v)) +} + +// GitHashLT applies the LT predicate on the "git_hash" field. +func GitHashLT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLT(FieldGitHash, v)) +} + +// GitHashLTE applies the LTE predicate on the "git_hash" field. +func GitHashLTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLTE(FieldGitHash, v)) +} + +// GitHashContains applies the Contains predicate on the "git_hash" field. +func GitHashContains(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContains(FieldGitHash, v)) +} + +// GitHashHasPrefix applies the HasPrefix predicate on the "git_hash" field. +func GitHashHasPrefix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasPrefix(FieldGitHash, v)) +} + +// GitHashHasSuffix applies the HasSuffix predicate on the "git_hash" field. +func GitHashHasSuffix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasSuffix(FieldGitHash, v)) +} + +// GitHashIsNil applies the IsNil predicate on the "git_hash" field. +func GitHashIsNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldIsNull(FieldGitHash)) +} + +// GitHashNotNil applies the NotNil predicate on the "git_hash" field. +func GitHashNotNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotNull(FieldGitHash)) +} + +// GitHashEqualFold applies the EqualFold predicate on the "git_hash" field. +func GitHashEqualFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEqualFold(FieldGitHash, v)) +} + +// GitHashContainsFold applies the ContainsFold predicate on the "git_hash" field. +func GitHashContainsFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContainsFold(FieldGitHash, v)) +} + +// PluginGitRefEQ applies the EQ predicate on the "plugin_git_ref" field. +func PluginGitRefEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldPluginGitRef, v)) +} + +// PluginGitRefNEQ applies the NEQ predicate on the "plugin_git_ref" field. +func PluginGitRefNEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNEQ(FieldPluginGitRef, v)) +} + +// PluginGitRefIn applies the In predicate on the "plugin_git_ref" field. +func PluginGitRefIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldIn(FieldPluginGitRef, vs...)) +} + +// PluginGitRefNotIn applies the NotIn predicate on the "plugin_git_ref" field. +func PluginGitRefNotIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotIn(FieldPluginGitRef, vs...)) +} + +// PluginGitRefGT applies the GT predicate on the "plugin_git_ref" field. +func PluginGitRefGT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGT(FieldPluginGitRef, v)) +} + +// PluginGitRefGTE applies the GTE predicate on the "plugin_git_ref" field. +func PluginGitRefGTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGTE(FieldPluginGitRef, v)) +} + +// PluginGitRefLT applies the LT predicate on the "plugin_git_ref" field. +func PluginGitRefLT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLT(FieldPluginGitRef, v)) +} + +// PluginGitRefLTE applies the LTE predicate on the "plugin_git_ref" field. +func PluginGitRefLTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLTE(FieldPluginGitRef, v)) +} + +// PluginGitRefContains applies the Contains predicate on the "plugin_git_ref" field. +func PluginGitRefContains(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContains(FieldPluginGitRef, v)) +} + +// PluginGitRefHasPrefix applies the HasPrefix predicate on the "plugin_git_ref" field. +func PluginGitRefHasPrefix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasPrefix(FieldPluginGitRef, v)) +} + +// PluginGitRefHasSuffix applies the HasSuffix predicate on the "plugin_git_ref" field. +func PluginGitRefHasSuffix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasSuffix(FieldPluginGitRef, v)) +} + +// PluginGitRefIsNil applies the IsNil predicate on the "plugin_git_ref" field. +func PluginGitRefIsNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldIsNull(FieldPluginGitRef)) +} + +// PluginGitRefNotNil applies the NotNil predicate on the "plugin_git_ref" field. +func PluginGitRefNotNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotNull(FieldPluginGitRef)) +} + +// PluginGitRefEqualFold applies the EqualFold predicate on the "plugin_git_ref" field. +func PluginGitRefEqualFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEqualFold(FieldPluginGitRef, v)) +} + +// PluginGitRefContainsFold applies the ContainsFold predicate on the "plugin_git_ref" field. +func PluginGitRefContainsFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContainsFold(FieldPluginGitRef, v)) +} + +// IsHotfixEQ applies the EQ predicate on the "is_hotfix" field. +func IsHotfixEQ(v bool) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldIsHotfix, v)) +} + +// IsHotfixNEQ applies the NEQ predicate on the "is_hotfix" field. +func IsHotfixNEQ(v bool) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNEQ(FieldIsHotfix, v)) +} + +// IsPushGcrEQ applies the EQ predicate on the "is_push_gcr" field. +func IsPushGcrEQ(v bool) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldIsPushGcr, v)) +} + +// IsPushGcrNEQ applies the NEQ predicate on the "is_push_gcr" field. +func IsPushGcrNEQ(v bool) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNEQ(FieldIsPushGcr, v)) +} + +// IsPushGcrIsNil applies the IsNil predicate on the "is_push_gcr" field. +func IsPushGcrIsNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldIsNull(FieldIsPushGcr)) +} + +// IsPushGcrNotNil applies the NotNil predicate on the "is_push_gcr" field. +func IsPushGcrNotNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotNull(FieldIsPushGcr)) +} + +// TargetImgEQ applies the EQ predicate on the "target_img" field. +func TargetImgEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldTargetImg, v)) +} + +// TargetImgNEQ applies the NEQ predicate on the "target_img" field. +func TargetImgNEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNEQ(FieldTargetImg, v)) +} + +// TargetImgIn applies the In predicate on the "target_img" field. +func TargetImgIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldIn(FieldTargetImg, vs...)) +} + +// TargetImgNotIn applies the NotIn predicate on the "target_img" field. +func TargetImgNotIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotIn(FieldTargetImg, vs...)) +} + +// TargetImgGT applies the GT predicate on the "target_img" field. +func TargetImgGT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGT(FieldTargetImg, v)) +} + +// TargetImgGTE applies the GTE predicate on the "target_img" field. +func TargetImgGTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGTE(FieldTargetImg, v)) +} + +// TargetImgLT applies the LT predicate on the "target_img" field. +func TargetImgLT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLT(FieldTargetImg, v)) +} + +// TargetImgLTE applies the LTE predicate on the "target_img" field. +func TargetImgLTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLTE(FieldTargetImg, v)) +} + +// TargetImgContains applies the Contains predicate on the "target_img" field. +func TargetImgContains(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContains(FieldTargetImg, v)) +} + +// TargetImgHasPrefix applies the HasPrefix predicate on the "target_img" field. +func TargetImgHasPrefix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasPrefix(FieldTargetImg, v)) +} + +// TargetImgHasSuffix applies the HasSuffix predicate on the "target_img" field. +func TargetImgHasSuffix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasSuffix(FieldTargetImg, v)) +} + +// TargetImgIsNil applies the IsNil predicate on the "target_img" field. +func TargetImgIsNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldIsNull(FieldTargetImg)) +} + +// TargetImgNotNil applies the NotNil predicate on the "target_img" field. +func TargetImgNotNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotNull(FieldTargetImg)) +} + +// TargetImgEqualFold applies the EqualFold predicate on the "target_img" field. +func TargetImgEqualFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEqualFold(FieldTargetImg, v)) +} + +// TargetImgContainsFold applies the ContainsFold predicate on the "target_img" field. +func TargetImgContainsFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContainsFold(FieldTargetImg, v)) +} + +// PipelineEngineEQ applies the EQ predicate on the "pipeline_engine" field. +func PipelineEngineEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldPipelineEngine, v)) +} + +// PipelineEngineNEQ applies the NEQ predicate on the "pipeline_engine" field. +func PipelineEngineNEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNEQ(FieldPipelineEngine, v)) +} + +// PipelineEngineIn applies the In predicate on the "pipeline_engine" field. +func PipelineEngineIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldIn(FieldPipelineEngine, vs...)) +} + +// PipelineEngineNotIn applies the NotIn predicate on the "pipeline_engine" field. +func PipelineEngineNotIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotIn(FieldPipelineEngine, vs...)) +} + +// PipelineEngineGT applies the GT predicate on the "pipeline_engine" field. +func PipelineEngineGT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGT(FieldPipelineEngine, v)) +} + +// PipelineEngineGTE applies the GTE predicate on the "pipeline_engine" field. +func PipelineEngineGTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGTE(FieldPipelineEngine, v)) +} + +// PipelineEngineLT applies the LT predicate on the "pipeline_engine" field. +func PipelineEngineLT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLT(FieldPipelineEngine, v)) +} + +// PipelineEngineLTE applies the LTE predicate on the "pipeline_engine" field. +func PipelineEngineLTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLTE(FieldPipelineEngine, v)) +} + +// PipelineEngineContains applies the Contains predicate on the "pipeline_engine" field. +func PipelineEngineContains(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContains(FieldPipelineEngine, v)) +} + +// PipelineEngineHasPrefix applies the HasPrefix predicate on the "pipeline_engine" field. +func PipelineEngineHasPrefix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasPrefix(FieldPipelineEngine, v)) +} + +// PipelineEngineHasSuffix applies the HasSuffix predicate on the "pipeline_engine" field. +func PipelineEngineHasSuffix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasSuffix(FieldPipelineEngine, v)) +} + +// PipelineEngineIsNil applies the IsNil predicate on the "pipeline_engine" field. +func PipelineEngineIsNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldIsNull(FieldPipelineEngine)) +} + +// PipelineEngineNotNil applies the NotNil predicate on the "pipeline_engine" field. +func PipelineEngineNotNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotNull(FieldPipelineEngine)) +} + +// PipelineEngineEqualFold applies the EqualFold predicate on the "pipeline_engine" field. +func PipelineEngineEqualFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEqualFold(FieldPipelineEngine, v)) +} + +// PipelineEngineContainsFold applies the ContainsFold predicate on the "pipeline_engine" field. +func PipelineEngineContainsFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContainsFold(FieldPipelineEngine, v)) +} + +// BuilderImgEQ applies the EQ predicate on the "builder_img" field. +func BuilderImgEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldBuilderImg, v)) +} + +// BuilderImgNEQ applies the NEQ predicate on the "builder_img" field. +func BuilderImgNEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNEQ(FieldBuilderImg, v)) +} + +// BuilderImgIn applies the In predicate on the "builder_img" field. +func BuilderImgIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldIn(FieldBuilderImg, vs...)) +} + +// BuilderImgNotIn applies the NotIn predicate on the "builder_img" field. +func BuilderImgNotIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotIn(FieldBuilderImg, vs...)) +} + +// BuilderImgGT applies the GT predicate on the "builder_img" field. +func BuilderImgGT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGT(FieldBuilderImg, v)) +} + +// BuilderImgGTE applies the GTE predicate on the "builder_img" field. +func BuilderImgGTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGTE(FieldBuilderImg, v)) +} + +// BuilderImgLT applies the LT predicate on the "builder_img" field. +func BuilderImgLT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLT(FieldBuilderImg, v)) +} + +// BuilderImgLTE applies the LTE predicate on the "builder_img" field. +func BuilderImgLTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLTE(FieldBuilderImg, v)) +} + +// BuilderImgContains applies the Contains predicate on the "builder_img" field. +func BuilderImgContains(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContains(FieldBuilderImg, v)) +} + +// BuilderImgHasPrefix applies the HasPrefix predicate on the "builder_img" field. +func BuilderImgHasPrefix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasPrefix(FieldBuilderImg, v)) +} + +// BuilderImgHasSuffix applies the HasSuffix predicate on the "builder_img" field. +func BuilderImgHasSuffix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasSuffix(FieldBuilderImg, v)) +} + +// BuilderImgIsNil applies the IsNil predicate on the "builder_img" field. +func BuilderImgIsNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldIsNull(FieldBuilderImg)) +} + +// BuilderImgNotNil applies the NotNil predicate on the "builder_img" field. +func BuilderImgNotNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotNull(FieldBuilderImg)) +} + +// BuilderImgEqualFold applies the EqualFold predicate on the "builder_img" field. +func BuilderImgEqualFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEqualFold(FieldBuilderImg, v)) +} + +// BuilderImgContainsFold applies the ContainsFold predicate on the "builder_img" field. +func BuilderImgContainsFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContainsFold(FieldBuilderImg, v)) +} + +// BuildEnvEQ applies the EQ predicate on the "build_env" field. +func BuildEnvEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldBuildEnv, v)) +} + +// BuildEnvNEQ applies the NEQ predicate on the "build_env" field. +func BuildEnvNEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNEQ(FieldBuildEnv, v)) +} + +// BuildEnvIn applies the In predicate on the "build_env" field. +func BuildEnvIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldIn(FieldBuildEnv, vs...)) +} + +// BuildEnvNotIn applies the NotIn predicate on the "build_env" field. +func BuildEnvNotIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotIn(FieldBuildEnv, vs...)) +} + +// BuildEnvGT applies the GT predicate on the "build_env" field. +func BuildEnvGT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGT(FieldBuildEnv, v)) +} + +// BuildEnvGTE applies the GTE predicate on the "build_env" field. +func BuildEnvGTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGTE(FieldBuildEnv, v)) +} + +// BuildEnvLT applies the LT predicate on the "build_env" field. +func BuildEnvLT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLT(FieldBuildEnv, v)) +} + +// BuildEnvLTE applies the LTE predicate on the "build_env" field. +func BuildEnvLTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLTE(FieldBuildEnv, v)) +} + +// BuildEnvContains applies the Contains predicate on the "build_env" field. +func BuildEnvContains(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContains(FieldBuildEnv, v)) +} + +// BuildEnvHasPrefix applies the HasPrefix predicate on the "build_env" field. +func BuildEnvHasPrefix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasPrefix(FieldBuildEnv, v)) +} + +// BuildEnvHasSuffix applies the HasSuffix predicate on the "build_env" field. +func BuildEnvHasSuffix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasSuffix(FieldBuildEnv, v)) +} + +// BuildEnvIsNil applies the IsNil predicate on the "build_env" field. +func BuildEnvIsNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldIsNull(FieldBuildEnv)) +} + +// BuildEnvNotNil applies the NotNil predicate on the "build_env" field. +func BuildEnvNotNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotNull(FieldBuildEnv)) +} + +// BuildEnvEqualFold applies the EqualFold predicate on the "build_env" field. +func BuildEnvEqualFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEqualFold(FieldBuildEnv, v)) +} + +// BuildEnvContainsFold applies the ContainsFold predicate on the "build_env" field. +func BuildEnvContainsFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContainsFold(FieldBuildEnv, v)) +} + +// FeaturesEQ applies the EQ predicate on the "features" field. +func FeaturesEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldFeatures, v)) +} + +// FeaturesNEQ applies the NEQ predicate on the "features" field. +func FeaturesNEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNEQ(FieldFeatures, v)) +} + +// FeaturesIn applies the In predicate on the "features" field. +func FeaturesIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldIn(FieldFeatures, vs...)) +} + +// FeaturesNotIn applies the NotIn predicate on the "features" field. +func FeaturesNotIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotIn(FieldFeatures, vs...)) +} + +// FeaturesGT applies the GT predicate on the "features" field. +func FeaturesGT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGT(FieldFeatures, v)) +} + +// FeaturesGTE applies the GTE predicate on the "features" field. +func FeaturesGTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGTE(FieldFeatures, v)) +} + +// FeaturesLT applies the LT predicate on the "features" field. +func FeaturesLT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLT(FieldFeatures, v)) +} + +// FeaturesLTE applies the LTE predicate on the "features" field. +func FeaturesLTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLTE(FieldFeatures, v)) +} + +// FeaturesContains applies the Contains predicate on the "features" field. +func FeaturesContains(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContains(FieldFeatures, v)) +} + +// FeaturesHasPrefix applies the HasPrefix predicate on the "features" field. +func FeaturesHasPrefix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasPrefix(FieldFeatures, v)) +} + +// FeaturesHasSuffix applies the HasSuffix predicate on the "features" field. +func FeaturesHasSuffix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasSuffix(FieldFeatures, v)) +} + +// FeaturesIsNil applies the IsNil predicate on the "features" field. +func FeaturesIsNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldIsNull(FieldFeatures)) +} + +// FeaturesNotNil applies the NotNil predicate on the "features" field. +func FeaturesNotNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotNull(FieldFeatures)) +} + +// FeaturesEqualFold applies the EqualFold predicate on the "features" field. +func FeaturesEqualFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEqualFold(FieldFeatures, v)) +} + +// FeaturesContainsFold applies the ContainsFold predicate on the "features" field. +func FeaturesContainsFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContainsFold(FieldFeatures, v)) +} + +// ProductBaseImgEQ applies the EQ predicate on the "product_base_img" field. +func ProductBaseImgEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldProductBaseImg, v)) +} + +// ProductBaseImgNEQ applies the NEQ predicate on the "product_base_img" field. +func ProductBaseImgNEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNEQ(FieldProductBaseImg, v)) +} + +// ProductBaseImgIn applies the In predicate on the "product_base_img" field. +func ProductBaseImgIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldIn(FieldProductBaseImg, vs...)) +} + +// ProductBaseImgNotIn applies the NotIn predicate on the "product_base_img" field. +func ProductBaseImgNotIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotIn(FieldProductBaseImg, vs...)) +} + +// ProductBaseImgGT applies the GT predicate on the "product_base_img" field. +func ProductBaseImgGT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGT(FieldProductBaseImg, v)) +} + +// ProductBaseImgGTE applies the GTE predicate on the "product_base_img" field. +func ProductBaseImgGTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGTE(FieldProductBaseImg, v)) +} + +// ProductBaseImgLT applies the LT predicate on the "product_base_img" field. +func ProductBaseImgLT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLT(FieldProductBaseImg, v)) +} + +// ProductBaseImgLTE applies the LTE predicate on the "product_base_img" field. +func ProductBaseImgLTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLTE(FieldProductBaseImg, v)) +} + +// ProductBaseImgContains applies the Contains predicate on the "product_base_img" field. +func ProductBaseImgContains(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContains(FieldProductBaseImg, v)) +} + +// ProductBaseImgHasPrefix applies the HasPrefix predicate on the "product_base_img" field. +func ProductBaseImgHasPrefix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasPrefix(FieldProductBaseImg, v)) +} + +// ProductBaseImgHasSuffix applies the HasSuffix predicate on the "product_base_img" field. +func ProductBaseImgHasSuffix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasSuffix(FieldProductBaseImg, v)) +} + +// ProductBaseImgIsNil applies the IsNil predicate on the "product_base_img" field. +func ProductBaseImgIsNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldIsNull(FieldProductBaseImg)) +} + +// ProductBaseImgNotNil applies the NotNil predicate on the "product_base_img" field. +func ProductBaseImgNotNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotNull(FieldProductBaseImg)) +} + +// ProductBaseImgEqualFold applies the EqualFold predicate on the "product_base_img" field. +func ProductBaseImgEqualFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEqualFold(FieldProductBaseImg, v)) +} + +// ProductBaseImgContainsFold applies the ContainsFold predicate on the "product_base_img" field. +func ProductBaseImgContainsFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContainsFold(FieldProductBaseImg, v)) +} + +// ProductDockerfileEQ applies the EQ predicate on the "product_dockerfile" field. +func ProductDockerfileEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldProductDockerfile, v)) +} + +// ProductDockerfileNEQ applies the NEQ predicate on the "product_dockerfile" field. +func ProductDockerfileNEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNEQ(FieldProductDockerfile, v)) +} + +// ProductDockerfileIn applies the In predicate on the "product_dockerfile" field. +func ProductDockerfileIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldIn(FieldProductDockerfile, vs...)) +} + +// ProductDockerfileNotIn applies the NotIn predicate on the "product_dockerfile" field. +func ProductDockerfileNotIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotIn(FieldProductDockerfile, vs...)) +} + +// ProductDockerfileGT applies the GT predicate on the "product_dockerfile" field. +func ProductDockerfileGT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGT(FieldProductDockerfile, v)) +} + +// ProductDockerfileGTE applies the GTE predicate on the "product_dockerfile" field. +func ProductDockerfileGTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGTE(FieldProductDockerfile, v)) +} + +// ProductDockerfileLT applies the LT predicate on the "product_dockerfile" field. +func ProductDockerfileLT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLT(FieldProductDockerfile, v)) +} + +// ProductDockerfileLTE applies the LTE predicate on the "product_dockerfile" field. +func ProductDockerfileLTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLTE(FieldProductDockerfile, v)) +} + +// ProductDockerfileContains applies the Contains predicate on the "product_dockerfile" field. +func ProductDockerfileContains(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContains(FieldProductDockerfile, v)) +} + +// ProductDockerfileHasPrefix applies the HasPrefix predicate on the "product_dockerfile" field. +func ProductDockerfileHasPrefix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasPrefix(FieldProductDockerfile, v)) +} + +// ProductDockerfileHasSuffix applies the HasSuffix predicate on the "product_dockerfile" field. +func ProductDockerfileHasSuffix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasSuffix(FieldProductDockerfile, v)) +} + +// ProductDockerfileIsNil applies the IsNil predicate on the "product_dockerfile" field. +func ProductDockerfileIsNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldIsNull(FieldProductDockerfile)) +} + +// ProductDockerfileNotNil applies the NotNil predicate on the "product_dockerfile" field. +func ProductDockerfileNotNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotNull(FieldProductDockerfile)) +} + +// ProductDockerfileEqualFold applies the EqualFold predicate on the "product_dockerfile" field. +func ProductDockerfileEqualFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEqualFold(FieldProductDockerfile, v)) +} + +// ProductDockerfileContainsFold applies the ContainsFold predicate on the "product_dockerfile" field. +func ProductDockerfileContainsFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContainsFold(FieldProductDockerfile, v)) +} + +// StatusEQ applies the EQ predicate on the "status" field. +func StatusEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldStatus, v)) +} + +// StatusNEQ applies the NEQ predicate on the "status" field. +func StatusNEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNEQ(FieldStatus, v)) +} + +// StatusIn applies the In predicate on the "status" field. +func StatusIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldIn(FieldStatus, vs...)) +} + +// StatusNotIn applies the NotIn predicate on the "status" field. +func StatusNotIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotIn(FieldStatus, vs...)) +} + +// StatusGT applies the GT predicate on the "status" field. +func StatusGT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGT(FieldStatus, v)) +} + +// StatusGTE applies the GTE predicate on the "status" field. +func StatusGTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGTE(FieldStatus, v)) +} + +// StatusLT applies the LT predicate on the "status" field. +func StatusLT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLT(FieldStatus, v)) +} + +// StatusLTE applies the LTE predicate on the "status" field. +func StatusLTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLTE(FieldStatus, v)) +} + +// StatusContains applies the Contains predicate on the "status" field. +func StatusContains(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContains(FieldStatus, v)) +} + +// StatusHasPrefix applies the HasPrefix predicate on the "status" field. +func StatusHasPrefix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasPrefix(FieldStatus, v)) +} + +// StatusHasSuffix applies the HasSuffix predicate on the "status" field. +func StatusHasSuffix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasSuffix(FieldStatus, v)) +} + +// StatusIsNil applies the IsNil predicate on the "status" field. +func StatusIsNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldIsNull(FieldStatus)) +} + +// StatusNotNil applies the NotNil predicate on the "status" field. +func StatusNotNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotNull(FieldStatus)) +} + +// StatusEqualFold applies the EqualFold predicate on the "status" field. +func StatusEqualFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEqualFold(FieldStatus, v)) +} + +// StatusContainsFold applies the ContainsFold predicate on the "status" field. +func StatusContainsFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContainsFold(FieldStatus, v)) +} + +// ErrMsgEQ applies the EQ predicate on the "err_msg" field. +func ErrMsgEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldErrMsg, v)) +} + +// ErrMsgNEQ applies the NEQ predicate on the "err_msg" field. +func ErrMsgNEQ(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNEQ(FieldErrMsg, v)) +} + +// ErrMsgIn applies the In predicate on the "err_msg" field. +func ErrMsgIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldIn(FieldErrMsg, vs...)) +} + +// ErrMsgNotIn applies the NotIn predicate on the "err_msg" field. +func ErrMsgNotIn(vs ...string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotIn(FieldErrMsg, vs...)) +} + +// ErrMsgGT applies the GT predicate on the "err_msg" field. +func ErrMsgGT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGT(FieldErrMsg, v)) +} + +// ErrMsgGTE applies the GTE predicate on the "err_msg" field. +func ErrMsgGTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGTE(FieldErrMsg, v)) +} + +// ErrMsgLT applies the LT predicate on the "err_msg" field. +func ErrMsgLT(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLT(FieldErrMsg, v)) +} + +// ErrMsgLTE applies the LTE predicate on the "err_msg" field. +func ErrMsgLTE(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLTE(FieldErrMsg, v)) +} + +// ErrMsgContains applies the Contains predicate on the "err_msg" field. +func ErrMsgContains(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContains(FieldErrMsg, v)) +} + +// ErrMsgHasPrefix applies the HasPrefix predicate on the "err_msg" field. +func ErrMsgHasPrefix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasPrefix(FieldErrMsg, v)) +} + +// ErrMsgHasSuffix applies the HasSuffix predicate on the "err_msg" field. +func ErrMsgHasSuffix(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldHasSuffix(FieldErrMsg, v)) +} + +// ErrMsgIsNil applies the IsNil predicate on the "err_msg" field. +func ErrMsgIsNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldIsNull(FieldErrMsg)) +} + +// ErrMsgNotNil applies the NotNil predicate on the "err_msg" field. +func ErrMsgNotNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotNull(FieldErrMsg)) +} + +// ErrMsgEqualFold applies the EqualFold predicate on the "err_msg" field. +func ErrMsgEqualFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEqualFold(FieldErrMsg, v)) +} + +// ErrMsgContainsFold applies the ContainsFold predicate on the "err_msg" field. +func ErrMsgContainsFold(v string) predicate.DevBuild { + return predicate.DevBuild(sql.FieldContainsFold(FieldErrMsg, v)) +} + +// PipelineBuildIDEQ applies the EQ predicate on the "pipeline_build_id" field. +func PipelineBuildIDEQ(v int64) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldPipelineBuildID, v)) +} + +// PipelineBuildIDNEQ applies the NEQ predicate on the "pipeline_build_id" field. +func PipelineBuildIDNEQ(v int64) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNEQ(FieldPipelineBuildID, v)) +} + +// PipelineBuildIDIn applies the In predicate on the "pipeline_build_id" field. +func PipelineBuildIDIn(vs ...int64) predicate.DevBuild { + return predicate.DevBuild(sql.FieldIn(FieldPipelineBuildID, vs...)) +} + +// PipelineBuildIDNotIn applies the NotIn predicate on the "pipeline_build_id" field. +func PipelineBuildIDNotIn(vs ...int64) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotIn(FieldPipelineBuildID, vs...)) +} + +// PipelineBuildIDGT applies the GT predicate on the "pipeline_build_id" field. +func PipelineBuildIDGT(v int64) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGT(FieldPipelineBuildID, v)) +} + +// PipelineBuildIDGTE applies the GTE predicate on the "pipeline_build_id" field. +func PipelineBuildIDGTE(v int64) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGTE(FieldPipelineBuildID, v)) +} + +// PipelineBuildIDLT applies the LT predicate on the "pipeline_build_id" field. +func PipelineBuildIDLT(v int64) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLT(FieldPipelineBuildID, v)) +} + +// PipelineBuildIDLTE applies the LTE predicate on the "pipeline_build_id" field. +func PipelineBuildIDLTE(v int64) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLTE(FieldPipelineBuildID, v)) +} + +// PipelineBuildIDIsNil applies the IsNil predicate on the "pipeline_build_id" field. +func PipelineBuildIDIsNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldIsNull(FieldPipelineBuildID)) +} + +// PipelineBuildIDNotNil applies the NotNil predicate on the "pipeline_build_id" field. +func PipelineBuildIDNotNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotNull(FieldPipelineBuildID)) +} + +// PipelineStartAtEQ applies the EQ predicate on the "pipeline_start_at" field. +func PipelineStartAtEQ(v time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldPipelineStartAt, v)) +} + +// PipelineStartAtNEQ applies the NEQ predicate on the "pipeline_start_at" field. +func PipelineStartAtNEQ(v time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNEQ(FieldPipelineStartAt, v)) +} + +// PipelineStartAtIn applies the In predicate on the "pipeline_start_at" field. +func PipelineStartAtIn(vs ...time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldIn(FieldPipelineStartAt, vs...)) +} + +// PipelineStartAtNotIn applies the NotIn predicate on the "pipeline_start_at" field. +func PipelineStartAtNotIn(vs ...time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotIn(FieldPipelineStartAt, vs...)) +} + +// PipelineStartAtGT applies the GT predicate on the "pipeline_start_at" field. +func PipelineStartAtGT(v time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGT(FieldPipelineStartAt, v)) +} + +// PipelineStartAtGTE applies the GTE predicate on the "pipeline_start_at" field. +func PipelineStartAtGTE(v time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGTE(FieldPipelineStartAt, v)) +} + +// PipelineStartAtLT applies the LT predicate on the "pipeline_start_at" field. +func PipelineStartAtLT(v time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLT(FieldPipelineStartAt, v)) +} + +// PipelineStartAtLTE applies the LTE predicate on the "pipeline_start_at" field. +func PipelineStartAtLTE(v time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLTE(FieldPipelineStartAt, v)) +} + +// PipelineStartAtIsNil applies the IsNil predicate on the "pipeline_start_at" field. +func PipelineStartAtIsNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldIsNull(FieldPipelineStartAt)) +} + +// PipelineStartAtNotNil applies the NotNil predicate on the "pipeline_start_at" field. +func PipelineStartAtNotNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotNull(FieldPipelineStartAt)) +} + +// PipelineEndAtEQ applies the EQ predicate on the "pipeline_end_at" field. +func PipelineEndAtEQ(v time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldEQ(FieldPipelineEndAt, v)) +} + +// PipelineEndAtNEQ applies the NEQ predicate on the "pipeline_end_at" field. +func PipelineEndAtNEQ(v time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNEQ(FieldPipelineEndAt, v)) +} + +// PipelineEndAtIn applies the In predicate on the "pipeline_end_at" field. +func PipelineEndAtIn(vs ...time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldIn(FieldPipelineEndAt, vs...)) +} + +// PipelineEndAtNotIn applies the NotIn predicate on the "pipeline_end_at" field. +func PipelineEndAtNotIn(vs ...time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotIn(FieldPipelineEndAt, vs...)) +} + +// PipelineEndAtGT applies the GT predicate on the "pipeline_end_at" field. +func PipelineEndAtGT(v time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGT(FieldPipelineEndAt, v)) +} + +// PipelineEndAtGTE applies the GTE predicate on the "pipeline_end_at" field. +func PipelineEndAtGTE(v time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldGTE(FieldPipelineEndAt, v)) +} + +// PipelineEndAtLT applies the LT predicate on the "pipeline_end_at" field. +func PipelineEndAtLT(v time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLT(FieldPipelineEndAt, v)) +} + +// PipelineEndAtLTE applies the LTE predicate on the "pipeline_end_at" field. +func PipelineEndAtLTE(v time.Time) predicate.DevBuild { + return predicate.DevBuild(sql.FieldLTE(FieldPipelineEndAt, v)) +} + +// PipelineEndAtIsNil applies the IsNil predicate on the "pipeline_end_at" field. +func PipelineEndAtIsNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldIsNull(FieldPipelineEndAt)) +} + +// PipelineEndAtNotNil applies the NotNil predicate on the "pipeline_end_at" field. +func PipelineEndAtNotNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotNull(FieldPipelineEndAt)) +} + +// BuildReportIsNil applies the IsNil predicate on the "build_report" field. +func BuildReportIsNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldIsNull(FieldBuildReport)) +} + +// BuildReportNotNil applies the NotNil predicate on the "build_report" field. +func BuildReportNotNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotNull(FieldBuildReport)) +} + +// TektonStatusIsNil applies the IsNil predicate on the "tekton_status" field. +func TektonStatusIsNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldIsNull(FieldTektonStatus)) +} + +// TektonStatusNotNil applies the NotNil predicate on the "tekton_status" field. +func TektonStatusNotNil() predicate.DevBuild { + return predicate.DevBuild(sql.FieldNotNull(FieldTektonStatus)) +} + +// And groups predicates with the AND operator between them. +func And(predicates ...predicate.DevBuild) predicate.DevBuild { + return predicate.DevBuild(sql.AndPredicates(predicates...)) +} + +// Or groups predicates with the OR operator between them. +func Or(predicates ...predicate.DevBuild) predicate.DevBuild { + return predicate.DevBuild(sql.OrPredicates(predicates...)) +} + +// Not applies the not operator on the given predicate. +func Not(p predicate.DevBuild) predicate.DevBuild { + return predicate.DevBuild(sql.NotPredicates(p)) +} diff --git a/experiments/tibuild-v2/internal/database/ent/devbuild_create.go b/experiments/tibuild-v2/internal/database/ent/devbuild_create.go new file mode 100644 index 00000000..91b968fb --- /dev/null +++ b/experiments/tibuild-v2/internal/database/ent/devbuild_create.go @@ -0,0 +1,743 @@ +// Code generated by ent, DO NOT EDIT. + +package ent + +import ( + "context" + "errors" + "fmt" + "time" + + "entgo.io/ent/dialect/sql/sqlgraph" + "entgo.io/ent/schema/field" + "github.com/PingCAP-QE/ee-apps/tibuild/internal/database/ent/devbuild" +) + +// DevBuildCreate is the builder for creating a DevBuild entity. +type DevBuildCreate struct { + config + mutation *DevBuildMutation + hooks []Hook +} + +// SetCreatedBy sets the "created_by" field. +func (dbc *DevBuildCreate) SetCreatedBy(s string) *DevBuildCreate { + dbc.mutation.SetCreatedBy(s) + return dbc +} + +// SetNillableCreatedBy sets the "created_by" field if the given value is not nil. +func (dbc *DevBuildCreate) SetNillableCreatedBy(s *string) *DevBuildCreate { + if s != nil { + dbc.SetCreatedBy(*s) + } + return dbc +} + +// SetCreatedAt sets the "created_at" field. +func (dbc *DevBuildCreate) SetCreatedAt(t time.Time) *DevBuildCreate { + dbc.mutation.SetCreatedAt(t) + return dbc +} + +// SetNillableCreatedAt sets the "created_at" field if the given value is not nil. +func (dbc *DevBuildCreate) SetNillableCreatedAt(t *time.Time) *DevBuildCreate { + if t != nil { + dbc.SetCreatedAt(*t) + } + return dbc +} + +// SetUpdatedAt sets the "updated_at" field. +func (dbc *DevBuildCreate) SetUpdatedAt(t time.Time) *DevBuildCreate { + dbc.mutation.SetUpdatedAt(t) + return dbc +} + +// SetNillableUpdatedAt sets the "updated_at" field if the given value is not nil. +func (dbc *DevBuildCreate) SetNillableUpdatedAt(t *time.Time) *DevBuildCreate { + if t != nil { + dbc.SetUpdatedAt(*t) + } + return dbc +} + +// SetProduct sets the "product" field. +func (dbc *DevBuildCreate) SetProduct(s string) *DevBuildCreate { + dbc.mutation.SetProduct(s) + return dbc +} + +// SetNillableProduct sets the "product" field if the given value is not nil. +func (dbc *DevBuildCreate) SetNillableProduct(s *string) *DevBuildCreate { + if s != nil { + dbc.SetProduct(*s) + } + return dbc +} + +// SetEdition sets the "edition" field. +func (dbc *DevBuildCreate) SetEdition(s string) *DevBuildCreate { + dbc.mutation.SetEdition(s) + return dbc +} + +// SetNillableEdition sets the "edition" field if the given value is not nil. +func (dbc *DevBuildCreate) SetNillableEdition(s *string) *DevBuildCreate { + if s != nil { + dbc.SetEdition(*s) + } + return dbc +} + +// SetVersion sets the "version" field. +func (dbc *DevBuildCreate) SetVersion(s string) *DevBuildCreate { + dbc.mutation.SetVersion(s) + return dbc +} + +// SetNillableVersion sets the "version" field if the given value is not nil. +func (dbc *DevBuildCreate) SetNillableVersion(s *string) *DevBuildCreate { + if s != nil { + dbc.SetVersion(*s) + } + return dbc +} + +// SetGithubRepo sets the "github_repo" field. +func (dbc *DevBuildCreate) SetGithubRepo(s string) *DevBuildCreate { + dbc.mutation.SetGithubRepo(s) + return dbc +} + +// SetNillableGithubRepo sets the "github_repo" field if the given value is not nil. +func (dbc *DevBuildCreate) SetNillableGithubRepo(s *string) *DevBuildCreate { + if s != nil { + dbc.SetGithubRepo(*s) + } + return dbc +} + +// SetGitRef sets the "git_ref" field. +func (dbc *DevBuildCreate) SetGitRef(s string) *DevBuildCreate { + dbc.mutation.SetGitRef(s) + return dbc +} + +// SetNillableGitRef sets the "git_ref" field if the given value is not nil. +func (dbc *DevBuildCreate) SetNillableGitRef(s *string) *DevBuildCreate { + if s != nil { + dbc.SetGitRef(*s) + } + return dbc +} + +// SetGitHash sets the "git_hash" field. +func (dbc *DevBuildCreate) SetGitHash(s string) *DevBuildCreate { + dbc.mutation.SetGitHash(s) + return dbc +} + +// SetNillableGitHash sets the "git_hash" field if the given value is not nil. +func (dbc *DevBuildCreate) SetNillableGitHash(s *string) *DevBuildCreate { + if s != nil { + dbc.SetGitHash(*s) + } + return dbc +} + +// SetPluginGitRef sets the "plugin_git_ref" field. +func (dbc *DevBuildCreate) SetPluginGitRef(s string) *DevBuildCreate { + dbc.mutation.SetPluginGitRef(s) + return dbc +} + +// SetNillablePluginGitRef sets the "plugin_git_ref" field if the given value is not nil. +func (dbc *DevBuildCreate) SetNillablePluginGitRef(s *string) *DevBuildCreate { + if s != nil { + dbc.SetPluginGitRef(*s) + } + return dbc +} + +// SetIsHotfix sets the "is_hotfix" field. +func (dbc *DevBuildCreate) SetIsHotfix(b bool) *DevBuildCreate { + dbc.mutation.SetIsHotfix(b) + return dbc +} + +// SetNillableIsHotfix sets the "is_hotfix" field if the given value is not nil. +func (dbc *DevBuildCreate) SetNillableIsHotfix(b *bool) *DevBuildCreate { + if b != nil { + dbc.SetIsHotfix(*b) + } + return dbc +} + +// SetIsPushGcr sets the "is_push_gcr" field. +func (dbc *DevBuildCreate) SetIsPushGcr(b bool) *DevBuildCreate { + dbc.mutation.SetIsPushGcr(b) + return dbc +} + +// SetNillableIsPushGcr sets the "is_push_gcr" field if the given value is not nil. +func (dbc *DevBuildCreate) SetNillableIsPushGcr(b *bool) *DevBuildCreate { + if b != nil { + dbc.SetIsPushGcr(*b) + } + return dbc +} + +// SetTargetImg sets the "target_img" field. +func (dbc *DevBuildCreate) SetTargetImg(s string) *DevBuildCreate { + dbc.mutation.SetTargetImg(s) + return dbc +} + +// SetNillableTargetImg sets the "target_img" field if the given value is not nil. +func (dbc *DevBuildCreate) SetNillableTargetImg(s *string) *DevBuildCreate { + if s != nil { + dbc.SetTargetImg(*s) + } + return dbc +} + +// SetPipelineEngine sets the "pipeline_engine" field. +func (dbc *DevBuildCreate) SetPipelineEngine(s string) *DevBuildCreate { + dbc.mutation.SetPipelineEngine(s) + return dbc +} + +// SetNillablePipelineEngine sets the "pipeline_engine" field if the given value is not nil. +func (dbc *DevBuildCreate) SetNillablePipelineEngine(s *string) *DevBuildCreate { + if s != nil { + dbc.SetPipelineEngine(*s) + } + return dbc +} + +// SetBuilderImg sets the "builder_img" field. +func (dbc *DevBuildCreate) SetBuilderImg(s string) *DevBuildCreate { + dbc.mutation.SetBuilderImg(s) + return dbc +} + +// SetNillableBuilderImg sets the "builder_img" field if the given value is not nil. +func (dbc *DevBuildCreate) SetNillableBuilderImg(s *string) *DevBuildCreate { + if s != nil { + dbc.SetBuilderImg(*s) + } + return dbc +} + +// SetBuildEnv sets the "build_env" field. +func (dbc *DevBuildCreate) SetBuildEnv(s string) *DevBuildCreate { + dbc.mutation.SetBuildEnv(s) + return dbc +} + +// SetNillableBuildEnv sets the "build_env" field if the given value is not nil. +func (dbc *DevBuildCreate) SetNillableBuildEnv(s *string) *DevBuildCreate { + if s != nil { + dbc.SetBuildEnv(*s) + } + return dbc +} + +// SetFeatures sets the "features" field. +func (dbc *DevBuildCreate) SetFeatures(s string) *DevBuildCreate { + dbc.mutation.SetFeatures(s) + return dbc +} + +// SetNillableFeatures sets the "features" field if the given value is not nil. +func (dbc *DevBuildCreate) SetNillableFeatures(s *string) *DevBuildCreate { + if s != nil { + dbc.SetFeatures(*s) + } + return dbc +} + +// SetProductBaseImg sets the "product_base_img" field. +func (dbc *DevBuildCreate) SetProductBaseImg(s string) *DevBuildCreate { + dbc.mutation.SetProductBaseImg(s) + return dbc +} + +// SetNillableProductBaseImg sets the "product_base_img" field if the given value is not nil. +func (dbc *DevBuildCreate) SetNillableProductBaseImg(s *string) *DevBuildCreate { + if s != nil { + dbc.SetProductBaseImg(*s) + } + return dbc +} + +// SetProductDockerfile sets the "product_dockerfile" field. +func (dbc *DevBuildCreate) SetProductDockerfile(s string) *DevBuildCreate { + dbc.mutation.SetProductDockerfile(s) + return dbc +} + +// SetNillableProductDockerfile sets the "product_dockerfile" field if the given value is not nil. +func (dbc *DevBuildCreate) SetNillableProductDockerfile(s *string) *DevBuildCreate { + if s != nil { + dbc.SetProductDockerfile(*s) + } + return dbc +} + +// SetStatus sets the "status" field. +func (dbc *DevBuildCreate) SetStatus(s string) *DevBuildCreate { + dbc.mutation.SetStatus(s) + return dbc +} + +// SetNillableStatus sets the "status" field if the given value is not nil. +func (dbc *DevBuildCreate) SetNillableStatus(s *string) *DevBuildCreate { + if s != nil { + dbc.SetStatus(*s) + } + return dbc +} + +// SetErrMsg sets the "err_msg" field. +func (dbc *DevBuildCreate) SetErrMsg(s string) *DevBuildCreate { + dbc.mutation.SetErrMsg(s) + return dbc +} + +// SetNillableErrMsg sets the "err_msg" field if the given value is not nil. +func (dbc *DevBuildCreate) SetNillableErrMsg(s *string) *DevBuildCreate { + if s != nil { + dbc.SetErrMsg(*s) + } + return dbc +} + +// SetPipelineBuildID sets the "pipeline_build_id" field. +func (dbc *DevBuildCreate) SetPipelineBuildID(i int64) *DevBuildCreate { + dbc.mutation.SetPipelineBuildID(i) + return dbc +} + +// SetNillablePipelineBuildID sets the "pipeline_build_id" field if the given value is not nil. +func (dbc *DevBuildCreate) SetNillablePipelineBuildID(i *int64) *DevBuildCreate { + if i != nil { + dbc.SetPipelineBuildID(*i) + } + return dbc +} + +// SetPipelineStartAt sets the "pipeline_start_at" field. +func (dbc *DevBuildCreate) SetPipelineStartAt(t time.Time) *DevBuildCreate { + dbc.mutation.SetPipelineStartAt(t) + return dbc +} + +// SetNillablePipelineStartAt sets the "pipeline_start_at" field if the given value is not nil. +func (dbc *DevBuildCreate) SetNillablePipelineStartAt(t *time.Time) *DevBuildCreate { + if t != nil { + dbc.SetPipelineStartAt(*t) + } + return dbc +} + +// SetPipelineEndAt sets the "pipeline_end_at" field. +func (dbc *DevBuildCreate) SetPipelineEndAt(t time.Time) *DevBuildCreate { + dbc.mutation.SetPipelineEndAt(t) + return dbc +} + +// SetNillablePipelineEndAt sets the "pipeline_end_at" field if the given value is not nil. +func (dbc *DevBuildCreate) SetNillablePipelineEndAt(t *time.Time) *DevBuildCreate { + if t != nil { + dbc.SetPipelineEndAt(*t) + } + return dbc +} + +// SetBuildReport sets the "build_report" field. +func (dbc *DevBuildCreate) SetBuildReport(m map[string]interface{}) *DevBuildCreate { + dbc.mutation.SetBuildReport(m) + return dbc +} + +// SetTektonStatus sets the "tekton_status" field. +func (dbc *DevBuildCreate) SetTektonStatus(m map[string]interface{}) *DevBuildCreate { + dbc.mutation.SetTektonStatus(m) + return dbc +} + +// Mutation returns the DevBuildMutation object of the builder. +func (dbc *DevBuildCreate) Mutation() *DevBuildMutation { + return dbc.mutation +} + +// Save creates the DevBuild in the database. +func (dbc *DevBuildCreate) Save(ctx context.Context) (*DevBuild, error) { + dbc.defaults() + return withHooks(ctx, dbc.sqlSave, dbc.mutation, dbc.hooks) +} + +// SaveX calls Save and panics if Save returns an error. +func (dbc *DevBuildCreate) SaveX(ctx context.Context) *DevBuild { + v, err := dbc.Save(ctx) + if err != nil { + panic(err) + } + return v +} + +// Exec executes the query. +func (dbc *DevBuildCreate) Exec(ctx context.Context) error { + _, err := dbc.Save(ctx) + return err +} + +// ExecX is like Exec, but panics if an error occurs. +func (dbc *DevBuildCreate) ExecX(ctx context.Context) { + if err := dbc.Exec(ctx); err != nil { + panic(err) + } +} + +// defaults sets the default values of the builder before save. +func (dbc *DevBuildCreate) defaults() { + if _, ok := dbc.mutation.CreatedAt(); !ok { + v := devbuild.DefaultCreatedAt() + dbc.mutation.SetCreatedAt(v) + } + if _, ok := dbc.mutation.UpdatedAt(); !ok { + v := devbuild.DefaultUpdatedAt() + dbc.mutation.SetUpdatedAt(v) + } + if _, ok := dbc.mutation.IsHotfix(); !ok { + v := devbuild.DefaultIsHotfix + dbc.mutation.SetIsHotfix(v) + } + if _, ok := dbc.mutation.PipelineEngine(); !ok { + v := devbuild.DefaultPipelineEngine + dbc.mutation.SetPipelineEngine(v) + } + if _, ok := dbc.mutation.Status(); !ok { + v := devbuild.DefaultStatus + dbc.mutation.SetStatus(v) + } +} + +// check runs all checks and user-defined validators on the builder. +func (dbc *DevBuildCreate) check() error { + if v, ok := dbc.mutation.CreatedBy(); ok { + if err := devbuild.CreatedByValidator(v); err != nil { + return &ValidationError{Name: "created_by", err: fmt.Errorf(`ent: validator failed for field "DevBuild.created_by": %w`, err)} + } + } + if _, ok := dbc.mutation.CreatedAt(); !ok { + return &ValidationError{Name: "created_at", err: errors.New(`ent: missing required field "DevBuild.created_at"`)} + } + if _, ok := dbc.mutation.UpdatedAt(); !ok { + return &ValidationError{Name: "updated_at", err: errors.New(`ent: missing required field "DevBuild.updated_at"`)} + } + if v, ok := dbc.mutation.Product(); ok { + if err := devbuild.ProductValidator(v); err != nil { + return &ValidationError{Name: "product", err: fmt.Errorf(`ent: validator failed for field "DevBuild.product": %w`, err)} + } + } + if v, ok := dbc.mutation.Edition(); ok { + if err := devbuild.EditionValidator(v); err != nil { + return &ValidationError{Name: "edition", err: fmt.Errorf(`ent: validator failed for field "DevBuild.edition": %w`, err)} + } + } + if v, ok := dbc.mutation.Version(); ok { + if err := devbuild.VersionValidator(v); err != nil { + return &ValidationError{Name: "version", err: fmt.Errorf(`ent: validator failed for field "DevBuild.version": %w`, err)} + } + } + if v, ok := dbc.mutation.GithubRepo(); ok { + if err := devbuild.GithubRepoValidator(v); err != nil { + return &ValidationError{Name: "github_repo", err: fmt.Errorf(`ent: validator failed for field "DevBuild.github_repo": %w`, err)} + } + } + if v, ok := dbc.mutation.GitRef(); ok { + if err := devbuild.GitRefValidator(v); err != nil { + return &ValidationError{Name: "git_ref", err: fmt.Errorf(`ent: validator failed for field "DevBuild.git_ref": %w`, err)} + } + } + if v, ok := dbc.mutation.GitHash(); ok { + if err := devbuild.GitHashValidator(v); err != nil { + return &ValidationError{Name: "git_hash", err: fmt.Errorf(`ent: validator failed for field "DevBuild.git_hash": %w`, err)} + } + } + if v, ok := dbc.mutation.PluginGitRef(); ok { + if err := devbuild.PluginGitRefValidator(v); err != nil { + return &ValidationError{Name: "plugin_git_ref", err: fmt.Errorf(`ent: validator failed for field "DevBuild.plugin_git_ref": %w`, err)} + } + } + if _, ok := dbc.mutation.IsHotfix(); !ok { + return &ValidationError{Name: "is_hotfix", err: errors.New(`ent: missing required field "DevBuild.is_hotfix"`)} + } + if v, ok := dbc.mutation.TargetImg(); ok { + if err := devbuild.TargetImgValidator(v); err != nil { + return &ValidationError{Name: "target_img", err: fmt.Errorf(`ent: validator failed for field "DevBuild.target_img": %w`, err)} + } + } + if v, ok := dbc.mutation.PipelineEngine(); ok { + if err := devbuild.PipelineEngineValidator(v); err != nil { + return &ValidationError{Name: "pipeline_engine", err: fmt.Errorf(`ent: validator failed for field "DevBuild.pipeline_engine": %w`, err)} + } + } + if v, ok := dbc.mutation.BuilderImg(); ok { + if err := devbuild.BuilderImgValidator(v); err != nil { + return &ValidationError{Name: "builder_img", err: fmt.Errorf(`ent: validator failed for field "DevBuild.builder_img": %w`, err)} + } + } + if v, ok := dbc.mutation.BuildEnv(); ok { + if err := devbuild.BuildEnvValidator(v); err != nil { + return &ValidationError{Name: "build_env", err: fmt.Errorf(`ent: validator failed for field "DevBuild.build_env": %w`, err)} + } + } + if v, ok := dbc.mutation.Features(); ok { + if err := devbuild.FeaturesValidator(v); err != nil { + return &ValidationError{Name: "features", err: fmt.Errorf(`ent: validator failed for field "DevBuild.features": %w`, err)} + } + } + if v, ok := dbc.mutation.ProductBaseImg(); ok { + if err := devbuild.ProductBaseImgValidator(v); err != nil { + return &ValidationError{Name: "product_base_img", err: fmt.Errorf(`ent: validator failed for field "DevBuild.product_base_img": %w`, err)} + } + } + if v, ok := dbc.mutation.ProductDockerfile(); ok { + if err := devbuild.ProductDockerfileValidator(v); err != nil { + return &ValidationError{Name: "product_dockerfile", err: fmt.Errorf(`ent: validator failed for field "DevBuild.product_dockerfile": %w`, err)} + } + } + if v, ok := dbc.mutation.Status(); ok { + if err := devbuild.StatusValidator(v); err != nil { + return &ValidationError{Name: "status", err: fmt.Errorf(`ent: validator failed for field "DevBuild.status": %w`, err)} + } + } + if v, ok := dbc.mutation.ErrMsg(); ok { + if err := devbuild.ErrMsgValidator(v); err != nil { + return &ValidationError{Name: "err_msg", err: fmt.Errorf(`ent: validator failed for field "DevBuild.err_msg": %w`, err)} + } + } + return nil +} + +func (dbc *DevBuildCreate) sqlSave(ctx context.Context) (*DevBuild, error) { + if err := dbc.check(); err != nil { + return nil, err + } + _node, _spec := dbc.createSpec() + if err := sqlgraph.CreateNode(ctx, dbc.driver, _spec); err != nil { + if sqlgraph.IsConstraintError(err) { + err = &ConstraintError{msg: err.Error(), wrap: err} + } + return nil, err + } + id := _spec.ID.Value.(int64) + _node.ID = int(id) + dbc.mutation.id = &_node.ID + dbc.mutation.done = true + return _node, nil +} + +func (dbc *DevBuildCreate) createSpec() (*DevBuild, *sqlgraph.CreateSpec) { + var ( + _node = &DevBuild{config: dbc.config} + _spec = sqlgraph.NewCreateSpec(devbuild.Table, sqlgraph.NewFieldSpec(devbuild.FieldID, field.TypeInt)) + ) + if value, ok := dbc.mutation.CreatedBy(); ok { + _spec.SetField(devbuild.FieldCreatedBy, field.TypeString, value) + _node.CreatedBy = value + } + if value, ok := dbc.mutation.CreatedAt(); ok { + _spec.SetField(devbuild.FieldCreatedAt, field.TypeTime, value) + _node.CreatedAt = value + } + if value, ok := dbc.mutation.UpdatedAt(); ok { + _spec.SetField(devbuild.FieldUpdatedAt, field.TypeTime, value) + _node.UpdatedAt = value + } + if value, ok := dbc.mutation.Product(); ok { + _spec.SetField(devbuild.FieldProduct, field.TypeString, value) + _node.Product = value + } + if value, ok := dbc.mutation.Edition(); ok { + _spec.SetField(devbuild.FieldEdition, field.TypeString, value) + _node.Edition = value + } + if value, ok := dbc.mutation.Version(); ok { + _spec.SetField(devbuild.FieldVersion, field.TypeString, value) + _node.Version = value + } + if value, ok := dbc.mutation.GithubRepo(); ok { + _spec.SetField(devbuild.FieldGithubRepo, field.TypeString, value) + _node.GithubRepo = value + } + if value, ok := dbc.mutation.GitRef(); ok { + _spec.SetField(devbuild.FieldGitRef, field.TypeString, value) + _node.GitRef = value + } + if value, ok := dbc.mutation.GitHash(); ok { + _spec.SetField(devbuild.FieldGitHash, field.TypeString, value) + _node.GitHash = value + } + if value, ok := dbc.mutation.PluginGitRef(); ok { + _spec.SetField(devbuild.FieldPluginGitRef, field.TypeString, value) + _node.PluginGitRef = value + } + if value, ok := dbc.mutation.IsHotfix(); ok { + _spec.SetField(devbuild.FieldIsHotfix, field.TypeBool, value) + _node.IsHotfix = value + } + if value, ok := dbc.mutation.IsPushGcr(); ok { + _spec.SetField(devbuild.FieldIsPushGcr, field.TypeBool, value) + _node.IsPushGcr = value + } + if value, ok := dbc.mutation.TargetImg(); ok { + _spec.SetField(devbuild.FieldTargetImg, field.TypeString, value) + _node.TargetImg = value + } + if value, ok := dbc.mutation.PipelineEngine(); ok { + _spec.SetField(devbuild.FieldPipelineEngine, field.TypeString, value) + _node.PipelineEngine = value + } + if value, ok := dbc.mutation.BuilderImg(); ok { + _spec.SetField(devbuild.FieldBuilderImg, field.TypeString, value) + _node.BuilderImg = value + } + if value, ok := dbc.mutation.BuildEnv(); ok { + _spec.SetField(devbuild.FieldBuildEnv, field.TypeString, value) + _node.BuildEnv = value + } + if value, ok := dbc.mutation.Features(); ok { + _spec.SetField(devbuild.FieldFeatures, field.TypeString, value) + _node.Features = value + } + if value, ok := dbc.mutation.ProductBaseImg(); ok { + _spec.SetField(devbuild.FieldProductBaseImg, field.TypeString, value) + _node.ProductBaseImg = value + } + if value, ok := dbc.mutation.ProductDockerfile(); ok { + _spec.SetField(devbuild.FieldProductDockerfile, field.TypeString, value) + _node.ProductDockerfile = value + } + if value, ok := dbc.mutation.Status(); ok { + _spec.SetField(devbuild.FieldStatus, field.TypeString, value) + _node.Status = value + } + if value, ok := dbc.mutation.ErrMsg(); ok { + _spec.SetField(devbuild.FieldErrMsg, field.TypeString, value) + _node.ErrMsg = value + } + if value, ok := dbc.mutation.PipelineBuildID(); ok { + _spec.SetField(devbuild.FieldPipelineBuildID, field.TypeInt64, value) + _node.PipelineBuildID = value + } + if value, ok := dbc.mutation.PipelineStartAt(); ok { + _spec.SetField(devbuild.FieldPipelineStartAt, field.TypeTime, value) + _node.PipelineStartAt = value + } + if value, ok := dbc.mutation.PipelineEndAt(); ok { + _spec.SetField(devbuild.FieldPipelineEndAt, field.TypeTime, value) + _node.PipelineEndAt = value + } + if value, ok := dbc.mutation.BuildReport(); ok { + _spec.SetField(devbuild.FieldBuildReport, field.TypeJSON, value) + _node.BuildReport = value + } + if value, ok := dbc.mutation.TektonStatus(); ok { + _spec.SetField(devbuild.FieldTektonStatus, field.TypeJSON, value) + _node.TektonStatus = value + } + return _node, _spec +} + +// DevBuildCreateBulk is the builder for creating many DevBuild entities in bulk. +type DevBuildCreateBulk struct { + config + err error + builders []*DevBuildCreate +} + +// Save creates the DevBuild entities in the database. +func (dbcb *DevBuildCreateBulk) Save(ctx context.Context) ([]*DevBuild, error) { + if dbcb.err != nil { + return nil, dbcb.err + } + specs := make([]*sqlgraph.CreateSpec, len(dbcb.builders)) + nodes := make([]*DevBuild, len(dbcb.builders)) + mutators := make([]Mutator, len(dbcb.builders)) + for i := range dbcb.builders { + func(i int, root context.Context) { + builder := dbcb.builders[i] + builder.defaults() + var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { + mutation, ok := m.(*DevBuildMutation) + if !ok { + return nil, fmt.Errorf("unexpected mutation type %T", m) + } + if err := builder.check(); err != nil { + return nil, err + } + builder.mutation = mutation + var err error + nodes[i], specs[i] = builder.createSpec() + if i < len(mutators)-1 { + _, err = mutators[i+1].Mutate(root, dbcb.builders[i+1].mutation) + } else { + spec := &sqlgraph.BatchCreateSpec{Nodes: specs} + // Invoke the actual operation on the latest mutation in the chain. + if err = sqlgraph.BatchCreate(ctx, dbcb.driver, spec); err != nil { + if sqlgraph.IsConstraintError(err) { + err = &ConstraintError{msg: err.Error(), wrap: err} + } + } + } + if err != nil { + return nil, err + } + mutation.id = &nodes[i].ID + if specs[i].ID.Value != nil { + id := specs[i].ID.Value.(int64) + nodes[i].ID = int(id) + } + mutation.done = true + return nodes[i], nil + }) + for i := len(builder.hooks) - 1; i >= 0; i-- { + mut = builder.hooks[i](mut) + } + mutators[i] = mut + }(i, ctx) + } + if len(mutators) > 0 { + if _, err := mutators[0].Mutate(ctx, dbcb.builders[0].mutation); err != nil { + return nil, err + } + } + return nodes, nil +} + +// SaveX is like Save, but panics if an error occurs. +func (dbcb *DevBuildCreateBulk) SaveX(ctx context.Context) []*DevBuild { + v, err := dbcb.Save(ctx) + if err != nil { + panic(err) + } + return v +} + +// Exec executes the query. +func (dbcb *DevBuildCreateBulk) Exec(ctx context.Context) error { + _, err := dbcb.Save(ctx) + return err +} + +// ExecX is like Exec, but panics if an error occurs. +func (dbcb *DevBuildCreateBulk) ExecX(ctx context.Context) { + if err := dbcb.Exec(ctx); err != nil { + panic(err) + } +} diff --git a/experiments/tibuild-v2/internal/database/ent/devbuild_delete.go b/experiments/tibuild-v2/internal/database/ent/devbuild_delete.go new file mode 100644 index 00000000..251d27ad --- /dev/null +++ b/experiments/tibuild-v2/internal/database/ent/devbuild_delete.go @@ -0,0 +1,88 @@ +// Code generated by ent, DO NOT EDIT. + +package ent + +import ( + "context" + + "entgo.io/ent/dialect/sql" + "entgo.io/ent/dialect/sql/sqlgraph" + "entgo.io/ent/schema/field" + "github.com/PingCAP-QE/ee-apps/tibuild/internal/database/ent/devbuild" + "github.com/PingCAP-QE/ee-apps/tibuild/internal/database/ent/predicate" +) + +// DevBuildDelete is the builder for deleting a DevBuild entity. +type DevBuildDelete struct { + config + hooks []Hook + mutation *DevBuildMutation +} + +// Where appends a list predicates to the DevBuildDelete builder. +func (dbd *DevBuildDelete) Where(ps ...predicate.DevBuild) *DevBuildDelete { + dbd.mutation.Where(ps...) + return dbd +} + +// Exec executes the deletion query and returns how many vertices were deleted. +func (dbd *DevBuildDelete) Exec(ctx context.Context) (int, error) { + return withHooks(ctx, dbd.sqlExec, dbd.mutation, dbd.hooks) +} + +// ExecX is like Exec, but panics if an error occurs. +func (dbd *DevBuildDelete) ExecX(ctx context.Context) int { + n, err := dbd.Exec(ctx) + if err != nil { + panic(err) + } + return n +} + +func (dbd *DevBuildDelete) sqlExec(ctx context.Context) (int, error) { + _spec := sqlgraph.NewDeleteSpec(devbuild.Table, sqlgraph.NewFieldSpec(devbuild.FieldID, field.TypeInt)) + if ps := dbd.mutation.predicates; len(ps) > 0 { + _spec.Predicate = func(selector *sql.Selector) { + for i := range ps { + ps[i](selector) + } + } + } + affected, err := sqlgraph.DeleteNodes(ctx, dbd.driver, _spec) + if err != nil && sqlgraph.IsConstraintError(err) { + err = &ConstraintError{msg: err.Error(), wrap: err} + } + dbd.mutation.done = true + return affected, err +} + +// DevBuildDeleteOne is the builder for deleting a single DevBuild entity. +type DevBuildDeleteOne struct { + dbd *DevBuildDelete +} + +// Where appends a list predicates to the DevBuildDelete builder. +func (dbdo *DevBuildDeleteOne) Where(ps ...predicate.DevBuild) *DevBuildDeleteOne { + dbdo.dbd.mutation.Where(ps...) + return dbdo +} + +// Exec executes the deletion query. +func (dbdo *DevBuildDeleteOne) Exec(ctx context.Context) error { + n, err := dbdo.dbd.Exec(ctx) + switch { + case err != nil: + return err + case n == 0: + return &NotFoundError{devbuild.Label} + default: + return nil + } +} + +// ExecX is like Exec, but panics if an error occurs. +func (dbdo *DevBuildDeleteOne) ExecX(ctx context.Context) { + if err := dbdo.Exec(ctx); err != nil { + panic(err) + } +} diff --git a/experiments/tibuild-v2/internal/database/ent/devbuild_query.go b/experiments/tibuild-v2/internal/database/ent/devbuild_query.go new file mode 100644 index 00000000..6b1d95ff --- /dev/null +++ b/experiments/tibuild-v2/internal/database/ent/devbuild_query.go @@ -0,0 +1,527 @@ +// Code generated by ent, DO NOT EDIT. + +package ent + +import ( + "context" + "fmt" + "math" + + "entgo.io/ent" + "entgo.io/ent/dialect/sql" + "entgo.io/ent/dialect/sql/sqlgraph" + "entgo.io/ent/schema/field" + "github.com/PingCAP-QE/ee-apps/tibuild/internal/database/ent/devbuild" + "github.com/PingCAP-QE/ee-apps/tibuild/internal/database/ent/predicate" +) + +// DevBuildQuery is the builder for querying DevBuild entities. +type DevBuildQuery struct { + config + ctx *QueryContext + order []devbuild.OrderOption + inters []Interceptor + predicates []predicate.DevBuild + // intermediate query (i.e. traversal path). + sql *sql.Selector + path func(context.Context) (*sql.Selector, error) +} + +// Where adds a new predicate for the DevBuildQuery builder. +func (dbq *DevBuildQuery) Where(ps ...predicate.DevBuild) *DevBuildQuery { + dbq.predicates = append(dbq.predicates, ps...) + return dbq +} + +// Limit the number of records to be returned by this query. +func (dbq *DevBuildQuery) Limit(limit int) *DevBuildQuery { + dbq.ctx.Limit = &limit + return dbq +} + +// Offset to start from. +func (dbq *DevBuildQuery) Offset(offset int) *DevBuildQuery { + dbq.ctx.Offset = &offset + return dbq +} + +// Unique configures the query builder to filter duplicate records on query. +// By default, unique is set to true, and can be disabled using this method. +func (dbq *DevBuildQuery) Unique(unique bool) *DevBuildQuery { + dbq.ctx.Unique = &unique + return dbq +} + +// Order specifies how the records should be ordered. +func (dbq *DevBuildQuery) Order(o ...devbuild.OrderOption) *DevBuildQuery { + dbq.order = append(dbq.order, o...) + return dbq +} + +// First returns the first DevBuild entity from the query. +// Returns a *NotFoundError when no DevBuild was found. +func (dbq *DevBuildQuery) First(ctx context.Context) (*DevBuild, error) { + nodes, err := dbq.Limit(1).All(setContextOp(ctx, dbq.ctx, ent.OpQueryFirst)) + if err != nil { + return nil, err + } + if len(nodes) == 0 { + return nil, &NotFoundError{devbuild.Label} + } + return nodes[0], nil +} + +// FirstX is like First, but panics if an error occurs. +func (dbq *DevBuildQuery) FirstX(ctx context.Context) *DevBuild { + node, err := dbq.First(ctx) + if err != nil && !IsNotFound(err) { + panic(err) + } + return node +} + +// FirstID returns the first DevBuild ID from the query. +// Returns a *NotFoundError when no DevBuild ID was found. +func (dbq *DevBuildQuery) FirstID(ctx context.Context) (id int, err error) { + var ids []int + if ids, err = dbq.Limit(1).IDs(setContextOp(ctx, dbq.ctx, ent.OpQueryFirstID)); err != nil { + return + } + if len(ids) == 0 { + err = &NotFoundError{devbuild.Label} + return + } + return ids[0], nil +} + +// FirstIDX is like FirstID, but panics if an error occurs. +func (dbq *DevBuildQuery) FirstIDX(ctx context.Context) int { + id, err := dbq.FirstID(ctx) + if err != nil && !IsNotFound(err) { + panic(err) + } + return id +} + +// Only returns a single DevBuild entity found by the query, ensuring it only returns one. +// Returns a *NotSingularError when more than one DevBuild entity is found. +// Returns a *NotFoundError when no DevBuild entities are found. +func (dbq *DevBuildQuery) Only(ctx context.Context) (*DevBuild, error) { + nodes, err := dbq.Limit(2).All(setContextOp(ctx, dbq.ctx, ent.OpQueryOnly)) + if err != nil { + return nil, err + } + switch len(nodes) { + case 1: + return nodes[0], nil + case 0: + return nil, &NotFoundError{devbuild.Label} + default: + return nil, &NotSingularError{devbuild.Label} + } +} + +// OnlyX is like Only, but panics if an error occurs. +func (dbq *DevBuildQuery) OnlyX(ctx context.Context) *DevBuild { + node, err := dbq.Only(ctx) + if err != nil { + panic(err) + } + return node +} + +// OnlyID is like Only, but returns the only DevBuild ID in the query. +// Returns a *NotSingularError when more than one DevBuild ID is found. +// Returns a *NotFoundError when no entities are found. +func (dbq *DevBuildQuery) OnlyID(ctx context.Context) (id int, err error) { + var ids []int + if ids, err = dbq.Limit(2).IDs(setContextOp(ctx, dbq.ctx, ent.OpQueryOnlyID)); err != nil { + return + } + switch len(ids) { + case 1: + id = ids[0] + case 0: + err = &NotFoundError{devbuild.Label} + default: + err = &NotSingularError{devbuild.Label} + } + return +} + +// OnlyIDX is like OnlyID, but panics if an error occurs. +func (dbq *DevBuildQuery) OnlyIDX(ctx context.Context) int { + id, err := dbq.OnlyID(ctx) + if err != nil { + panic(err) + } + return id +} + +// All executes the query and returns a list of DevBuilds. +func (dbq *DevBuildQuery) All(ctx context.Context) ([]*DevBuild, error) { + ctx = setContextOp(ctx, dbq.ctx, ent.OpQueryAll) + if err := dbq.prepareQuery(ctx); err != nil { + return nil, err + } + qr := querierAll[[]*DevBuild, *DevBuildQuery]() + return withInterceptors[[]*DevBuild](ctx, dbq, qr, dbq.inters) +} + +// AllX is like All, but panics if an error occurs. +func (dbq *DevBuildQuery) AllX(ctx context.Context) []*DevBuild { + nodes, err := dbq.All(ctx) + if err != nil { + panic(err) + } + return nodes +} + +// IDs executes the query and returns a list of DevBuild IDs. +func (dbq *DevBuildQuery) IDs(ctx context.Context) (ids []int, err error) { + if dbq.ctx.Unique == nil && dbq.path != nil { + dbq.Unique(true) + } + ctx = setContextOp(ctx, dbq.ctx, ent.OpQueryIDs) + if err = dbq.Select(devbuild.FieldID).Scan(ctx, &ids); err != nil { + return nil, err + } + return ids, nil +} + +// IDsX is like IDs, but panics if an error occurs. +func (dbq *DevBuildQuery) IDsX(ctx context.Context) []int { + ids, err := dbq.IDs(ctx) + if err != nil { + panic(err) + } + return ids +} + +// Count returns the count of the given query. +func (dbq *DevBuildQuery) Count(ctx context.Context) (int, error) { + ctx = setContextOp(ctx, dbq.ctx, ent.OpQueryCount) + if err := dbq.prepareQuery(ctx); err != nil { + return 0, err + } + return withInterceptors[int](ctx, dbq, querierCount[*DevBuildQuery](), dbq.inters) +} + +// CountX is like Count, but panics if an error occurs. +func (dbq *DevBuildQuery) CountX(ctx context.Context) int { + count, err := dbq.Count(ctx) + if err != nil { + panic(err) + } + return count +} + +// Exist returns true if the query has elements in the graph. +func (dbq *DevBuildQuery) Exist(ctx context.Context) (bool, error) { + ctx = setContextOp(ctx, dbq.ctx, ent.OpQueryExist) + switch _, err := dbq.FirstID(ctx); { + case IsNotFound(err): + return false, nil + case err != nil: + return false, fmt.Errorf("ent: check existence: %w", err) + default: + return true, nil + } +} + +// ExistX is like Exist, but panics if an error occurs. +func (dbq *DevBuildQuery) ExistX(ctx context.Context) bool { + exist, err := dbq.Exist(ctx) + if err != nil { + panic(err) + } + return exist +} + +// Clone returns a duplicate of the DevBuildQuery builder, including all associated steps. It can be +// used to prepare common query builders and use them differently after the clone is made. +func (dbq *DevBuildQuery) Clone() *DevBuildQuery { + if dbq == nil { + return nil + } + return &DevBuildQuery{ + config: dbq.config, + ctx: dbq.ctx.Clone(), + order: append([]devbuild.OrderOption{}, dbq.order...), + inters: append([]Interceptor{}, dbq.inters...), + predicates: append([]predicate.DevBuild{}, dbq.predicates...), + // clone intermediate query. + sql: dbq.sql.Clone(), + path: dbq.path, + } +} + +// GroupBy is used to group vertices by one or more fields/columns. +// It is often used with aggregate functions, like: count, max, mean, min, sum. +// +// Example: +// +// var v []struct { +// CreatedBy string `json:"created_by,omitempty"` +// Count int `json:"count,omitempty"` +// } +// +// client.DevBuild.Query(). +// GroupBy(devbuild.FieldCreatedBy). +// Aggregate(ent.Count()). +// Scan(ctx, &v) +func (dbq *DevBuildQuery) GroupBy(field string, fields ...string) *DevBuildGroupBy { + dbq.ctx.Fields = append([]string{field}, fields...) + grbuild := &DevBuildGroupBy{build: dbq} + grbuild.flds = &dbq.ctx.Fields + grbuild.label = devbuild.Label + grbuild.scan = grbuild.Scan + return grbuild +} + +// Select allows the selection one or more fields/columns for the given query, +// instead of selecting all fields in the entity. +// +// Example: +// +// var v []struct { +// CreatedBy string `json:"created_by,omitempty"` +// } +// +// client.DevBuild.Query(). +// Select(devbuild.FieldCreatedBy). +// Scan(ctx, &v) +func (dbq *DevBuildQuery) Select(fields ...string) *DevBuildSelect { + dbq.ctx.Fields = append(dbq.ctx.Fields, fields...) + sbuild := &DevBuildSelect{DevBuildQuery: dbq} + sbuild.label = devbuild.Label + sbuild.flds, sbuild.scan = &dbq.ctx.Fields, sbuild.Scan + return sbuild +} + +// Aggregate returns a DevBuildSelect configured with the given aggregations. +func (dbq *DevBuildQuery) Aggregate(fns ...AggregateFunc) *DevBuildSelect { + return dbq.Select().Aggregate(fns...) +} + +func (dbq *DevBuildQuery) prepareQuery(ctx context.Context) error { + for _, inter := range dbq.inters { + if inter == nil { + return fmt.Errorf("ent: uninitialized interceptor (forgotten import ent/runtime?)") + } + if trv, ok := inter.(Traverser); ok { + if err := trv.Traverse(ctx, dbq); err != nil { + return err + } + } + } + for _, f := range dbq.ctx.Fields { + if !devbuild.ValidColumn(f) { + return &ValidationError{Name: f, err: fmt.Errorf("ent: invalid field %q for query", f)} + } + } + if dbq.path != nil { + prev, err := dbq.path(ctx) + if err != nil { + return err + } + dbq.sql = prev + } + return nil +} + +func (dbq *DevBuildQuery) sqlAll(ctx context.Context, hooks ...queryHook) ([]*DevBuild, error) { + var ( + nodes = []*DevBuild{} + _spec = dbq.querySpec() + ) + _spec.ScanValues = func(columns []string) ([]any, error) { + return (*DevBuild).scanValues(nil, columns) + } + _spec.Assign = func(columns []string, values []any) error { + node := &DevBuild{config: dbq.config} + nodes = append(nodes, node) + return node.assignValues(columns, values) + } + for i := range hooks { + hooks[i](ctx, _spec) + } + if err := sqlgraph.QueryNodes(ctx, dbq.driver, _spec); err != nil { + return nil, err + } + if len(nodes) == 0 { + return nodes, nil + } + return nodes, nil +} + +func (dbq *DevBuildQuery) sqlCount(ctx context.Context) (int, error) { + _spec := dbq.querySpec() + _spec.Node.Columns = dbq.ctx.Fields + if len(dbq.ctx.Fields) > 0 { + _spec.Unique = dbq.ctx.Unique != nil && *dbq.ctx.Unique + } + return sqlgraph.CountNodes(ctx, dbq.driver, _spec) +} + +func (dbq *DevBuildQuery) querySpec() *sqlgraph.QuerySpec { + _spec := sqlgraph.NewQuerySpec(devbuild.Table, devbuild.Columns, sqlgraph.NewFieldSpec(devbuild.FieldID, field.TypeInt)) + _spec.From = dbq.sql + if unique := dbq.ctx.Unique; unique != nil { + _spec.Unique = *unique + } else if dbq.path != nil { + _spec.Unique = true + } + if fields := dbq.ctx.Fields; len(fields) > 0 { + _spec.Node.Columns = make([]string, 0, len(fields)) + _spec.Node.Columns = append(_spec.Node.Columns, devbuild.FieldID) + for i := range fields { + if fields[i] != devbuild.FieldID { + _spec.Node.Columns = append(_spec.Node.Columns, fields[i]) + } + } + } + if ps := dbq.predicates; len(ps) > 0 { + _spec.Predicate = func(selector *sql.Selector) { + for i := range ps { + ps[i](selector) + } + } + } + if limit := dbq.ctx.Limit; limit != nil { + _spec.Limit = *limit + } + if offset := dbq.ctx.Offset; offset != nil { + _spec.Offset = *offset + } + if ps := dbq.order; len(ps) > 0 { + _spec.Order = func(selector *sql.Selector) { + for i := range ps { + ps[i](selector) + } + } + } + return _spec +} + +func (dbq *DevBuildQuery) sqlQuery(ctx context.Context) *sql.Selector { + builder := sql.Dialect(dbq.driver.Dialect()) + t1 := builder.Table(devbuild.Table) + columns := dbq.ctx.Fields + if len(columns) == 0 { + columns = devbuild.Columns + } + selector := builder.Select(t1.Columns(columns...)...).From(t1) + if dbq.sql != nil { + selector = dbq.sql + selector.Select(selector.Columns(columns...)...) + } + if dbq.ctx.Unique != nil && *dbq.ctx.Unique { + selector.Distinct() + } + for _, p := range dbq.predicates { + p(selector) + } + for _, p := range dbq.order { + p(selector) + } + if offset := dbq.ctx.Offset; offset != nil { + // limit is mandatory for offset clause. We start + // with default value, and override it below if needed. + selector.Offset(*offset).Limit(math.MaxInt32) + } + if limit := dbq.ctx.Limit; limit != nil { + selector.Limit(*limit) + } + return selector +} + +// DevBuildGroupBy is the group-by builder for DevBuild entities. +type DevBuildGroupBy struct { + selector + build *DevBuildQuery +} + +// Aggregate adds the given aggregation functions to the group-by query. +func (dbgb *DevBuildGroupBy) Aggregate(fns ...AggregateFunc) *DevBuildGroupBy { + dbgb.fns = append(dbgb.fns, fns...) + return dbgb +} + +// Scan applies the selector query and scans the result into the given value. +func (dbgb *DevBuildGroupBy) Scan(ctx context.Context, v any) error { + ctx = setContextOp(ctx, dbgb.build.ctx, ent.OpQueryGroupBy) + if err := dbgb.build.prepareQuery(ctx); err != nil { + return err + } + return scanWithInterceptors[*DevBuildQuery, *DevBuildGroupBy](ctx, dbgb.build, dbgb, dbgb.build.inters, v) +} + +func (dbgb *DevBuildGroupBy) sqlScan(ctx context.Context, root *DevBuildQuery, v any) error { + selector := root.sqlQuery(ctx).Select() + aggregation := make([]string, 0, len(dbgb.fns)) + for _, fn := range dbgb.fns { + aggregation = append(aggregation, fn(selector)) + } + if len(selector.SelectedColumns()) == 0 { + columns := make([]string, 0, len(*dbgb.flds)+len(dbgb.fns)) + for _, f := range *dbgb.flds { + columns = append(columns, selector.C(f)) + } + columns = append(columns, aggregation...) + selector.Select(columns...) + } + selector.GroupBy(selector.Columns(*dbgb.flds...)...) + if err := selector.Err(); err != nil { + return err + } + rows := &sql.Rows{} + query, args := selector.Query() + if err := dbgb.build.driver.Query(ctx, query, args, rows); err != nil { + return err + } + defer rows.Close() + return sql.ScanSlice(rows, v) +} + +// DevBuildSelect is the builder for selecting fields of DevBuild entities. +type DevBuildSelect struct { + *DevBuildQuery + selector +} + +// Aggregate adds the given aggregation functions to the selector query. +func (dbs *DevBuildSelect) Aggregate(fns ...AggregateFunc) *DevBuildSelect { + dbs.fns = append(dbs.fns, fns...) + return dbs +} + +// Scan applies the selector query and scans the result into the given value. +func (dbs *DevBuildSelect) Scan(ctx context.Context, v any) error { + ctx = setContextOp(ctx, dbs.ctx, ent.OpQuerySelect) + if err := dbs.prepareQuery(ctx); err != nil { + return err + } + return scanWithInterceptors[*DevBuildQuery, *DevBuildSelect](ctx, dbs.DevBuildQuery, dbs, dbs.inters, v) +} + +func (dbs *DevBuildSelect) sqlScan(ctx context.Context, root *DevBuildQuery, v any) error { + selector := root.sqlQuery(ctx) + aggregation := make([]string, 0, len(dbs.fns)) + for _, fn := range dbs.fns { + aggregation = append(aggregation, fn(selector)) + } + switch n := len(*dbs.selector.flds); { + case n == 0 && len(aggregation) > 0: + selector.Select(aggregation...) + case n != 0 && len(aggregation) > 0: + selector.AppendSelect(aggregation...) + } + rows := &sql.Rows{} + query, args := selector.Query() + if err := dbs.driver.Query(ctx, query, args, rows); err != nil { + return err + } + defer rows.Close() + return sql.ScanSlice(rows, v) +} diff --git a/experiments/tibuild-v2/internal/database/ent/devbuild_update.go b/experiments/tibuild-v2/internal/database/ent/devbuild_update.go new file mode 100644 index 00000000..699081e1 --- /dev/null +++ b/experiments/tibuild-v2/internal/database/ent/devbuild_update.go @@ -0,0 +1,1650 @@ +// Code generated by ent, DO NOT EDIT. + +package ent + +import ( + "context" + "errors" + "fmt" + "time" + + "entgo.io/ent/dialect/sql" + "entgo.io/ent/dialect/sql/sqlgraph" + "entgo.io/ent/schema/field" + "github.com/PingCAP-QE/ee-apps/tibuild/internal/database/ent/devbuild" + "github.com/PingCAP-QE/ee-apps/tibuild/internal/database/ent/predicate" +) + +// DevBuildUpdate is the builder for updating DevBuild entities. +type DevBuildUpdate struct { + config + hooks []Hook + mutation *DevBuildMutation +} + +// Where appends a list predicates to the DevBuildUpdate builder. +func (dbu *DevBuildUpdate) Where(ps ...predicate.DevBuild) *DevBuildUpdate { + dbu.mutation.Where(ps...) + return dbu +} + +// SetCreatedBy sets the "created_by" field. +func (dbu *DevBuildUpdate) SetCreatedBy(s string) *DevBuildUpdate { + dbu.mutation.SetCreatedBy(s) + return dbu +} + +// SetNillableCreatedBy sets the "created_by" field if the given value is not nil. +func (dbu *DevBuildUpdate) SetNillableCreatedBy(s *string) *DevBuildUpdate { + if s != nil { + dbu.SetCreatedBy(*s) + } + return dbu +} + +// ClearCreatedBy clears the value of the "created_by" field. +func (dbu *DevBuildUpdate) ClearCreatedBy() *DevBuildUpdate { + dbu.mutation.ClearCreatedBy() + return dbu +} + +// SetCreatedAt sets the "created_at" field. +func (dbu *DevBuildUpdate) SetCreatedAt(t time.Time) *DevBuildUpdate { + dbu.mutation.SetCreatedAt(t) + return dbu +} + +// SetNillableCreatedAt sets the "created_at" field if the given value is not nil. +func (dbu *DevBuildUpdate) SetNillableCreatedAt(t *time.Time) *DevBuildUpdate { + if t != nil { + dbu.SetCreatedAt(*t) + } + return dbu +} + +// SetUpdatedAt sets the "updated_at" field. +func (dbu *DevBuildUpdate) SetUpdatedAt(t time.Time) *DevBuildUpdate { + dbu.mutation.SetUpdatedAt(t) + return dbu +} + +// SetProduct sets the "product" field. +func (dbu *DevBuildUpdate) SetProduct(s string) *DevBuildUpdate { + dbu.mutation.SetProduct(s) + return dbu +} + +// SetNillableProduct sets the "product" field if the given value is not nil. +func (dbu *DevBuildUpdate) SetNillableProduct(s *string) *DevBuildUpdate { + if s != nil { + dbu.SetProduct(*s) + } + return dbu +} + +// ClearProduct clears the value of the "product" field. +func (dbu *DevBuildUpdate) ClearProduct() *DevBuildUpdate { + dbu.mutation.ClearProduct() + return dbu +} + +// SetEdition sets the "edition" field. +func (dbu *DevBuildUpdate) SetEdition(s string) *DevBuildUpdate { + dbu.mutation.SetEdition(s) + return dbu +} + +// SetNillableEdition sets the "edition" field if the given value is not nil. +func (dbu *DevBuildUpdate) SetNillableEdition(s *string) *DevBuildUpdate { + if s != nil { + dbu.SetEdition(*s) + } + return dbu +} + +// ClearEdition clears the value of the "edition" field. +func (dbu *DevBuildUpdate) ClearEdition() *DevBuildUpdate { + dbu.mutation.ClearEdition() + return dbu +} + +// SetVersion sets the "version" field. +func (dbu *DevBuildUpdate) SetVersion(s string) *DevBuildUpdate { + dbu.mutation.SetVersion(s) + return dbu +} + +// SetNillableVersion sets the "version" field if the given value is not nil. +func (dbu *DevBuildUpdate) SetNillableVersion(s *string) *DevBuildUpdate { + if s != nil { + dbu.SetVersion(*s) + } + return dbu +} + +// ClearVersion clears the value of the "version" field. +func (dbu *DevBuildUpdate) ClearVersion() *DevBuildUpdate { + dbu.mutation.ClearVersion() + return dbu +} + +// SetGithubRepo sets the "github_repo" field. +func (dbu *DevBuildUpdate) SetGithubRepo(s string) *DevBuildUpdate { + dbu.mutation.SetGithubRepo(s) + return dbu +} + +// SetNillableGithubRepo sets the "github_repo" field if the given value is not nil. +func (dbu *DevBuildUpdate) SetNillableGithubRepo(s *string) *DevBuildUpdate { + if s != nil { + dbu.SetGithubRepo(*s) + } + return dbu +} + +// ClearGithubRepo clears the value of the "github_repo" field. +func (dbu *DevBuildUpdate) ClearGithubRepo() *DevBuildUpdate { + dbu.mutation.ClearGithubRepo() + return dbu +} + +// SetGitRef sets the "git_ref" field. +func (dbu *DevBuildUpdate) SetGitRef(s string) *DevBuildUpdate { + dbu.mutation.SetGitRef(s) + return dbu +} + +// SetNillableGitRef sets the "git_ref" field if the given value is not nil. +func (dbu *DevBuildUpdate) SetNillableGitRef(s *string) *DevBuildUpdate { + if s != nil { + dbu.SetGitRef(*s) + } + return dbu +} + +// ClearGitRef clears the value of the "git_ref" field. +func (dbu *DevBuildUpdate) ClearGitRef() *DevBuildUpdate { + dbu.mutation.ClearGitRef() + return dbu +} + +// SetGitHash sets the "git_hash" field. +func (dbu *DevBuildUpdate) SetGitHash(s string) *DevBuildUpdate { + dbu.mutation.SetGitHash(s) + return dbu +} + +// SetNillableGitHash sets the "git_hash" field if the given value is not nil. +func (dbu *DevBuildUpdate) SetNillableGitHash(s *string) *DevBuildUpdate { + if s != nil { + dbu.SetGitHash(*s) + } + return dbu +} + +// ClearGitHash clears the value of the "git_hash" field. +func (dbu *DevBuildUpdate) ClearGitHash() *DevBuildUpdate { + dbu.mutation.ClearGitHash() + return dbu +} + +// SetPluginGitRef sets the "plugin_git_ref" field. +func (dbu *DevBuildUpdate) SetPluginGitRef(s string) *DevBuildUpdate { + dbu.mutation.SetPluginGitRef(s) + return dbu +} + +// SetNillablePluginGitRef sets the "plugin_git_ref" field if the given value is not nil. +func (dbu *DevBuildUpdate) SetNillablePluginGitRef(s *string) *DevBuildUpdate { + if s != nil { + dbu.SetPluginGitRef(*s) + } + return dbu +} + +// ClearPluginGitRef clears the value of the "plugin_git_ref" field. +func (dbu *DevBuildUpdate) ClearPluginGitRef() *DevBuildUpdate { + dbu.mutation.ClearPluginGitRef() + return dbu +} + +// SetIsHotfix sets the "is_hotfix" field. +func (dbu *DevBuildUpdate) SetIsHotfix(b bool) *DevBuildUpdate { + dbu.mutation.SetIsHotfix(b) + return dbu +} + +// SetNillableIsHotfix sets the "is_hotfix" field if the given value is not nil. +func (dbu *DevBuildUpdate) SetNillableIsHotfix(b *bool) *DevBuildUpdate { + if b != nil { + dbu.SetIsHotfix(*b) + } + return dbu +} + +// SetIsPushGcr sets the "is_push_gcr" field. +func (dbu *DevBuildUpdate) SetIsPushGcr(b bool) *DevBuildUpdate { + dbu.mutation.SetIsPushGcr(b) + return dbu +} + +// SetNillableIsPushGcr sets the "is_push_gcr" field if the given value is not nil. +func (dbu *DevBuildUpdate) SetNillableIsPushGcr(b *bool) *DevBuildUpdate { + if b != nil { + dbu.SetIsPushGcr(*b) + } + return dbu +} + +// ClearIsPushGcr clears the value of the "is_push_gcr" field. +func (dbu *DevBuildUpdate) ClearIsPushGcr() *DevBuildUpdate { + dbu.mutation.ClearIsPushGcr() + return dbu +} + +// SetTargetImg sets the "target_img" field. +func (dbu *DevBuildUpdate) SetTargetImg(s string) *DevBuildUpdate { + dbu.mutation.SetTargetImg(s) + return dbu +} + +// SetNillableTargetImg sets the "target_img" field if the given value is not nil. +func (dbu *DevBuildUpdate) SetNillableTargetImg(s *string) *DevBuildUpdate { + if s != nil { + dbu.SetTargetImg(*s) + } + return dbu +} + +// ClearTargetImg clears the value of the "target_img" field. +func (dbu *DevBuildUpdate) ClearTargetImg() *DevBuildUpdate { + dbu.mutation.ClearTargetImg() + return dbu +} + +// SetPipelineEngine sets the "pipeline_engine" field. +func (dbu *DevBuildUpdate) SetPipelineEngine(s string) *DevBuildUpdate { + dbu.mutation.SetPipelineEngine(s) + return dbu +} + +// SetNillablePipelineEngine sets the "pipeline_engine" field if the given value is not nil. +func (dbu *DevBuildUpdate) SetNillablePipelineEngine(s *string) *DevBuildUpdate { + if s != nil { + dbu.SetPipelineEngine(*s) + } + return dbu +} + +// ClearPipelineEngine clears the value of the "pipeline_engine" field. +func (dbu *DevBuildUpdate) ClearPipelineEngine() *DevBuildUpdate { + dbu.mutation.ClearPipelineEngine() + return dbu +} + +// SetBuilderImg sets the "builder_img" field. +func (dbu *DevBuildUpdate) SetBuilderImg(s string) *DevBuildUpdate { + dbu.mutation.SetBuilderImg(s) + return dbu +} + +// SetNillableBuilderImg sets the "builder_img" field if the given value is not nil. +func (dbu *DevBuildUpdate) SetNillableBuilderImg(s *string) *DevBuildUpdate { + if s != nil { + dbu.SetBuilderImg(*s) + } + return dbu +} + +// ClearBuilderImg clears the value of the "builder_img" field. +func (dbu *DevBuildUpdate) ClearBuilderImg() *DevBuildUpdate { + dbu.mutation.ClearBuilderImg() + return dbu +} + +// SetBuildEnv sets the "build_env" field. +func (dbu *DevBuildUpdate) SetBuildEnv(s string) *DevBuildUpdate { + dbu.mutation.SetBuildEnv(s) + return dbu +} + +// SetNillableBuildEnv sets the "build_env" field if the given value is not nil. +func (dbu *DevBuildUpdate) SetNillableBuildEnv(s *string) *DevBuildUpdate { + if s != nil { + dbu.SetBuildEnv(*s) + } + return dbu +} + +// ClearBuildEnv clears the value of the "build_env" field. +func (dbu *DevBuildUpdate) ClearBuildEnv() *DevBuildUpdate { + dbu.mutation.ClearBuildEnv() + return dbu +} + +// SetFeatures sets the "features" field. +func (dbu *DevBuildUpdate) SetFeatures(s string) *DevBuildUpdate { + dbu.mutation.SetFeatures(s) + return dbu +} + +// SetNillableFeatures sets the "features" field if the given value is not nil. +func (dbu *DevBuildUpdate) SetNillableFeatures(s *string) *DevBuildUpdate { + if s != nil { + dbu.SetFeatures(*s) + } + return dbu +} + +// ClearFeatures clears the value of the "features" field. +func (dbu *DevBuildUpdate) ClearFeatures() *DevBuildUpdate { + dbu.mutation.ClearFeatures() + return dbu +} + +// SetProductBaseImg sets the "product_base_img" field. +func (dbu *DevBuildUpdate) SetProductBaseImg(s string) *DevBuildUpdate { + dbu.mutation.SetProductBaseImg(s) + return dbu +} + +// SetNillableProductBaseImg sets the "product_base_img" field if the given value is not nil. +func (dbu *DevBuildUpdate) SetNillableProductBaseImg(s *string) *DevBuildUpdate { + if s != nil { + dbu.SetProductBaseImg(*s) + } + return dbu +} + +// ClearProductBaseImg clears the value of the "product_base_img" field. +func (dbu *DevBuildUpdate) ClearProductBaseImg() *DevBuildUpdate { + dbu.mutation.ClearProductBaseImg() + return dbu +} + +// SetProductDockerfile sets the "product_dockerfile" field. +func (dbu *DevBuildUpdate) SetProductDockerfile(s string) *DevBuildUpdate { + dbu.mutation.SetProductDockerfile(s) + return dbu +} + +// SetNillableProductDockerfile sets the "product_dockerfile" field if the given value is not nil. +func (dbu *DevBuildUpdate) SetNillableProductDockerfile(s *string) *DevBuildUpdate { + if s != nil { + dbu.SetProductDockerfile(*s) + } + return dbu +} + +// ClearProductDockerfile clears the value of the "product_dockerfile" field. +func (dbu *DevBuildUpdate) ClearProductDockerfile() *DevBuildUpdate { + dbu.mutation.ClearProductDockerfile() + return dbu +} + +// SetStatus sets the "status" field. +func (dbu *DevBuildUpdate) SetStatus(s string) *DevBuildUpdate { + dbu.mutation.SetStatus(s) + return dbu +} + +// SetNillableStatus sets the "status" field if the given value is not nil. +func (dbu *DevBuildUpdate) SetNillableStatus(s *string) *DevBuildUpdate { + if s != nil { + dbu.SetStatus(*s) + } + return dbu +} + +// ClearStatus clears the value of the "status" field. +func (dbu *DevBuildUpdate) ClearStatus() *DevBuildUpdate { + dbu.mutation.ClearStatus() + return dbu +} + +// SetErrMsg sets the "err_msg" field. +func (dbu *DevBuildUpdate) SetErrMsg(s string) *DevBuildUpdate { + dbu.mutation.SetErrMsg(s) + return dbu +} + +// SetNillableErrMsg sets the "err_msg" field if the given value is not nil. +func (dbu *DevBuildUpdate) SetNillableErrMsg(s *string) *DevBuildUpdate { + if s != nil { + dbu.SetErrMsg(*s) + } + return dbu +} + +// ClearErrMsg clears the value of the "err_msg" field. +func (dbu *DevBuildUpdate) ClearErrMsg() *DevBuildUpdate { + dbu.mutation.ClearErrMsg() + return dbu +} + +// SetPipelineBuildID sets the "pipeline_build_id" field. +func (dbu *DevBuildUpdate) SetPipelineBuildID(i int64) *DevBuildUpdate { + dbu.mutation.ResetPipelineBuildID() + dbu.mutation.SetPipelineBuildID(i) + return dbu +} + +// SetNillablePipelineBuildID sets the "pipeline_build_id" field if the given value is not nil. +func (dbu *DevBuildUpdate) SetNillablePipelineBuildID(i *int64) *DevBuildUpdate { + if i != nil { + dbu.SetPipelineBuildID(*i) + } + return dbu +} + +// AddPipelineBuildID adds i to the "pipeline_build_id" field. +func (dbu *DevBuildUpdate) AddPipelineBuildID(i int64) *DevBuildUpdate { + dbu.mutation.AddPipelineBuildID(i) + return dbu +} + +// ClearPipelineBuildID clears the value of the "pipeline_build_id" field. +func (dbu *DevBuildUpdate) ClearPipelineBuildID() *DevBuildUpdate { + dbu.mutation.ClearPipelineBuildID() + return dbu +} + +// SetPipelineStartAt sets the "pipeline_start_at" field. +func (dbu *DevBuildUpdate) SetPipelineStartAt(t time.Time) *DevBuildUpdate { + dbu.mutation.SetPipelineStartAt(t) + return dbu +} + +// SetNillablePipelineStartAt sets the "pipeline_start_at" field if the given value is not nil. +func (dbu *DevBuildUpdate) SetNillablePipelineStartAt(t *time.Time) *DevBuildUpdate { + if t != nil { + dbu.SetPipelineStartAt(*t) + } + return dbu +} + +// ClearPipelineStartAt clears the value of the "pipeline_start_at" field. +func (dbu *DevBuildUpdate) ClearPipelineStartAt() *DevBuildUpdate { + dbu.mutation.ClearPipelineStartAt() + return dbu +} + +// SetPipelineEndAt sets the "pipeline_end_at" field. +func (dbu *DevBuildUpdate) SetPipelineEndAt(t time.Time) *DevBuildUpdate { + dbu.mutation.SetPipelineEndAt(t) + return dbu +} + +// SetNillablePipelineEndAt sets the "pipeline_end_at" field if the given value is not nil. +func (dbu *DevBuildUpdate) SetNillablePipelineEndAt(t *time.Time) *DevBuildUpdate { + if t != nil { + dbu.SetPipelineEndAt(*t) + } + return dbu +} + +// ClearPipelineEndAt clears the value of the "pipeline_end_at" field. +func (dbu *DevBuildUpdate) ClearPipelineEndAt() *DevBuildUpdate { + dbu.mutation.ClearPipelineEndAt() + return dbu +} + +// SetBuildReport sets the "build_report" field. +func (dbu *DevBuildUpdate) SetBuildReport(m map[string]interface{}) *DevBuildUpdate { + dbu.mutation.SetBuildReport(m) + return dbu +} + +// ClearBuildReport clears the value of the "build_report" field. +func (dbu *DevBuildUpdate) ClearBuildReport() *DevBuildUpdate { + dbu.mutation.ClearBuildReport() + return dbu +} + +// SetTektonStatus sets the "tekton_status" field. +func (dbu *DevBuildUpdate) SetTektonStatus(m map[string]interface{}) *DevBuildUpdate { + dbu.mutation.SetTektonStatus(m) + return dbu +} + +// ClearTektonStatus clears the value of the "tekton_status" field. +func (dbu *DevBuildUpdate) ClearTektonStatus() *DevBuildUpdate { + dbu.mutation.ClearTektonStatus() + return dbu +} + +// Mutation returns the DevBuildMutation object of the builder. +func (dbu *DevBuildUpdate) Mutation() *DevBuildMutation { + return dbu.mutation +} + +// Save executes the query and returns the number of nodes affected by the update operation. +func (dbu *DevBuildUpdate) Save(ctx context.Context) (int, error) { + dbu.defaults() + return withHooks(ctx, dbu.sqlSave, dbu.mutation, dbu.hooks) +} + +// SaveX is like Save, but panics if an error occurs. +func (dbu *DevBuildUpdate) SaveX(ctx context.Context) int { + affected, err := dbu.Save(ctx) + if err != nil { + panic(err) + } + return affected +} + +// Exec executes the query. +func (dbu *DevBuildUpdate) Exec(ctx context.Context) error { + _, err := dbu.Save(ctx) + return err +} + +// ExecX is like Exec, but panics if an error occurs. +func (dbu *DevBuildUpdate) ExecX(ctx context.Context) { + if err := dbu.Exec(ctx); err != nil { + panic(err) + } +} + +// defaults sets the default values of the builder before save. +func (dbu *DevBuildUpdate) defaults() { + if _, ok := dbu.mutation.UpdatedAt(); !ok { + v := devbuild.UpdateDefaultUpdatedAt() + dbu.mutation.SetUpdatedAt(v) + } +} + +// check runs all checks and user-defined validators on the builder. +func (dbu *DevBuildUpdate) check() error { + if v, ok := dbu.mutation.CreatedBy(); ok { + if err := devbuild.CreatedByValidator(v); err != nil { + return &ValidationError{Name: "created_by", err: fmt.Errorf(`ent: validator failed for field "DevBuild.created_by": %w`, err)} + } + } + if v, ok := dbu.mutation.Product(); ok { + if err := devbuild.ProductValidator(v); err != nil { + return &ValidationError{Name: "product", err: fmt.Errorf(`ent: validator failed for field "DevBuild.product": %w`, err)} + } + } + if v, ok := dbu.mutation.Edition(); ok { + if err := devbuild.EditionValidator(v); err != nil { + return &ValidationError{Name: "edition", err: fmt.Errorf(`ent: validator failed for field "DevBuild.edition": %w`, err)} + } + } + if v, ok := dbu.mutation.Version(); ok { + if err := devbuild.VersionValidator(v); err != nil { + return &ValidationError{Name: "version", err: fmt.Errorf(`ent: validator failed for field "DevBuild.version": %w`, err)} + } + } + if v, ok := dbu.mutation.GithubRepo(); ok { + if err := devbuild.GithubRepoValidator(v); err != nil { + return &ValidationError{Name: "github_repo", err: fmt.Errorf(`ent: validator failed for field "DevBuild.github_repo": %w`, err)} + } + } + if v, ok := dbu.mutation.GitRef(); ok { + if err := devbuild.GitRefValidator(v); err != nil { + return &ValidationError{Name: "git_ref", err: fmt.Errorf(`ent: validator failed for field "DevBuild.git_ref": %w`, err)} + } + } + if v, ok := dbu.mutation.GitHash(); ok { + if err := devbuild.GitHashValidator(v); err != nil { + return &ValidationError{Name: "git_hash", err: fmt.Errorf(`ent: validator failed for field "DevBuild.git_hash": %w`, err)} + } + } + if v, ok := dbu.mutation.PluginGitRef(); ok { + if err := devbuild.PluginGitRefValidator(v); err != nil { + return &ValidationError{Name: "plugin_git_ref", err: fmt.Errorf(`ent: validator failed for field "DevBuild.plugin_git_ref": %w`, err)} + } + } + if v, ok := dbu.mutation.TargetImg(); ok { + if err := devbuild.TargetImgValidator(v); err != nil { + return &ValidationError{Name: "target_img", err: fmt.Errorf(`ent: validator failed for field "DevBuild.target_img": %w`, err)} + } + } + if v, ok := dbu.mutation.PipelineEngine(); ok { + if err := devbuild.PipelineEngineValidator(v); err != nil { + return &ValidationError{Name: "pipeline_engine", err: fmt.Errorf(`ent: validator failed for field "DevBuild.pipeline_engine": %w`, err)} + } + } + if v, ok := dbu.mutation.BuilderImg(); ok { + if err := devbuild.BuilderImgValidator(v); err != nil { + return &ValidationError{Name: "builder_img", err: fmt.Errorf(`ent: validator failed for field "DevBuild.builder_img": %w`, err)} + } + } + if v, ok := dbu.mutation.BuildEnv(); ok { + if err := devbuild.BuildEnvValidator(v); err != nil { + return &ValidationError{Name: "build_env", err: fmt.Errorf(`ent: validator failed for field "DevBuild.build_env": %w`, err)} + } + } + if v, ok := dbu.mutation.Features(); ok { + if err := devbuild.FeaturesValidator(v); err != nil { + return &ValidationError{Name: "features", err: fmt.Errorf(`ent: validator failed for field "DevBuild.features": %w`, err)} + } + } + if v, ok := dbu.mutation.ProductBaseImg(); ok { + if err := devbuild.ProductBaseImgValidator(v); err != nil { + return &ValidationError{Name: "product_base_img", err: fmt.Errorf(`ent: validator failed for field "DevBuild.product_base_img": %w`, err)} + } + } + if v, ok := dbu.mutation.ProductDockerfile(); ok { + if err := devbuild.ProductDockerfileValidator(v); err != nil { + return &ValidationError{Name: "product_dockerfile", err: fmt.Errorf(`ent: validator failed for field "DevBuild.product_dockerfile": %w`, err)} + } + } + if v, ok := dbu.mutation.Status(); ok { + if err := devbuild.StatusValidator(v); err != nil { + return &ValidationError{Name: "status", err: fmt.Errorf(`ent: validator failed for field "DevBuild.status": %w`, err)} + } + } + if v, ok := dbu.mutation.ErrMsg(); ok { + if err := devbuild.ErrMsgValidator(v); err != nil { + return &ValidationError{Name: "err_msg", err: fmt.Errorf(`ent: validator failed for field "DevBuild.err_msg": %w`, err)} + } + } + return nil +} + +func (dbu *DevBuildUpdate) sqlSave(ctx context.Context) (n int, err error) { + if err := dbu.check(); err != nil { + return n, err + } + _spec := sqlgraph.NewUpdateSpec(devbuild.Table, devbuild.Columns, sqlgraph.NewFieldSpec(devbuild.FieldID, field.TypeInt)) + if ps := dbu.mutation.predicates; len(ps) > 0 { + _spec.Predicate = func(selector *sql.Selector) { + for i := range ps { + ps[i](selector) + } + } + } + if value, ok := dbu.mutation.CreatedBy(); ok { + _spec.SetField(devbuild.FieldCreatedBy, field.TypeString, value) + } + if dbu.mutation.CreatedByCleared() { + _spec.ClearField(devbuild.FieldCreatedBy, field.TypeString) + } + if value, ok := dbu.mutation.CreatedAt(); ok { + _spec.SetField(devbuild.FieldCreatedAt, field.TypeTime, value) + } + if value, ok := dbu.mutation.UpdatedAt(); ok { + _spec.SetField(devbuild.FieldUpdatedAt, field.TypeTime, value) + } + if value, ok := dbu.mutation.Product(); ok { + _spec.SetField(devbuild.FieldProduct, field.TypeString, value) + } + if dbu.mutation.ProductCleared() { + _spec.ClearField(devbuild.FieldProduct, field.TypeString) + } + if value, ok := dbu.mutation.Edition(); ok { + _spec.SetField(devbuild.FieldEdition, field.TypeString, value) + } + if dbu.mutation.EditionCleared() { + _spec.ClearField(devbuild.FieldEdition, field.TypeString) + } + if value, ok := dbu.mutation.Version(); ok { + _spec.SetField(devbuild.FieldVersion, field.TypeString, value) + } + if dbu.mutation.VersionCleared() { + _spec.ClearField(devbuild.FieldVersion, field.TypeString) + } + if value, ok := dbu.mutation.GithubRepo(); ok { + _spec.SetField(devbuild.FieldGithubRepo, field.TypeString, value) + } + if dbu.mutation.GithubRepoCleared() { + _spec.ClearField(devbuild.FieldGithubRepo, field.TypeString) + } + if value, ok := dbu.mutation.GitRef(); ok { + _spec.SetField(devbuild.FieldGitRef, field.TypeString, value) + } + if dbu.mutation.GitRefCleared() { + _spec.ClearField(devbuild.FieldGitRef, field.TypeString) + } + if value, ok := dbu.mutation.GitHash(); ok { + _spec.SetField(devbuild.FieldGitHash, field.TypeString, value) + } + if dbu.mutation.GitHashCleared() { + _spec.ClearField(devbuild.FieldGitHash, field.TypeString) + } + if value, ok := dbu.mutation.PluginGitRef(); ok { + _spec.SetField(devbuild.FieldPluginGitRef, field.TypeString, value) + } + if dbu.mutation.PluginGitRefCleared() { + _spec.ClearField(devbuild.FieldPluginGitRef, field.TypeString) + } + if value, ok := dbu.mutation.IsHotfix(); ok { + _spec.SetField(devbuild.FieldIsHotfix, field.TypeBool, value) + } + if value, ok := dbu.mutation.IsPushGcr(); ok { + _spec.SetField(devbuild.FieldIsPushGcr, field.TypeBool, value) + } + if dbu.mutation.IsPushGcrCleared() { + _spec.ClearField(devbuild.FieldIsPushGcr, field.TypeBool) + } + if value, ok := dbu.mutation.TargetImg(); ok { + _spec.SetField(devbuild.FieldTargetImg, field.TypeString, value) + } + if dbu.mutation.TargetImgCleared() { + _spec.ClearField(devbuild.FieldTargetImg, field.TypeString) + } + if value, ok := dbu.mutation.PipelineEngine(); ok { + _spec.SetField(devbuild.FieldPipelineEngine, field.TypeString, value) + } + if dbu.mutation.PipelineEngineCleared() { + _spec.ClearField(devbuild.FieldPipelineEngine, field.TypeString) + } + if value, ok := dbu.mutation.BuilderImg(); ok { + _spec.SetField(devbuild.FieldBuilderImg, field.TypeString, value) + } + if dbu.mutation.BuilderImgCleared() { + _spec.ClearField(devbuild.FieldBuilderImg, field.TypeString) + } + if value, ok := dbu.mutation.BuildEnv(); ok { + _spec.SetField(devbuild.FieldBuildEnv, field.TypeString, value) + } + if dbu.mutation.BuildEnvCleared() { + _spec.ClearField(devbuild.FieldBuildEnv, field.TypeString) + } + if value, ok := dbu.mutation.Features(); ok { + _spec.SetField(devbuild.FieldFeatures, field.TypeString, value) + } + if dbu.mutation.FeaturesCleared() { + _spec.ClearField(devbuild.FieldFeatures, field.TypeString) + } + if value, ok := dbu.mutation.ProductBaseImg(); ok { + _spec.SetField(devbuild.FieldProductBaseImg, field.TypeString, value) + } + if dbu.mutation.ProductBaseImgCleared() { + _spec.ClearField(devbuild.FieldProductBaseImg, field.TypeString) + } + if value, ok := dbu.mutation.ProductDockerfile(); ok { + _spec.SetField(devbuild.FieldProductDockerfile, field.TypeString, value) + } + if dbu.mutation.ProductDockerfileCleared() { + _spec.ClearField(devbuild.FieldProductDockerfile, field.TypeString) + } + if value, ok := dbu.mutation.Status(); ok { + _spec.SetField(devbuild.FieldStatus, field.TypeString, value) + } + if dbu.mutation.StatusCleared() { + _spec.ClearField(devbuild.FieldStatus, field.TypeString) + } + if value, ok := dbu.mutation.ErrMsg(); ok { + _spec.SetField(devbuild.FieldErrMsg, field.TypeString, value) + } + if dbu.mutation.ErrMsgCleared() { + _spec.ClearField(devbuild.FieldErrMsg, field.TypeString) + } + if value, ok := dbu.mutation.PipelineBuildID(); ok { + _spec.SetField(devbuild.FieldPipelineBuildID, field.TypeInt64, value) + } + if value, ok := dbu.mutation.AddedPipelineBuildID(); ok { + _spec.AddField(devbuild.FieldPipelineBuildID, field.TypeInt64, value) + } + if dbu.mutation.PipelineBuildIDCleared() { + _spec.ClearField(devbuild.FieldPipelineBuildID, field.TypeInt64) + } + if value, ok := dbu.mutation.PipelineStartAt(); ok { + _spec.SetField(devbuild.FieldPipelineStartAt, field.TypeTime, value) + } + if dbu.mutation.PipelineStartAtCleared() { + _spec.ClearField(devbuild.FieldPipelineStartAt, field.TypeTime) + } + if value, ok := dbu.mutation.PipelineEndAt(); ok { + _spec.SetField(devbuild.FieldPipelineEndAt, field.TypeTime, value) + } + if dbu.mutation.PipelineEndAtCleared() { + _spec.ClearField(devbuild.FieldPipelineEndAt, field.TypeTime) + } + if value, ok := dbu.mutation.BuildReport(); ok { + _spec.SetField(devbuild.FieldBuildReport, field.TypeJSON, value) + } + if dbu.mutation.BuildReportCleared() { + _spec.ClearField(devbuild.FieldBuildReport, field.TypeJSON) + } + if value, ok := dbu.mutation.TektonStatus(); ok { + _spec.SetField(devbuild.FieldTektonStatus, field.TypeJSON, value) + } + if dbu.mutation.TektonStatusCleared() { + _spec.ClearField(devbuild.FieldTektonStatus, field.TypeJSON) + } + if n, err = sqlgraph.UpdateNodes(ctx, dbu.driver, _spec); err != nil { + if _, ok := err.(*sqlgraph.NotFoundError); ok { + err = &NotFoundError{devbuild.Label} + } else if sqlgraph.IsConstraintError(err) { + err = &ConstraintError{msg: err.Error(), wrap: err} + } + return 0, err + } + dbu.mutation.done = true + return n, nil +} + +// DevBuildUpdateOne is the builder for updating a single DevBuild entity. +type DevBuildUpdateOne struct { + config + fields []string + hooks []Hook + mutation *DevBuildMutation +} + +// SetCreatedBy sets the "created_by" field. +func (dbuo *DevBuildUpdateOne) SetCreatedBy(s string) *DevBuildUpdateOne { + dbuo.mutation.SetCreatedBy(s) + return dbuo +} + +// SetNillableCreatedBy sets the "created_by" field if the given value is not nil. +func (dbuo *DevBuildUpdateOne) SetNillableCreatedBy(s *string) *DevBuildUpdateOne { + if s != nil { + dbuo.SetCreatedBy(*s) + } + return dbuo +} + +// ClearCreatedBy clears the value of the "created_by" field. +func (dbuo *DevBuildUpdateOne) ClearCreatedBy() *DevBuildUpdateOne { + dbuo.mutation.ClearCreatedBy() + return dbuo +} + +// SetCreatedAt sets the "created_at" field. +func (dbuo *DevBuildUpdateOne) SetCreatedAt(t time.Time) *DevBuildUpdateOne { + dbuo.mutation.SetCreatedAt(t) + return dbuo +} + +// SetNillableCreatedAt sets the "created_at" field if the given value is not nil. +func (dbuo *DevBuildUpdateOne) SetNillableCreatedAt(t *time.Time) *DevBuildUpdateOne { + if t != nil { + dbuo.SetCreatedAt(*t) + } + return dbuo +} + +// SetUpdatedAt sets the "updated_at" field. +func (dbuo *DevBuildUpdateOne) SetUpdatedAt(t time.Time) *DevBuildUpdateOne { + dbuo.mutation.SetUpdatedAt(t) + return dbuo +} + +// SetProduct sets the "product" field. +func (dbuo *DevBuildUpdateOne) SetProduct(s string) *DevBuildUpdateOne { + dbuo.mutation.SetProduct(s) + return dbuo +} + +// SetNillableProduct sets the "product" field if the given value is not nil. +func (dbuo *DevBuildUpdateOne) SetNillableProduct(s *string) *DevBuildUpdateOne { + if s != nil { + dbuo.SetProduct(*s) + } + return dbuo +} + +// ClearProduct clears the value of the "product" field. +func (dbuo *DevBuildUpdateOne) ClearProduct() *DevBuildUpdateOne { + dbuo.mutation.ClearProduct() + return dbuo +} + +// SetEdition sets the "edition" field. +func (dbuo *DevBuildUpdateOne) SetEdition(s string) *DevBuildUpdateOne { + dbuo.mutation.SetEdition(s) + return dbuo +} + +// SetNillableEdition sets the "edition" field if the given value is not nil. +func (dbuo *DevBuildUpdateOne) SetNillableEdition(s *string) *DevBuildUpdateOne { + if s != nil { + dbuo.SetEdition(*s) + } + return dbuo +} + +// ClearEdition clears the value of the "edition" field. +func (dbuo *DevBuildUpdateOne) ClearEdition() *DevBuildUpdateOne { + dbuo.mutation.ClearEdition() + return dbuo +} + +// SetVersion sets the "version" field. +func (dbuo *DevBuildUpdateOne) SetVersion(s string) *DevBuildUpdateOne { + dbuo.mutation.SetVersion(s) + return dbuo +} + +// SetNillableVersion sets the "version" field if the given value is not nil. +func (dbuo *DevBuildUpdateOne) SetNillableVersion(s *string) *DevBuildUpdateOne { + if s != nil { + dbuo.SetVersion(*s) + } + return dbuo +} + +// ClearVersion clears the value of the "version" field. +func (dbuo *DevBuildUpdateOne) ClearVersion() *DevBuildUpdateOne { + dbuo.mutation.ClearVersion() + return dbuo +} + +// SetGithubRepo sets the "github_repo" field. +func (dbuo *DevBuildUpdateOne) SetGithubRepo(s string) *DevBuildUpdateOne { + dbuo.mutation.SetGithubRepo(s) + return dbuo +} + +// SetNillableGithubRepo sets the "github_repo" field if the given value is not nil. +func (dbuo *DevBuildUpdateOne) SetNillableGithubRepo(s *string) *DevBuildUpdateOne { + if s != nil { + dbuo.SetGithubRepo(*s) + } + return dbuo +} + +// ClearGithubRepo clears the value of the "github_repo" field. +func (dbuo *DevBuildUpdateOne) ClearGithubRepo() *DevBuildUpdateOne { + dbuo.mutation.ClearGithubRepo() + return dbuo +} + +// SetGitRef sets the "git_ref" field. +func (dbuo *DevBuildUpdateOne) SetGitRef(s string) *DevBuildUpdateOne { + dbuo.mutation.SetGitRef(s) + return dbuo +} + +// SetNillableGitRef sets the "git_ref" field if the given value is not nil. +func (dbuo *DevBuildUpdateOne) SetNillableGitRef(s *string) *DevBuildUpdateOne { + if s != nil { + dbuo.SetGitRef(*s) + } + return dbuo +} + +// ClearGitRef clears the value of the "git_ref" field. +func (dbuo *DevBuildUpdateOne) ClearGitRef() *DevBuildUpdateOne { + dbuo.mutation.ClearGitRef() + return dbuo +} + +// SetGitHash sets the "git_hash" field. +func (dbuo *DevBuildUpdateOne) SetGitHash(s string) *DevBuildUpdateOne { + dbuo.mutation.SetGitHash(s) + return dbuo +} + +// SetNillableGitHash sets the "git_hash" field if the given value is not nil. +func (dbuo *DevBuildUpdateOne) SetNillableGitHash(s *string) *DevBuildUpdateOne { + if s != nil { + dbuo.SetGitHash(*s) + } + return dbuo +} + +// ClearGitHash clears the value of the "git_hash" field. +func (dbuo *DevBuildUpdateOne) ClearGitHash() *DevBuildUpdateOne { + dbuo.mutation.ClearGitHash() + return dbuo +} + +// SetPluginGitRef sets the "plugin_git_ref" field. +func (dbuo *DevBuildUpdateOne) SetPluginGitRef(s string) *DevBuildUpdateOne { + dbuo.mutation.SetPluginGitRef(s) + return dbuo +} + +// SetNillablePluginGitRef sets the "plugin_git_ref" field if the given value is not nil. +func (dbuo *DevBuildUpdateOne) SetNillablePluginGitRef(s *string) *DevBuildUpdateOne { + if s != nil { + dbuo.SetPluginGitRef(*s) + } + return dbuo +} + +// ClearPluginGitRef clears the value of the "plugin_git_ref" field. +func (dbuo *DevBuildUpdateOne) ClearPluginGitRef() *DevBuildUpdateOne { + dbuo.mutation.ClearPluginGitRef() + return dbuo +} + +// SetIsHotfix sets the "is_hotfix" field. +func (dbuo *DevBuildUpdateOne) SetIsHotfix(b bool) *DevBuildUpdateOne { + dbuo.mutation.SetIsHotfix(b) + return dbuo +} + +// SetNillableIsHotfix sets the "is_hotfix" field if the given value is not nil. +func (dbuo *DevBuildUpdateOne) SetNillableIsHotfix(b *bool) *DevBuildUpdateOne { + if b != nil { + dbuo.SetIsHotfix(*b) + } + return dbuo +} + +// SetIsPushGcr sets the "is_push_gcr" field. +func (dbuo *DevBuildUpdateOne) SetIsPushGcr(b bool) *DevBuildUpdateOne { + dbuo.mutation.SetIsPushGcr(b) + return dbuo +} + +// SetNillableIsPushGcr sets the "is_push_gcr" field if the given value is not nil. +func (dbuo *DevBuildUpdateOne) SetNillableIsPushGcr(b *bool) *DevBuildUpdateOne { + if b != nil { + dbuo.SetIsPushGcr(*b) + } + return dbuo +} + +// ClearIsPushGcr clears the value of the "is_push_gcr" field. +func (dbuo *DevBuildUpdateOne) ClearIsPushGcr() *DevBuildUpdateOne { + dbuo.mutation.ClearIsPushGcr() + return dbuo +} + +// SetTargetImg sets the "target_img" field. +func (dbuo *DevBuildUpdateOne) SetTargetImg(s string) *DevBuildUpdateOne { + dbuo.mutation.SetTargetImg(s) + return dbuo +} + +// SetNillableTargetImg sets the "target_img" field if the given value is not nil. +func (dbuo *DevBuildUpdateOne) SetNillableTargetImg(s *string) *DevBuildUpdateOne { + if s != nil { + dbuo.SetTargetImg(*s) + } + return dbuo +} + +// ClearTargetImg clears the value of the "target_img" field. +func (dbuo *DevBuildUpdateOne) ClearTargetImg() *DevBuildUpdateOne { + dbuo.mutation.ClearTargetImg() + return dbuo +} + +// SetPipelineEngine sets the "pipeline_engine" field. +func (dbuo *DevBuildUpdateOne) SetPipelineEngine(s string) *DevBuildUpdateOne { + dbuo.mutation.SetPipelineEngine(s) + return dbuo +} + +// SetNillablePipelineEngine sets the "pipeline_engine" field if the given value is not nil. +func (dbuo *DevBuildUpdateOne) SetNillablePipelineEngine(s *string) *DevBuildUpdateOne { + if s != nil { + dbuo.SetPipelineEngine(*s) + } + return dbuo +} + +// ClearPipelineEngine clears the value of the "pipeline_engine" field. +func (dbuo *DevBuildUpdateOne) ClearPipelineEngine() *DevBuildUpdateOne { + dbuo.mutation.ClearPipelineEngine() + return dbuo +} + +// SetBuilderImg sets the "builder_img" field. +func (dbuo *DevBuildUpdateOne) SetBuilderImg(s string) *DevBuildUpdateOne { + dbuo.mutation.SetBuilderImg(s) + return dbuo +} + +// SetNillableBuilderImg sets the "builder_img" field if the given value is not nil. +func (dbuo *DevBuildUpdateOne) SetNillableBuilderImg(s *string) *DevBuildUpdateOne { + if s != nil { + dbuo.SetBuilderImg(*s) + } + return dbuo +} + +// ClearBuilderImg clears the value of the "builder_img" field. +func (dbuo *DevBuildUpdateOne) ClearBuilderImg() *DevBuildUpdateOne { + dbuo.mutation.ClearBuilderImg() + return dbuo +} + +// SetBuildEnv sets the "build_env" field. +func (dbuo *DevBuildUpdateOne) SetBuildEnv(s string) *DevBuildUpdateOne { + dbuo.mutation.SetBuildEnv(s) + return dbuo +} + +// SetNillableBuildEnv sets the "build_env" field if the given value is not nil. +func (dbuo *DevBuildUpdateOne) SetNillableBuildEnv(s *string) *DevBuildUpdateOne { + if s != nil { + dbuo.SetBuildEnv(*s) + } + return dbuo +} + +// ClearBuildEnv clears the value of the "build_env" field. +func (dbuo *DevBuildUpdateOne) ClearBuildEnv() *DevBuildUpdateOne { + dbuo.mutation.ClearBuildEnv() + return dbuo +} + +// SetFeatures sets the "features" field. +func (dbuo *DevBuildUpdateOne) SetFeatures(s string) *DevBuildUpdateOne { + dbuo.mutation.SetFeatures(s) + return dbuo +} + +// SetNillableFeatures sets the "features" field if the given value is not nil. +func (dbuo *DevBuildUpdateOne) SetNillableFeatures(s *string) *DevBuildUpdateOne { + if s != nil { + dbuo.SetFeatures(*s) + } + return dbuo +} + +// ClearFeatures clears the value of the "features" field. +func (dbuo *DevBuildUpdateOne) ClearFeatures() *DevBuildUpdateOne { + dbuo.mutation.ClearFeatures() + return dbuo +} + +// SetProductBaseImg sets the "product_base_img" field. +func (dbuo *DevBuildUpdateOne) SetProductBaseImg(s string) *DevBuildUpdateOne { + dbuo.mutation.SetProductBaseImg(s) + return dbuo +} + +// SetNillableProductBaseImg sets the "product_base_img" field if the given value is not nil. +func (dbuo *DevBuildUpdateOne) SetNillableProductBaseImg(s *string) *DevBuildUpdateOne { + if s != nil { + dbuo.SetProductBaseImg(*s) + } + return dbuo +} + +// ClearProductBaseImg clears the value of the "product_base_img" field. +func (dbuo *DevBuildUpdateOne) ClearProductBaseImg() *DevBuildUpdateOne { + dbuo.mutation.ClearProductBaseImg() + return dbuo +} + +// SetProductDockerfile sets the "product_dockerfile" field. +func (dbuo *DevBuildUpdateOne) SetProductDockerfile(s string) *DevBuildUpdateOne { + dbuo.mutation.SetProductDockerfile(s) + return dbuo +} + +// SetNillableProductDockerfile sets the "product_dockerfile" field if the given value is not nil. +func (dbuo *DevBuildUpdateOne) SetNillableProductDockerfile(s *string) *DevBuildUpdateOne { + if s != nil { + dbuo.SetProductDockerfile(*s) + } + return dbuo +} + +// ClearProductDockerfile clears the value of the "product_dockerfile" field. +func (dbuo *DevBuildUpdateOne) ClearProductDockerfile() *DevBuildUpdateOne { + dbuo.mutation.ClearProductDockerfile() + return dbuo +} + +// SetStatus sets the "status" field. +func (dbuo *DevBuildUpdateOne) SetStatus(s string) *DevBuildUpdateOne { + dbuo.mutation.SetStatus(s) + return dbuo +} + +// SetNillableStatus sets the "status" field if the given value is not nil. +func (dbuo *DevBuildUpdateOne) SetNillableStatus(s *string) *DevBuildUpdateOne { + if s != nil { + dbuo.SetStatus(*s) + } + return dbuo +} + +// ClearStatus clears the value of the "status" field. +func (dbuo *DevBuildUpdateOne) ClearStatus() *DevBuildUpdateOne { + dbuo.mutation.ClearStatus() + return dbuo +} + +// SetErrMsg sets the "err_msg" field. +func (dbuo *DevBuildUpdateOne) SetErrMsg(s string) *DevBuildUpdateOne { + dbuo.mutation.SetErrMsg(s) + return dbuo +} + +// SetNillableErrMsg sets the "err_msg" field if the given value is not nil. +func (dbuo *DevBuildUpdateOne) SetNillableErrMsg(s *string) *DevBuildUpdateOne { + if s != nil { + dbuo.SetErrMsg(*s) + } + return dbuo +} + +// ClearErrMsg clears the value of the "err_msg" field. +func (dbuo *DevBuildUpdateOne) ClearErrMsg() *DevBuildUpdateOne { + dbuo.mutation.ClearErrMsg() + return dbuo +} + +// SetPipelineBuildID sets the "pipeline_build_id" field. +func (dbuo *DevBuildUpdateOne) SetPipelineBuildID(i int64) *DevBuildUpdateOne { + dbuo.mutation.ResetPipelineBuildID() + dbuo.mutation.SetPipelineBuildID(i) + return dbuo +} + +// SetNillablePipelineBuildID sets the "pipeline_build_id" field if the given value is not nil. +func (dbuo *DevBuildUpdateOne) SetNillablePipelineBuildID(i *int64) *DevBuildUpdateOne { + if i != nil { + dbuo.SetPipelineBuildID(*i) + } + return dbuo +} + +// AddPipelineBuildID adds i to the "pipeline_build_id" field. +func (dbuo *DevBuildUpdateOne) AddPipelineBuildID(i int64) *DevBuildUpdateOne { + dbuo.mutation.AddPipelineBuildID(i) + return dbuo +} + +// ClearPipelineBuildID clears the value of the "pipeline_build_id" field. +func (dbuo *DevBuildUpdateOne) ClearPipelineBuildID() *DevBuildUpdateOne { + dbuo.mutation.ClearPipelineBuildID() + return dbuo +} + +// SetPipelineStartAt sets the "pipeline_start_at" field. +func (dbuo *DevBuildUpdateOne) SetPipelineStartAt(t time.Time) *DevBuildUpdateOne { + dbuo.mutation.SetPipelineStartAt(t) + return dbuo +} + +// SetNillablePipelineStartAt sets the "pipeline_start_at" field if the given value is not nil. +func (dbuo *DevBuildUpdateOne) SetNillablePipelineStartAt(t *time.Time) *DevBuildUpdateOne { + if t != nil { + dbuo.SetPipelineStartAt(*t) + } + return dbuo +} + +// ClearPipelineStartAt clears the value of the "pipeline_start_at" field. +func (dbuo *DevBuildUpdateOne) ClearPipelineStartAt() *DevBuildUpdateOne { + dbuo.mutation.ClearPipelineStartAt() + return dbuo +} + +// SetPipelineEndAt sets the "pipeline_end_at" field. +func (dbuo *DevBuildUpdateOne) SetPipelineEndAt(t time.Time) *DevBuildUpdateOne { + dbuo.mutation.SetPipelineEndAt(t) + return dbuo +} + +// SetNillablePipelineEndAt sets the "pipeline_end_at" field if the given value is not nil. +func (dbuo *DevBuildUpdateOne) SetNillablePipelineEndAt(t *time.Time) *DevBuildUpdateOne { + if t != nil { + dbuo.SetPipelineEndAt(*t) + } + return dbuo +} + +// ClearPipelineEndAt clears the value of the "pipeline_end_at" field. +func (dbuo *DevBuildUpdateOne) ClearPipelineEndAt() *DevBuildUpdateOne { + dbuo.mutation.ClearPipelineEndAt() + return dbuo +} + +// SetBuildReport sets the "build_report" field. +func (dbuo *DevBuildUpdateOne) SetBuildReport(m map[string]interface{}) *DevBuildUpdateOne { + dbuo.mutation.SetBuildReport(m) + return dbuo +} + +// ClearBuildReport clears the value of the "build_report" field. +func (dbuo *DevBuildUpdateOne) ClearBuildReport() *DevBuildUpdateOne { + dbuo.mutation.ClearBuildReport() + return dbuo +} + +// SetTektonStatus sets the "tekton_status" field. +func (dbuo *DevBuildUpdateOne) SetTektonStatus(m map[string]interface{}) *DevBuildUpdateOne { + dbuo.mutation.SetTektonStatus(m) + return dbuo +} + +// ClearTektonStatus clears the value of the "tekton_status" field. +func (dbuo *DevBuildUpdateOne) ClearTektonStatus() *DevBuildUpdateOne { + dbuo.mutation.ClearTektonStatus() + return dbuo +} + +// Mutation returns the DevBuildMutation object of the builder. +func (dbuo *DevBuildUpdateOne) Mutation() *DevBuildMutation { + return dbuo.mutation +} + +// Where appends a list predicates to the DevBuildUpdate builder. +func (dbuo *DevBuildUpdateOne) Where(ps ...predicate.DevBuild) *DevBuildUpdateOne { + dbuo.mutation.Where(ps...) + return dbuo +} + +// Select allows selecting one or more fields (columns) of the returned entity. +// The default is selecting all fields defined in the entity schema. +func (dbuo *DevBuildUpdateOne) Select(field string, fields ...string) *DevBuildUpdateOne { + dbuo.fields = append([]string{field}, fields...) + return dbuo +} + +// Save executes the query and returns the updated DevBuild entity. +func (dbuo *DevBuildUpdateOne) Save(ctx context.Context) (*DevBuild, error) { + dbuo.defaults() + return withHooks(ctx, dbuo.sqlSave, dbuo.mutation, dbuo.hooks) +} + +// SaveX is like Save, but panics if an error occurs. +func (dbuo *DevBuildUpdateOne) SaveX(ctx context.Context) *DevBuild { + node, err := dbuo.Save(ctx) + if err != nil { + panic(err) + } + return node +} + +// Exec executes the query on the entity. +func (dbuo *DevBuildUpdateOne) Exec(ctx context.Context) error { + _, err := dbuo.Save(ctx) + return err +} + +// ExecX is like Exec, but panics if an error occurs. +func (dbuo *DevBuildUpdateOne) ExecX(ctx context.Context) { + if err := dbuo.Exec(ctx); err != nil { + panic(err) + } +} + +// defaults sets the default values of the builder before save. +func (dbuo *DevBuildUpdateOne) defaults() { + if _, ok := dbuo.mutation.UpdatedAt(); !ok { + v := devbuild.UpdateDefaultUpdatedAt() + dbuo.mutation.SetUpdatedAt(v) + } +} + +// check runs all checks and user-defined validators on the builder. +func (dbuo *DevBuildUpdateOne) check() error { + if v, ok := dbuo.mutation.CreatedBy(); ok { + if err := devbuild.CreatedByValidator(v); err != nil { + return &ValidationError{Name: "created_by", err: fmt.Errorf(`ent: validator failed for field "DevBuild.created_by": %w`, err)} + } + } + if v, ok := dbuo.mutation.Product(); ok { + if err := devbuild.ProductValidator(v); err != nil { + return &ValidationError{Name: "product", err: fmt.Errorf(`ent: validator failed for field "DevBuild.product": %w`, err)} + } + } + if v, ok := dbuo.mutation.Edition(); ok { + if err := devbuild.EditionValidator(v); err != nil { + return &ValidationError{Name: "edition", err: fmt.Errorf(`ent: validator failed for field "DevBuild.edition": %w`, err)} + } + } + if v, ok := dbuo.mutation.Version(); ok { + if err := devbuild.VersionValidator(v); err != nil { + return &ValidationError{Name: "version", err: fmt.Errorf(`ent: validator failed for field "DevBuild.version": %w`, err)} + } + } + if v, ok := dbuo.mutation.GithubRepo(); ok { + if err := devbuild.GithubRepoValidator(v); err != nil { + return &ValidationError{Name: "github_repo", err: fmt.Errorf(`ent: validator failed for field "DevBuild.github_repo": %w`, err)} + } + } + if v, ok := dbuo.mutation.GitRef(); ok { + if err := devbuild.GitRefValidator(v); err != nil { + return &ValidationError{Name: "git_ref", err: fmt.Errorf(`ent: validator failed for field "DevBuild.git_ref": %w`, err)} + } + } + if v, ok := dbuo.mutation.GitHash(); ok { + if err := devbuild.GitHashValidator(v); err != nil { + return &ValidationError{Name: "git_hash", err: fmt.Errorf(`ent: validator failed for field "DevBuild.git_hash": %w`, err)} + } + } + if v, ok := dbuo.mutation.PluginGitRef(); ok { + if err := devbuild.PluginGitRefValidator(v); err != nil { + return &ValidationError{Name: "plugin_git_ref", err: fmt.Errorf(`ent: validator failed for field "DevBuild.plugin_git_ref": %w`, err)} + } + } + if v, ok := dbuo.mutation.TargetImg(); ok { + if err := devbuild.TargetImgValidator(v); err != nil { + return &ValidationError{Name: "target_img", err: fmt.Errorf(`ent: validator failed for field "DevBuild.target_img": %w`, err)} + } + } + if v, ok := dbuo.mutation.PipelineEngine(); ok { + if err := devbuild.PipelineEngineValidator(v); err != nil { + return &ValidationError{Name: "pipeline_engine", err: fmt.Errorf(`ent: validator failed for field "DevBuild.pipeline_engine": %w`, err)} + } + } + if v, ok := dbuo.mutation.BuilderImg(); ok { + if err := devbuild.BuilderImgValidator(v); err != nil { + return &ValidationError{Name: "builder_img", err: fmt.Errorf(`ent: validator failed for field "DevBuild.builder_img": %w`, err)} + } + } + if v, ok := dbuo.mutation.BuildEnv(); ok { + if err := devbuild.BuildEnvValidator(v); err != nil { + return &ValidationError{Name: "build_env", err: fmt.Errorf(`ent: validator failed for field "DevBuild.build_env": %w`, err)} + } + } + if v, ok := dbuo.mutation.Features(); ok { + if err := devbuild.FeaturesValidator(v); err != nil { + return &ValidationError{Name: "features", err: fmt.Errorf(`ent: validator failed for field "DevBuild.features": %w`, err)} + } + } + if v, ok := dbuo.mutation.ProductBaseImg(); ok { + if err := devbuild.ProductBaseImgValidator(v); err != nil { + return &ValidationError{Name: "product_base_img", err: fmt.Errorf(`ent: validator failed for field "DevBuild.product_base_img": %w`, err)} + } + } + if v, ok := dbuo.mutation.ProductDockerfile(); ok { + if err := devbuild.ProductDockerfileValidator(v); err != nil { + return &ValidationError{Name: "product_dockerfile", err: fmt.Errorf(`ent: validator failed for field "DevBuild.product_dockerfile": %w`, err)} + } + } + if v, ok := dbuo.mutation.Status(); ok { + if err := devbuild.StatusValidator(v); err != nil { + return &ValidationError{Name: "status", err: fmt.Errorf(`ent: validator failed for field "DevBuild.status": %w`, err)} + } + } + if v, ok := dbuo.mutation.ErrMsg(); ok { + if err := devbuild.ErrMsgValidator(v); err != nil { + return &ValidationError{Name: "err_msg", err: fmt.Errorf(`ent: validator failed for field "DevBuild.err_msg": %w`, err)} + } + } + return nil +} + +func (dbuo *DevBuildUpdateOne) sqlSave(ctx context.Context) (_node *DevBuild, err error) { + if err := dbuo.check(); err != nil { + return _node, err + } + _spec := sqlgraph.NewUpdateSpec(devbuild.Table, devbuild.Columns, sqlgraph.NewFieldSpec(devbuild.FieldID, field.TypeInt)) + id, ok := dbuo.mutation.ID() + if !ok { + return nil, &ValidationError{Name: "id", err: errors.New(`ent: missing "DevBuild.id" for update`)} + } + _spec.Node.ID.Value = id + if fields := dbuo.fields; len(fields) > 0 { + _spec.Node.Columns = make([]string, 0, len(fields)) + _spec.Node.Columns = append(_spec.Node.Columns, devbuild.FieldID) + for _, f := range fields { + if !devbuild.ValidColumn(f) { + return nil, &ValidationError{Name: f, err: fmt.Errorf("ent: invalid field %q for query", f)} + } + if f != devbuild.FieldID { + _spec.Node.Columns = append(_spec.Node.Columns, f) + } + } + } + if ps := dbuo.mutation.predicates; len(ps) > 0 { + _spec.Predicate = func(selector *sql.Selector) { + for i := range ps { + ps[i](selector) + } + } + } + if value, ok := dbuo.mutation.CreatedBy(); ok { + _spec.SetField(devbuild.FieldCreatedBy, field.TypeString, value) + } + if dbuo.mutation.CreatedByCleared() { + _spec.ClearField(devbuild.FieldCreatedBy, field.TypeString) + } + if value, ok := dbuo.mutation.CreatedAt(); ok { + _spec.SetField(devbuild.FieldCreatedAt, field.TypeTime, value) + } + if value, ok := dbuo.mutation.UpdatedAt(); ok { + _spec.SetField(devbuild.FieldUpdatedAt, field.TypeTime, value) + } + if value, ok := dbuo.mutation.Product(); ok { + _spec.SetField(devbuild.FieldProduct, field.TypeString, value) + } + if dbuo.mutation.ProductCleared() { + _spec.ClearField(devbuild.FieldProduct, field.TypeString) + } + if value, ok := dbuo.mutation.Edition(); ok { + _spec.SetField(devbuild.FieldEdition, field.TypeString, value) + } + if dbuo.mutation.EditionCleared() { + _spec.ClearField(devbuild.FieldEdition, field.TypeString) + } + if value, ok := dbuo.mutation.Version(); ok { + _spec.SetField(devbuild.FieldVersion, field.TypeString, value) + } + if dbuo.mutation.VersionCleared() { + _spec.ClearField(devbuild.FieldVersion, field.TypeString) + } + if value, ok := dbuo.mutation.GithubRepo(); ok { + _spec.SetField(devbuild.FieldGithubRepo, field.TypeString, value) + } + if dbuo.mutation.GithubRepoCleared() { + _spec.ClearField(devbuild.FieldGithubRepo, field.TypeString) + } + if value, ok := dbuo.mutation.GitRef(); ok { + _spec.SetField(devbuild.FieldGitRef, field.TypeString, value) + } + if dbuo.mutation.GitRefCleared() { + _spec.ClearField(devbuild.FieldGitRef, field.TypeString) + } + if value, ok := dbuo.mutation.GitHash(); ok { + _spec.SetField(devbuild.FieldGitHash, field.TypeString, value) + } + if dbuo.mutation.GitHashCleared() { + _spec.ClearField(devbuild.FieldGitHash, field.TypeString) + } + if value, ok := dbuo.mutation.PluginGitRef(); ok { + _spec.SetField(devbuild.FieldPluginGitRef, field.TypeString, value) + } + if dbuo.mutation.PluginGitRefCleared() { + _spec.ClearField(devbuild.FieldPluginGitRef, field.TypeString) + } + if value, ok := dbuo.mutation.IsHotfix(); ok { + _spec.SetField(devbuild.FieldIsHotfix, field.TypeBool, value) + } + if value, ok := dbuo.mutation.IsPushGcr(); ok { + _spec.SetField(devbuild.FieldIsPushGcr, field.TypeBool, value) + } + if dbuo.mutation.IsPushGcrCleared() { + _spec.ClearField(devbuild.FieldIsPushGcr, field.TypeBool) + } + if value, ok := dbuo.mutation.TargetImg(); ok { + _spec.SetField(devbuild.FieldTargetImg, field.TypeString, value) + } + if dbuo.mutation.TargetImgCleared() { + _spec.ClearField(devbuild.FieldTargetImg, field.TypeString) + } + if value, ok := dbuo.mutation.PipelineEngine(); ok { + _spec.SetField(devbuild.FieldPipelineEngine, field.TypeString, value) + } + if dbuo.mutation.PipelineEngineCleared() { + _spec.ClearField(devbuild.FieldPipelineEngine, field.TypeString) + } + if value, ok := dbuo.mutation.BuilderImg(); ok { + _spec.SetField(devbuild.FieldBuilderImg, field.TypeString, value) + } + if dbuo.mutation.BuilderImgCleared() { + _spec.ClearField(devbuild.FieldBuilderImg, field.TypeString) + } + if value, ok := dbuo.mutation.BuildEnv(); ok { + _spec.SetField(devbuild.FieldBuildEnv, field.TypeString, value) + } + if dbuo.mutation.BuildEnvCleared() { + _spec.ClearField(devbuild.FieldBuildEnv, field.TypeString) + } + if value, ok := dbuo.mutation.Features(); ok { + _spec.SetField(devbuild.FieldFeatures, field.TypeString, value) + } + if dbuo.mutation.FeaturesCleared() { + _spec.ClearField(devbuild.FieldFeatures, field.TypeString) + } + if value, ok := dbuo.mutation.ProductBaseImg(); ok { + _spec.SetField(devbuild.FieldProductBaseImg, field.TypeString, value) + } + if dbuo.mutation.ProductBaseImgCleared() { + _spec.ClearField(devbuild.FieldProductBaseImg, field.TypeString) + } + if value, ok := dbuo.mutation.ProductDockerfile(); ok { + _spec.SetField(devbuild.FieldProductDockerfile, field.TypeString, value) + } + if dbuo.mutation.ProductDockerfileCleared() { + _spec.ClearField(devbuild.FieldProductDockerfile, field.TypeString) + } + if value, ok := dbuo.mutation.Status(); ok { + _spec.SetField(devbuild.FieldStatus, field.TypeString, value) + } + if dbuo.mutation.StatusCleared() { + _spec.ClearField(devbuild.FieldStatus, field.TypeString) + } + if value, ok := dbuo.mutation.ErrMsg(); ok { + _spec.SetField(devbuild.FieldErrMsg, field.TypeString, value) + } + if dbuo.mutation.ErrMsgCleared() { + _spec.ClearField(devbuild.FieldErrMsg, field.TypeString) + } + if value, ok := dbuo.mutation.PipelineBuildID(); ok { + _spec.SetField(devbuild.FieldPipelineBuildID, field.TypeInt64, value) + } + if value, ok := dbuo.mutation.AddedPipelineBuildID(); ok { + _spec.AddField(devbuild.FieldPipelineBuildID, field.TypeInt64, value) + } + if dbuo.mutation.PipelineBuildIDCleared() { + _spec.ClearField(devbuild.FieldPipelineBuildID, field.TypeInt64) + } + if value, ok := dbuo.mutation.PipelineStartAt(); ok { + _spec.SetField(devbuild.FieldPipelineStartAt, field.TypeTime, value) + } + if dbuo.mutation.PipelineStartAtCleared() { + _spec.ClearField(devbuild.FieldPipelineStartAt, field.TypeTime) + } + if value, ok := dbuo.mutation.PipelineEndAt(); ok { + _spec.SetField(devbuild.FieldPipelineEndAt, field.TypeTime, value) + } + if dbuo.mutation.PipelineEndAtCleared() { + _spec.ClearField(devbuild.FieldPipelineEndAt, field.TypeTime) + } + if value, ok := dbuo.mutation.BuildReport(); ok { + _spec.SetField(devbuild.FieldBuildReport, field.TypeJSON, value) + } + if dbuo.mutation.BuildReportCleared() { + _spec.ClearField(devbuild.FieldBuildReport, field.TypeJSON) + } + if value, ok := dbuo.mutation.TektonStatus(); ok { + _spec.SetField(devbuild.FieldTektonStatus, field.TypeJSON, value) + } + if dbuo.mutation.TektonStatusCleared() { + _spec.ClearField(devbuild.FieldTektonStatus, field.TypeJSON) + } + _node = &DevBuild{config: dbuo.config} + _spec.Assign = _node.assignValues + _spec.ScanValues = _node.scanValues + if err = sqlgraph.UpdateNode(ctx, dbuo.driver, _spec); err != nil { + if _, ok := err.(*sqlgraph.NotFoundError); ok { + err = &NotFoundError{devbuild.Label} + } else if sqlgraph.IsConstraintError(err) { + err = &ConstraintError{msg: err.Error(), wrap: err} + } + return nil, err + } + dbuo.mutation.done = true + return _node, nil +} diff --git a/experiments/tibuild-v2/internal/database/ent/ent.go b/experiments/tibuild-v2/internal/database/ent/ent.go new file mode 100644 index 00000000..f99230dc --- /dev/null +++ b/experiments/tibuild-v2/internal/database/ent/ent.go @@ -0,0 +1,608 @@ +// Code generated by ent, DO NOT EDIT. + +package ent + +import ( + "context" + "errors" + "fmt" + "reflect" + "sync" + + "entgo.io/ent" + "entgo.io/ent/dialect/sql" + "entgo.io/ent/dialect/sql/sqlgraph" + "github.com/PingCAP-QE/ee-apps/tibuild/internal/database/ent/devbuild" +) + +// ent aliases to avoid import conflicts in user's code. +type ( + Op = ent.Op + Hook = ent.Hook + Value = ent.Value + Query = ent.Query + QueryContext = ent.QueryContext + Querier = ent.Querier + QuerierFunc = ent.QuerierFunc + Interceptor = ent.Interceptor + InterceptFunc = ent.InterceptFunc + Traverser = ent.Traverser + TraverseFunc = ent.TraverseFunc + Policy = ent.Policy + Mutator = ent.Mutator + Mutation = ent.Mutation + MutateFunc = ent.MutateFunc +) + +type clientCtxKey struct{} + +// FromContext returns a Client stored inside a context, or nil if there isn't one. +func FromContext(ctx context.Context) *Client { + c, _ := ctx.Value(clientCtxKey{}).(*Client) + return c +} + +// NewContext returns a new context with the given Client attached. +func NewContext(parent context.Context, c *Client) context.Context { + return context.WithValue(parent, clientCtxKey{}, c) +} + +type txCtxKey struct{} + +// TxFromContext returns a Tx stored inside a context, or nil if there isn't one. +func TxFromContext(ctx context.Context) *Tx { + tx, _ := ctx.Value(txCtxKey{}).(*Tx) + return tx +} + +// NewTxContext returns a new context with the given Tx attached. +func NewTxContext(parent context.Context, tx *Tx) context.Context { + return context.WithValue(parent, txCtxKey{}, tx) +} + +// OrderFunc applies an ordering on the sql selector. +// Deprecated: Use Asc/Desc functions or the package builders instead. +type OrderFunc func(*sql.Selector) + +var ( + initCheck sync.Once + columnCheck sql.ColumnCheck +) + +// checkColumn checks if the column exists in the given table. +func checkColumn(table, column string) error { + initCheck.Do(func() { + columnCheck = sql.NewColumnCheck(map[string]func(string) bool{ + devbuild.Table: devbuild.ValidColumn, + }) + }) + return columnCheck(table, column) +} + +// Asc applies the given fields in ASC order. +func Asc(fields ...string) func(*sql.Selector) { + return func(s *sql.Selector) { + for _, f := range fields { + if err := checkColumn(s.TableName(), f); err != nil { + s.AddError(&ValidationError{Name: f, err: fmt.Errorf("ent: %w", err)}) + } + s.OrderBy(sql.Asc(s.C(f))) + } + } +} + +// Desc applies the given fields in DESC order. +func Desc(fields ...string) func(*sql.Selector) { + return func(s *sql.Selector) { + for _, f := range fields { + if err := checkColumn(s.TableName(), f); err != nil { + s.AddError(&ValidationError{Name: f, err: fmt.Errorf("ent: %w", err)}) + } + s.OrderBy(sql.Desc(s.C(f))) + } + } +} + +// AggregateFunc applies an aggregation step on the group-by traversal/selector. +type AggregateFunc func(*sql.Selector) string + +// As is a pseudo aggregation function for renaming another other functions with custom names. For example: +// +// GroupBy(field1, field2). +// Aggregate(ent.As(ent.Sum(field1), "sum_field1"), (ent.As(ent.Sum(field2), "sum_field2")). +// Scan(ctx, &v) +func As(fn AggregateFunc, end string) AggregateFunc { + return func(s *sql.Selector) string { + return sql.As(fn(s), end) + } +} + +// Count applies the "count" aggregation function on each group. +func Count() AggregateFunc { + return func(s *sql.Selector) string { + return sql.Count("*") + } +} + +// Max applies the "max" aggregation function on the given field of each group. +func Max(field string) AggregateFunc { + return func(s *sql.Selector) string { + if err := checkColumn(s.TableName(), field); err != nil { + s.AddError(&ValidationError{Name: field, err: fmt.Errorf("ent: %w", err)}) + return "" + } + return sql.Max(s.C(field)) + } +} + +// Mean applies the "mean" aggregation function on the given field of each group. +func Mean(field string) AggregateFunc { + return func(s *sql.Selector) string { + if err := checkColumn(s.TableName(), field); err != nil { + s.AddError(&ValidationError{Name: field, err: fmt.Errorf("ent: %w", err)}) + return "" + } + return sql.Avg(s.C(field)) + } +} + +// Min applies the "min" aggregation function on the given field of each group. +func Min(field string) AggregateFunc { + return func(s *sql.Selector) string { + if err := checkColumn(s.TableName(), field); err != nil { + s.AddError(&ValidationError{Name: field, err: fmt.Errorf("ent: %w", err)}) + return "" + } + return sql.Min(s.C(field)) + } +} + +// Sum applies the "sum" aggregation function on the given field of each group. +func Sum(field string) AggregateFunc { + return func(s *sql.Selector) string { + if err := checkColumn(s.TableName(), field); err != nil { + s.AddError(&ValidationError{Name: field, err: fmt.Errorf("ent: %w", err)}) + return "" + } + return sql.Sum(s.C(field)) + } +} + +// ValidationError returns when validating a field or edge fails. +type ValidationError struct { + Name string // Field or edge name. + err error +} + +// Error implements the error interface. +func (e *ValidationError) Error() string { + return e.err.Error() +} + +// Unwrap implements the errors.Wrapper interface. +func (e *ValidationError) Unwrap() error { + return e.err +} + +// IsValidationError returns a boolean indicating whether the error is a validation error. +func IsValidationError(err error) bool { + if err == nil { + return false + } + var e *ValidationError + return errors.As(err, &e) +} + +// NotFoundError returns when trying to fetch a specific entity and it was not found in the database. +type NotFoundError struct { + label string +} + +// Error implements the error interface. +func (e *NotFoundError) Error() string { + return "ent: " + e.label + " not found" +} + +// IsNotFound returns a boolean indicating whether the error is a not found error. +func IsNotFound(err error) bool { + if err == nil { + return false + } + var e *NotFoundError + return errors.As(err, &e) +} + +// MaskNotFound masks not found error. +func MaskNotFound(err error) error { + if IsNotFound(err) { + return nil + } + return err +} + +// NotSingularError returns when trying to fetch a singular entity and more then one was found in the database. +type NotSingularError struct { + label string +} + +// Error implements the error interface. +func (e *NotSingularError) Error() string { + return "ent: " + e.label + " not singular" +} + +// IsNotSingular returns a boolean indicating whether the error is a not singular error. +func IsNotSingular(err error) bool { + if err == nil { + return false + } + var e *NotSingularError + return errors.As(err, &e) +} + +// NotLoadedError returns when trying to get a node that was not loaded by the query. +type NotLoadedError struct { + edge string +} + +// Error implements the error interface. +func (e *NotLoadedError) Error() string { + return "ent: " + e.edge + " edge was not loaded" +} + +// IsNotLoaded returns a boolean indicating whether the error is a not loaded error. +func IsNotLoaded(err error) bool { + if err == nil { + return false + } + var e *NotLoadedError + return errors.As(err, &e) +} + +// ConstraintError returns when trying to create/update one or more entities and +// one or more of their constraints failed. For example, violation of edge or +// field uniqueness. +type ConstraintError struct { + msg string + wrap error +} + +// Error implements the error interface. +func (e ConstraintError) Error() string { + return "ent: constraint failed: " + e.msg +} + +// Unwrap implements the errors.Wrapper interface. +func (e *ConstraintError) Unwrap() error { + return e.wrap +} + +// IsConstraintError returns a boolean indicating whether the error is a constraint failure. +func IsConstraintError(err error) bool { + if err == nil { + return false + } + var e *ConstraintError + return errors.As(err, &e) +} + +// selector embedded by the different Select/GroupBy builders. +type selector struct { + label string + flds *[]string + fns []AggregateFunc + scan func(context.Context, any) error +} + +// ScanX is like Scan, but panics if an error occurs. +func (s *selector) ScanX(ctx context.Context, v any) { + if err := s.scan(ctx, v); err != nil { + panic(err) + } +} + +// Strings returns list of strings from a selector. It is only allowed when selecting one field. +func (s *selector) Strings(ctx context.Context) ([]string, error) { + if len(*s.flds) > 1 { + return nil, errors.New("ent: Strings is not achievable when selecting more than 1 field") + } + var v []string + if err := s.scan(ctx, &v); err != nil { + return nil, err + } + return v, nil +} + +// StringsX is like Strings, but panics if an error occurs. +func (s *selector) StringsX(ctx context.Context) []string { + v, err := s.Strings(ctx) + if err != nil { + panic(err) + } + return v +} + +// String returns a single string from a selector. It is only allowed when selecting one field. +func (s *selector) String(ctx context.Context) (_ string, err error) { + var v []string + if v, err = s.Strings(ctx); err != nil { + return + } + switch len(v) { + case 1: + return v[0], nil + case 0: + err = &NotFoundError{s.label} + default: + err = fmt.Errorf("ent: Strings returned %d results when one was expected", len(v)) + } + return +} + +// StringX is like String, but panics if an error occurs. +func (s *selector) StringX(ctx context.Context) string { + v, err := s.String(ctx) + if err != nil { + panic(err) + } + return v +} + +// Ints returns list of ints from a selector. It is only allowed when selecting one field. +func (s *selector) Ints(ctx context.Context) ([]int, error) { + if len(*s.flds) > 1 { + return nil, errors.New("ent: Ints is not achievable when selecting more than 1 field") + } + var v []int + if err := s.scan(ctx, &v); err != nil { + return nil, err + } + return v, nil +} + +// IntsX is like Ints, but panics if an error occurs. +func (s *selector) IntsX(ctx context.Context) []int { + v, err := s.Ints(ctx) + if err != nil { + panic(err) + } + return v +} + +// Int returns a single int from a selector. It is only allowed when selecting one field. +func (s *selector) Int(ctx context.Context) (_ int, err error) { + var v []int + if v, err = s.Ints(ctx); err != nil { + return + } + switch len(v) { + case 1: + return v[0], nil + case 0: + err = &NotFoundError{s.label} + default: + err = fmt.Errorf("ent: Ints returned %d results when one was expected", len(v)) + } + return +} + +// IntX is like Int, but panics if an error occurs. +func (s *selector) IntX(ctx context.Context) int { + v, err := s.Int(ctx) + if err != nil { + panic(err) + } + return v +} + +// Float64s returns list of float64s from a selector. It is only allowed when selecting one field. +func (s *selector) Float64s(ctx context.Context) ([]float64, error) { + if len(*s.flds) > 1 { + return nil, errors.New("ent: Float64s is not achievable when selecting more than 1 field") + } + var v []float64 + if err := s.scan(ctx, &v); err != nil { + return nil, err + } + return v, nil +} + +// Float64sX is like Float64s, but panics if an error occurs. +func (s *selector) Float64sX(ctx context.Context) []float64 { + v, err := s.Float64s(ctx) + if err != nil { + panic(err) + } + return v +} + +// Float64 returns a single float64 from a selector. It is only allowed when selecting one field. +func (s *selector) Float64(ctx context.Context) (_ float64, err error) { + var v []float64 + if v, err = s.Float64s(ctx); err != nil { + return + } + switch len(v) { + case 1: + return v[0], nil + case 0: + err = &NotFoundError{s.label} + default: + err = fmt.Errorf("ent: Float64s returned %d results when one was expected", len(v)) + } + return +} + +// Float64X is like Float64, but panics if an error occurs. +func (s *selector) Float64X(ctx context.Context) float64 { + v, err := s.Float64(ctx) + if err != nil { + panic(err) + } + return v +} + +// Bools returns list of bools from a selector. It is only allowed when selecting one field. +func (s *selector) Bools(ctx context.Context) ([]bool, error) { + if len(*s.flds) > 1 { + return nil, errors.New("ent: Bools is not achievable when selecting more than 1 field") + } + var v []bool + if err := s.scan(ctx, &v); err != nil { + return nil, err + } + return v, nil +} + +// BoolsX is like Bools, but panics if an error occurs. +func (s *selector) BoolsX(ctx context.Context) []bool { + v, err := s.Bools(ctx) + if err != nil { + panic(err) + } + return v +} + +// Bool returns a single bool from a selector. It is only allowed when selecting one field. +func (s *selector) Bool(ctx context.Context) (_ bool, err error) { + var v []bool + if v, err = s.Bools(ctx); err != nil { + return + } + switch len(v) { + case 1: + return v[0], nil + case 0: + err = &NotFoundError{s.label} + default: + err = fmt.Errorf("ent: Bools returned %d results when one was expected", len(v)) + } + return +} + +// BoolX is like Bool, but panics if an error occurs. +func (s *selector) BoolX(ctx context.Context) bool { + v, err := s.Bool(ctx) + if err != nil { + panic(err) + } + return v +} + +// withHooks invokes the builder operation with the given hooks, if any. +func withHooks[V Value, M any, PM interface { + *M + Mutation +}](ctx context.Context, exec func(context.Context) (V, error), mutation PM, hooks []Hook) (value V, err error) { + if len(hooks) == 0 { + return exec(ctx) + } + var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { + mutationT, ok := any(m).(PM) + if !ok { + return nil, fmt.Errorf("unexpected mutation type %T", m) + } + // Set the mutation to the builder. + *mutation = *mutationT + return exec(ctx) + }) + for i := len(hooks) - 1; i >= 0; i-- { + if hooks[i] == nil { + return value, fmt.Errorf("ent: uninitialized hook (forgotten import ent/runtime?)") + } + mut = hooks[i](mut) + } + v, err := mut.Mutate(ctx, mutation) + if err != nil { + return value, err + } + nv, ok := v.(V) + if !ok { + return value, fmt.Errorf("unexpected node type %T returned from %T", v, mutation) + } + return nv, nil +} + +// setContextOp returns a new context with the given QueryContext attached (including its op) in case it does not exist. +func setContextOp(ctx context.Context, qc *QueryContext, op string) context.Context { + if ent.QueryFromContext(ctx) == nil { + qc.Op = op + ctx = ent.NewQueryContext(ctx, qc) + } + return ctx +} + +func querierAll[V Value, Q interface { + sqlAll(context.Context, ...queryHook) (V, error) +}]() Querier { + return QuerierFunc(func(ctx context.Context, q Query) (Value, error) { + query, ok := q.(Q) + if !ok { + return nil, fmt.Errorf("unexpected query type %T", q) + } + return query.sqlAll(ctx) + }) +} + +func querierCount[Q interface { + sqlCount(context.Context) (int, error) +}]() Querier { + return QuerierFunc(func(ctx context.Context, q Query) (Value, error) { + query, ok := q.(Q) + if !ok { + return nil, fmt.Errorf("unexpected query type %T", q) + } + return query.sqlCount(ctx) + }) +} + +func withInterceptors[V Value](ctx context.Context, q Query, qr Querier, inters []Interceptor) (v V, err error) { + for i := len(inters) - 1; i >= 0; i-- { + qr = inters[i].Intercept(qr) + } + rv, err := qr.Query(ctx, q) + if err != nil { + return v, err + } + vt, ok := rv.(V) + if !ok { + return v, fmt.Errorf("unexpected type %T returned from %T. expected type: %T", vt, q, v) + } + return vt, nil +} + +func scanWithInterceptors[Q1 ent.Query, Q2 interface { + sqlScan(context.Context, Q1, any) error +}](ctx context.Context, rootQuery Q1, selectOrGroup Q2, inters []Interceptor, v any) error { + rv := reflect.ValueOf(v) + var qr Querier = QuerierFunc(func(ctx context.Context, q Query) (Value, error) { + query, ok := q.(Q1) + if !ok { + return nil, fmt.Errorf("unexpected query type %T", q) + } + if err := selectOrGroup.sqlScan(ctx, query, v); err != nil { + return nil, err + } + if k := rv.Kind(); k == reflect.Pointer && rv.Elem().CanInterface() { + return rv.Elem().Interface(), nil + } + return v, nil + }) + for i := len(inters) - 1; i >= 0; i-- { + qr = inters[i].Intercept(qr) + } + vv, err := qr.Query(ctx, rootQuery) + if err != nil { + return err + } + switch rv2 := reflect.ValueOf(vv); { + case rv.IsNil(), rv2.IsNil(), rv.Kind() != reflect.Pointer: + case rv.Type() == rv2.Type(): + rv.Elem().Set(rv2.Elem()) + case rv.Elem().Type() == rv2.Type(): + rv.Elem().Set(rv2) + } + return nil +} + +// queryHook describes an internal hook for the different sqlAll methods. +type queryHook func(context.Context, *sqlgraph.QuerySpec) diff --git a/experiments/tibuild-v2/internal/database/ent/enttest/enttest.go b/experiments/tibuild-v2/internal/database/ent/enttest/enttest.go new file mode 100644 index 00000000..b3ec705c --- /dev/null +++ b/experiments/tibuild-v2/internal/database/ent/enttest/enttest.go @@ -0,0 +1,84 @@ +// Code generated by ent, DO NOT EDIT. + +package enttest + +import ( + "context" + + "github.com/PingCAP-QE/ee-apps/tibuild/internal/database/ent" + // required by schema hooks. + _ "github.com/PingCAP-QE/ee-apps/tibuild/internal/database/ent/runtime" + + "entgo.io/ent/dialect/sql/schema" + "github.com/PingCAP-QE/ee-apps/tibuild/internal/database/ent/migrate" +) + +type ( + // TestingT is the interface that is shared between + // testing.T and testing.B and used by enttest. + TestingT interface { + FailNow() + Error(...any) + } + + // Option configures client creation. + Option func(*options) + + options struct { + opts []ent.Option + migrateOpts []schema.MigrateOption + } +) + +// WithOptions forwards options to client creation. +func WithOptions(opts ...ent.Option) Option { + return func(o *options) { + o.opts = append(o.opts, opts...) + } +} + +// WithMigrateOptions forwards options to auto migration. +func WithMigrateOptions(opts ...schema.MigrateOption) Option { + return func(o *options) { + o.migrateOpts = append(o.migrateOpts, opts...) + } +} + +func newOptions(opts []Option) *options { + o := &options{} + for _, opt := range opts { + opt(o) + } + return o +} + +// Open calls ent.Open and auto-run migration. +func Open(t TestingT, driverName, dataSourceName string, opts ...Option) *ent.Client { + o := newOptions(opts) + c, err := ent.Open(driverName, dataSourceName, o.opts...) + if err != nil { + t.Error(err) + t.FailNow() + } + migrateSchema(t, c, o) + return c +} + +// NewClient calls ent.NewClient and auto-run migration. +func NewClient(t TestingT, opts ...Option) *ent.Client { + o := newOptions(opts) + c := ent.NewClient(o.opts...) + migrateSchema(t, c, o) + return c +} +func migrateSchema(t TestingT, c *ent.Client, o *options) { + tables, err := schema.CopyTables(migrate.Tables) + if err != nil { + t.Error(err) + t.FailNow() + } + if err := migrate.Create(context.Background(), c.Schema, tables, o.migrateOpts...); err != nil { + t.Error(err) + t.FailNow() + } +} diff --git a/experiments/tibuild-v2/internal/database/ent/hook/hook.go b/experiments/tibuild-v2/internal/database/ent/hook/hook.go new file mode 100644 index 00000000..156b6e7d --- /dev/null +++ b/experiments/tibuild-v2/internal/database/ent/hook/hook.go @@ -0,0 +1,199 @@ +// Code generated by ent, DO NOT EDIT. + +package hook + +import ( + "context" + "fmt" + + "github.com/PingCAP-QE/ee-apps/tibuild/internal/database/ent" +) + +// The DevBuildFunc type is an adapter to allow the use of ordinary +// function as DevBuild mutator. +type DevBuildFunc func(context.Context, *ent.DevBuildMutation) (ent.Value, error) + +// Mutate calls f(ctx, m). +func (f DevBuildFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) { + if mv, ok := m.(*ent.DevBuildMutation); ok { + return f(ctx, mv) + } + return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.DevBuildMutation", m) +} + +// Condition is a hook condition function. +type Condition func(context.Context, ent.Mutation) bool + +// And groups conditions with the AND operator. +func And(first, second Condition, rest ...Condition) Condition { + return func(ctx context.Context, m ent.Mutation) bool { + if !first(ctx, m) || !second(ctx, m) { + return false + } + for _, cond := range rest { + if !cond(ctx, m) { + return false + } + } + return true + } +} + +// Or groups conditions with the OR operator. +func Or(first, second Condition, rest ...Condition) Condition { + return func(ctx context.Context, m ent.Mutation) bool { + if first(ctx, m) || second(ctx, m) { + return true + } + for _, cond := range rest { + if cond(ctx, m) { + return true + } + } + return false + } +} + +// Not negates a given condition. +func Not(cond Condition) Condition { + return func(ctx context.Context, m ent.Mutation) bool { + return !cond(ctx, m) + } +} + +// HasOp is a condition testing mutation operation. +func HasOp(op ent.Op) Condition { + return func(_ context.Context, m ent.Mutation) bool { + return m.Op().Is(op) + } +} + +// HasAddedFields is a condition validating `.AddedField` on fields. +func HasAddedFields(field string, fields ...string) Condition { + return func(_ context.Context, m ent.Mutation) bool { + if _, exists := m.AddedField(field); !exists { + return false + } + for _, field := range fields { + if _, exists := m.AddedField(field); !exists { + return false + } + } + return true + } +} + +// HasClearedFields is a condition validating `.FieldCleared` on fields. +func HasClearedFields(field string, fields ...string) Condition { + return func(_ context.Context, m ent.Mutation) bool { + if exists := m.FieldCleared(field); !exists { + return false + } + for _, field := range fields { + if exists := m.FieldCleared(field); !exists { + return false + } + } + return true + } +} + +// HasFields is a condition validating `.Field` on fields. +func HasFields(field string, fields ...string) Condition { + return func(_ context.Context, m ent.Mutation) bool { + if _, exists := m.Field(field); !exists { + return false + } + for _, field := range fields { + if _, exists := m.Field(field); !exists { + return false + } + } + return true + } +} + +// If executes the given hook under condition. +// +// hook.If(ComputeAverage, And(HasFields(...), HasAddedFields(...))) +func If(hk ent.Hook, cond Condition) ent.Hook { + return func(next ent.Mutator) ent.Mutator { + return ent.MutateFunc(func(ctx context.Context, m ent.Mutation) (ent.Value, error) { + if cond(ctx, m) { + return hk(next).Mutate(ctx, m) + } + return next.Mutate(ctx, m) + }) + } +} + +// On executes the given hook only for the given operation. +// +// hook.On(Log, ent.Delete|ent.Create) +func On(hk ent.Hook, op ent.Op) ent.Hook { + return If(hk, HasOp(op)) +} + +// Unless skips the given hook only for the given operation. +// +// hook.Unless(Log, ent.Update|ent.UpdateOne) +func Unless(hk ent.Hook, op ent.Op) ent.Hook { + return If(hk, Not(HasOp(op))) +} + +// FixedError is a hook returning a fixed error. +func FixedError(err error) ent.Hook { + return func(ent.Mutator) ent.Mutator { + return ent.MutateFunc(func(context.Context, ent.Mutation) (ent.Value, error) { + return nil, err + }) + } +} + +// Reject returns a hook that rejects all operations that match op. +// +// func (T) Hooks() []ent.Hook { +// return []ent.Hook{ +// Reject(ent.Delete|ent.Update), +// } +// } +func Reject(op ent.Op) ent.Hook { + hk := FixedError(fmt.Errorf("%s operation is not allowed", op)) + return On(hk, op) +} + +// Chain acts as a list of hooks and is effectively immutable. +// Once created, it will always hold the same set of hooks in the same order. +type Chain struct { + hooks []ent.Hook +} + +// NewChain creates a new chain of hooks. +func NewChain(hooks ...ent.Hook) Chain { + return Chain{append([]ent.Hook(nil), hooks...)} +} + +// Hook chains the list of hooks and returns the final hook. +func (c Chain) Hook() ent.Hook { + return func(mutator ent.Mutator) ent.Mutator { + for i := len(c.hooks) - 1; i >= 0; i-- { + mutator = c.hooks[i](mutator) + } + return mutator + } +} + +// Append extends a chain, adding the specified hook +// as the last ones in the mutation flow. +func (c Chain) Append(hooks ...ent.Hook) Chain { + newHooks := make([]ent.Hook, 0, len(c.hooks)+len(hooks)) + newHooks = append(newHooks, c.hooks...) + newHooks = append(newHooks, hooks...) + return Chain{newHooks} +} + +// Extend extends a chain, adding the specified chain +// as the last ones in the mutation flow. +func (c Chain) Extend(chain Chain) Chain { + return c.Append(chain.hooks...) +} diff --git a/experiments/tibuild-v2/internal/database/ent/migrate/migrate.go b/experiments/tibuild-v2/internal/database/ent/migrate/migrate.go new file mode 100644 index 00000000..1956a6bf --- /dev/null +++ b/experiments/tibuild-v2/internal/database/ent/migrate/migrate.go @@ -0,0 +1,64 @@ +// Code generated by ent, DO NOT EDIT. + +package migrate + +import ( + "context" + "fmt" + "io" + + "entgo.io/ent/dialect" + "entgo.io/ent/dialect/sql/schema" +) + +var ( + // WithGlobalUniqueID sets the universal ids options to the migration. + // If this option is enabled, ent migration will allocate a 1<<32 range + // for the ids of each entity (table). + // Note that this option cannot be applied on tables that already exist. + WithGlobalUniqueID = schema.WithGlobalUniqueID + // WithDropColumn sets the drop column option to the migration. + // If this option is enabled, ent migration will drop old columns + // that were used for both fields and edges. This defaults to false. + WithDropColumn = schema.WithDropColumn + // WithDropIndex sets the drop index option to the migration. + // If this option is enabled, ent migration will drop old indexes + // that were defined in the schema. This defaults to false. + // Note that unique constraints are defined using `UNIQUE INDEX`, + // and therefore, it's recommended to enable this option to get more + // flexibility in the schema changes. + WithDropIndex = schema.WithDropIndex + // WithForeignKeys enables creating foreign-key in schema DDL. This defaults to true. + WithForeignKeys = schema.WithForeignKeys +) + +// Schema is the API for creating, migrating and dropping a schema. +type Schema struct { + drv dialect.Driver +} + +// NewSchema creates a new schema client. +func NewSchema(drv dialect.Driver) *Schema { return &Schema{drv: drv} } + +// Create creates all schema resources. +func (s *Schema) Create(ctx context.Context, opts ...schema.MigrateOption) error { + return Create(ctx, s, Tables, opts...) +} + +// Create creates all table resources using the given schema driver. +func Create(ctx context.Context, s *Schema, tables []*schema.Table, opts ...schema.MigrateOption) error { + migrate, err := schema.NewMigrate(s.drv, opts...) + if err != nil { + return fmt.Errorf("ent/migrate: %w", err) + } + return migrate.Create(ctx, tables...) +} + +// WriteTo writes the schema changes to w instead of running them against the database. +// +// if err := client.Schema.WriteTo(context.Background(), os.Stdout); err != nil { +// log.Fatal(err) +// } +func (s *Schema) WriteTo(ctx context.Context, w io.Writer, opts ...schema.MigrateOption) error { + return Create(ctx, &Schema{drv: &schema.WriteDriver{Writer: w, Driver: s.drv}}, Tables, opts...) +} diff --git a/experiments/tibuild-v2/internal/database/ent/migrate/schema.go b/experiments/tibuild-v2/internal/database/ent/migrate/schema.go new file mode 100644 index 00000000..72f2b0b9 --- /dev/null +++ b/experiments/tibuild-v2/internal/database/ent/migrate/schema.go @@ -0,0 +1,58 @@ +// Code generated by ent, DO NOT EDIT. + +package migrate + +import ( + "entgo.io/ent/dialect/entsql" + "entgo.io/ent/dialect/sql/schema" + "entgo.io/ent/schema/field" +) + +var ( + // DevBuildsColumns holds the columns for the "dev_builds" table. + DevBuildsColumns = []*schema.Column{ + {Name: "id", Type: field.TypeInt, Increment: true}, + {Name: "created_by", Type: field.TypeString, Nullable: true, Size: 64}, + {Name: "created_at", Type: field.TypeTime}, + {Name: "updated_at", Type: field.TypeTime}, + {Name: "product", Type: field.TypeString, Nullable: true, Size: 32}, + {Name: "edition", Type: field.TypeString, Nullable: true, Size: 32}, + {Name: "version", Type: field.TypeString, Nullable: true, Size: 128}, + {Name: "github_repo", Type: field.TypeString, Nullable: true, Size: 64}, + {Name: "git_ref", Type: field.TypeString, Nullable: true, Size: 64}, + {Name: "git_hash", Type: field.TypeString, Nullable: true, Size: 40}, + {Name: "plugin_git_ref", Type: field.TypeString, Nullable: true, Size: 64}, + {Name: "is_hotfix", Type: field.TypeBool, Default: false}, + {Name: "is_push_gcr", Type: field.TypeBool, Nullable: true}, + {Name: "target_img", Type: field.TypeString, Nullable: true, Size: 128}, + {Name: "pipeline_engine", Type: field.TypeString, Nullable: true, Size: 16, Default: "jenkins"}, + {Name: "builder_img", Type: field.TypeString, Nullable: true, Size: 128}, + {Name: "build_env", Type: field.TypeString, Nullable: true, Size: 128}, + {Name: "features", Type: field.TypeString, Nullable: true, Size: 128}, + {Name: "product_base_img", Type: field.TypeString, Nullable: true, Size: 128}, + {Name: "product_dockerfile", Type: field.TypeString, Nullable: true, Size: 128}, + {Name: "status", Type: field.TypeString, Nullable: true, Size: 16, Default: "pending"}, + {Name: "err_msg", Type: field.TypeString, Nullable: true, Size: 256}, + {Name: "pipeline_build_id", Type: field.TypeInt64, Nullable: true}, + {Name: "pipeline_start_at", Type: field.TypeTime, Nullable: true}, + {Name: "pipeline_end_at", Type: field.TypeTime, Nullable: true}, + {Name: "build_report", Type: field.TypeJSON, Nullable: true}, + {Name: "tekton_status", Type: field.TypeJSON, Nullable: true}, + } + // DevBuildsTable holds the schema information for the "dev_builds" table. + DevBuildsTable = &schema.Table{ + Name: "dev_builds", + Columns: DevBuildsColumns, + PrimaryKey: []*schema.Column{DevBuildsColumns[0]}, + } + // Tables holds all the tables in the schema. + Tables = []*schema.Table{ + DevBuildsTable, + } +) + +func init() { + DevBuildsTable.Annotation = &entsql.Annotation{ + Table: "dev_builds", + } +} diff --git a/experiments/tibuild-v2/internal/database/ent/mutation.go b/experiments/tibuild-v2/internal/database/ent/mutation.go new file mode 100644 index 00000000..463a6ecf --- /dev/null +++ b/experiments/tibuild-v2/internal/database/ent/mutation.go @@ -0,0 +1,2181 @@ +// Code generated by ent, DO NOT EDIT. + +package ent + +import ( + "context" + "errors" + "fmt" + "sync" + "time" + + "entgo.io/ent" + "entgo.io/ent/dialect/sql" + "github.com/PingCAP-QE/ee-apps/tibuild/internal/database/ent/devbuild" + "github.com/PingCAP-QE/ee-apps/tibuild/internal/database/ent/predicate" +) + +const ( + // Operation types. + OpCreate = ent.OpCreate + OpDelete = ent.OpDelete + OpDeleteOne = ent.OpDeleteOne + OpUpdate = ent.OpUpdate + OpUpdateOne = ent.OpUpdateOne + + // Node types. + TypeDevBuild = "DevBuild" +) + +// DevBuildMutation represents an operation that mutates the DevBuild nodes in the graph. +type DevBuildMutation struct { + config + op Op + typ string + id *int + created_by *string + created_at *time.Time + updated_at *time.Time + product *string + edition *string + version *string + github_repo *string + git_ref *string + git_hash *string + plugin_git_ref *string + is_hotfix *bool + is_push_gcr *bool + target_img *string + pipeline_engine *string + builder_img *string + build_env *string + features *string + product_base_img *string + product_dockerfile *string + status *string + err_msg *string + pipeline_build_id *int64 + addpipeline_build_id *int64 + pipeline_start_at *time.Time + pipeline_end_at *time.Time + build_report *map[string]interface{} + tekton_status *map[string]interface{} + clearedFields map[string]struct{} + done bool + oldValue func(context.Context) (*DevBuild, error) + predicates []predicate.DevBuild +} + +var _ ent.Mutation = (*DevBuildMutation)(nil) + +// devbuildOption allows management of the mutation configuration using functional options. +type devbuildOption func(*DevBuildMutation) + +// newDevBuildMutation creates new mutation for the DevBuild entity. +func newDevBuildMutation(c config, op Op, opts ...devbuildOption) *DevBuildMutation { + m := &DevBuildMutation{ + config: c, + op: op, + typ: TypeDevBuild, + clearedFields: make(map[string]struct{}), + } + for _, opt := range opts { + opt(m) + } + return m +} + +// withDevBuildID sets the ID field of the mutation. +func withDevBuildID(id int) devbuildOption { + return func(m *DevBuildMutation) { + var ( + err error + once sync.Once + value *DevBuild + ) + m.oldValue = func(ctx context.Context) (*DevBuild, error) { + once.Do(func() { + if m.done { + err = errors.New("querying old values post mutation is not allowed") + } else { + value, err = m.Client().DevBuild.Get(ctx, id) + } + }) + return value, err + } + m.id = &id + } +} + +// withDevBuild sets the old DevBuild of the mutation. +func withDevBuild(node *DevBuild) devbuildOption { + return func(m *DevBuildMutation) { + m.oldValue = func(context.Context) (*DevBuild, error) { + return node, nil + } + m.id = &node.ID + } +} + +// Client returns a new `ent.Client` from the mutation. If the mutation was +// executed in a transaction (ent.Tx), a transactional client is returned. +func (m DevBuildMutation) Client() *Client { + client := &Client{config: m.config} + client.init() + return client +} + +// Tx returns an `ent.Tx` for mutations that were executed in transactions; +// it returns an error otherwise. +func (m DevBuildMutation) Tx() (*Tx, error) { + if _, ok := m.driver.(*txDriver); !ok { + return nil, errors.New("ent: mutation is not running in a transaction") + } + tx := &Tx{config: m.config} + tx.init() + return tx, nil +} + +// ID returns the ID value in the mutation. Note that the ID is only available +// if it was provided to the builder or after it was returned from the database. +func (m *DevBuildMutation) ID() (id int, exists bool) { + if m.id == nil { + return + } + return *m.id, true +} + +// IDs queries the database and returns the entity ids that match the mutation's predicate. +// That means, if the mutation is applied within a transaction with an isolation level such +// as sql.LevelSerializable, the returned ids match the ids of the rows that will be updated +// or updated by the mutation. +func (m *DevBuildMutation) IDs(ctx context.Context) ([]int, error) { + switch { + case m.op.Is(OpUpdateOne | OpDeleteOne): + id, exists := m.ID() + if exists { + return []int{id}, nil + } + fallthrough + case m.op.Is(OpUpdate | OpDelete): + return m.Client().DevBuild.Query().Where(m.predicates...).IDs(ctx) + default: + return nil, fmt.Errorf("IDs is not allowed on %s operations", m.op) + } +} + +// SetCreatedBy sets the "created_by" field. +func (m *DevBuildMutation) SetCreatedBy(s string) { + m.created_by = &s +} + +// CreatedBy returns the value of the "created_by" field in the mutation. +func (m *DevBuildMutation) CreatedBy() (r string, exists bool) { + v := m.created_by + if v == nil { + return + } + return *v, true +} + +// OldCreatedBy returns the old "created_by" field's value of the DevBuild entity. +// If the DevBuild object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *DevBuildMutation) OldCreatedBy(ctx context.Context) (v string, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldCreatedBy is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldCreatedBy requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldCreatedBy: %w", err) + } + return oldValue.CreatedBy, nil +} + +// ClearCreatedBy clears the value of the "created_by" field. +func (m *DevBuildMutation) ClearCreatedBy() { + m.created_by = nil + m.clearedFields[devbuild.FieldCreatedBy] = struct{}{} +} + +// CreatedByCleared returns if the "created_by" field was cleared in this mutation. +func (m *DevBuildMutation) CreatedByCleared() bool { + _, ok := m.clearedFields[devbuild.FieldCreatedBy] + return ok +} + +// ResetCreatedBy resets all changes to the "created_by" field. +func (m *DevBuildMutation) ResetCreatedBy() { + m.created_by = nil + delete(m.clearedFields, devbuild.FieldCreatedBy) +} + +// SetCreatedAt sets the "created_at" field. +func (m *DevBuildMutation) SetCreatedAt(t time.Time) { + m.created_at = &t +} + +// CreatedAt returns the value of the "created_at" field in the mutation. +func (m *DevBuildMutation) CreatedAt() (r time.Time, exists bool) { + v := m.created_at + if v == nil { + return + } + return *v, true +} + +// OldCreatedAt returns the old "created_at" field's value of the DevBuild entity. +// If the DevBuild object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *DevBuildMutation) OldCreatedAt(ctx context.Context) (v time.Time, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldCreatedAt is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldCreatedAt requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldCreatedAt: %w", err) + } + return oldValue.CreatedAt, nil +} + +// ResetCreatedAt resets all changes to the "created_at" field. +func (m *DevBuildMutation) ResetCreatedAt() { + m.created_at = nil +} + +// SetUpdatedAt sets the "updated_at" field. +func (m *DevBuildMutation) SetUpdatedAt(t time.Time) { + m.updated_at = &t +} + +// UpdatedAt returns the value of the "updated_at" field in the mutation. +func (m *DevBuildMutation) UpdatedAt() (r time.Time, exists bool) { + v := m.updated_at + if v == nil { + return + } + return *v, true +} + +// OldUpdatedAt returns the old "updated_at" field's value of the DevBuild entity. +// If the DevBuild object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *DevBuildMutation) OldUpdatedAt(ctx context.Context) (v time.Time, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldUpdatedAt is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldUpdatedAt requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldUpdatedAt: %w", err) + } + return oldValue.UpdatedAt, nil +} + +// ResetUpdatedAt resets all changes to the "updated_at" field. +func (m *DevBuildMutation) ResetUpdatedAt() { + m.updated_at = nil +} + +// SetProduct sets the "product" field. +func (m *DevBuildMutation) SetProduct(s string) { + m.product = &s +} + +// Product returns the value of the "product" field in the mutation. +func (m *DevBuildMutation) Product() (r string, exists bool) { + v := m.product + if v == nil { + return + } + return *v, true +} + +// OldProduct returns the old "product" field's value of the DevBuild entity. +// If the DevBuild object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *DevBuildMutation) OldProduct(ctx context.Context) (v string, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldProduct is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldProduct requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldProduct: %w", err) + } + return oldValue.Product, nil +} + +// ClearProduct clears the value of the "product" field. +func (m *DevBuildMutation) ClearProduct() { + m.product = nil + m.clearedFields[devbuild.FieldProduct] = struct{}{} +} + +// ProductCleared returns if the "product" field was cleared in this mutation. +func (m *DevBuildMutation) ProductCleared() bool { + _, ok := m.clearedFields[devbuild.FieldProduct] + return ok +} + +// ResetProduct resets all changes to the "product" field. +func (m *DevBuildMutation) ResetProduct() { + m.product = nil + delete(m.clearedFields, devbuild.FieldProduct) +} + +// SetEdition sets the "edition" field. +func (m *DevBuildMutation) SetEdition(s string) { + m.edition = &s +} + +// Edition returns the value of the "edition" field in the mutation. +func (m *DevBuildMutation) Edition() (r string, exists bool) { + v := m.edition + if v == nil { + return + } + return *v, true +} + +// OldEdition returns the old "edition" field's value of the DevBuild entity. +// If the DevBuild object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *DevBuildMutation) OldEdition(ctx context.Context) (v string, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldEdition is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldEdition requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldEdition: %w", err) + } + return oldValue.Edition, nil +} + +// ClearEdition clears the value of the "edition" field. +func (m *DevBuildMutation) ClearEdition() { + m.edition = nil + m.clearedFields[devbuild.FieldEdition] = struct{}{} +} + +// EditionCleared returns if the "edition" field was cleared in this mutation. +func (m *DevBuildMutation) EditionCleared() bool { + _, ok := m.clearedFields[devbuild.FieldEdition] + return ok +} + +// ResetEdition resets all changes to the "edition" field. +func (m *DevBuildMutation) ResetEdition() { + m.edition = nil + delete(m.clearedFields, devbuild.FieldEdition) +} + +// SetVersion sets the "version" field. +func (m *DevBuildMutation) SetVersion(s string) { + m.version = &s +} + +// Version returns the value of the "version" field in the mutation. +func (m *DevBuildMutation) Version() (r string, exists bool) { + v := m.version + if v == nil { + return + } + return *v, true +} + +// OldVersion returns the old "version" field's value of the DevBuild entity. +// If the DevBuild object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *DevBuildMutation) OldVersion(ctx context.Context) (v string, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldVersion is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldVersion requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldVersion: %w", err) + } + return oldValue.Version, nil +} + +// ClearVersion clears the value of the "version" field. +func (m *DevBuildMutation) ClearVersion() { + m.version = nil + m.clearedFields[devbuild.FieldVersion] = struct{}{} +} + +// VersionCleared returns if the "version" field was cleared in this mutation. +func (m *DevBuildMutation) VersionCleared() bool { + _, ok := m.clearedFields[devbuild.FieldVersion] + return ok +} + +// ResetVersion resets all changes to the "version" field. +func (m *DevBuildMutation) ResetVersion() { + m.version = nil + delete(m.clearedFields, devbuild.FieldVersion) +} + +// SetGithubRepo sets the "github_repo" field. +func (m *DevBuildMutation) SetGithubRepo(s string) { + m.github_repo = &s +} + +// GithubRepo returns the value of the "github_repo" field in the mutation. +func (m *DevBuildMutation) GithubRepo() (r string, exists bool) { + v := m.github_repo + if v == nil { + return + } + return *v, true +} + +// OldGithubRepo returns the old "github_repo" field's value of the DevBuild entity. +// If the DevBuild object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *DevBuildMutation) OldGithubRepo(ctx context.Context) (v string, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldGithubRepo is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldGithubRepo requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldGithubRepo: %w", err) + } + return oldValue.GithubRepo, nil +} + +// ClearGithubRepo clears the value of the "github_repo" field. +func (m *DevBuildMutation) ClearGithubRepo() { + m.github_repo = nil + m.clearedFields[devbuild.FieldGithubRepo] = struct{}{} +} + +// GithubRepoCleared returns if the "github_repo" field was cleared in this mutation. +func (m *DevBuildMutation) GithubRepoCleared() bool { + _, ok := m.clearedFields[devbuild.FieldGithubRepo] + return ok +} + +// ResetGithubRepo resets all changes to the "github_repo" field. +func (m *DevBuildMutation) ResetGithubRepo() { + m.github_repo = nil + delete(m.clearedFields, devbuild.FieldGithubRepo) +} + +// SetGitRef sets the "git_ref" field. +func (m *DevBuildMutation) SetGitRef(s string) { + m.git_ref = &s +} + +// GitRef returns the value of the "git_ref" field in the mutation. +func (m *DevBuildMutation) GitRef() (r string, exists bool) { + v := m.git_ref + if v == nil { + return + } + return *v, true +} + +// OldGitRef returns the old "git_ref" field's value of the DevBuild entity. +// If the DevBuild object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *DevBuildMutation) OldGitRef(ctx context.Context) (v string, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldGitRef is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldGitRef requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldGitRef: %w", err) + } + return oldValue.GitRef, nil +} + +// ClearGitRef clears the value of the "git_ref" field. +func (m *DevBuildMutation) ClearGitRef() { + m.git_ref = nil + m.clearedFields[devbuild.FieldGitRef] = struct{}{} +} + +// GitRefCleared returns if the "git_ref" field was cleared in this mutation. +func (m *DevBuildMutation) GitRefCleared() bool { + _, ok := m.clearedFields[devbuild.FieldGitRef] + return ok +} + +// ResetGitRef resets all changes to the "git_ref" field. +func (m *DevBuildMutation) ResetGitRef() { + m.git_ref = nil + delete(m.clearedFields, devbuild.FieldGitRef) +} + +// SetGitHash sets the "git_hash" field. +func (m *DevBuildMutation) SetGitHash(s string) { + m.git_hash = &s +} + +// GitHash returns the value of the "git_hash" field in the mutation. +func (m *DevBuildMutation) GitHash() (r string, exists bool) { + v := m.git_hash + if v == nil { + return + } + return *v, true +} + +// OldGitHash returns the old "git_hash" field's value of the DevBuild entity. +// If the DevBuild object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *DevBuildMutation) OldGitHash(ctx context.Context) (v string, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldGitHash is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldGitHash requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldGitHash: %w", err) + } + return oldValue.GitHash, nil +} + +// ClearGitHash clears the value of the "git_hash" field. +func (m *DevBuildMutation) ClearGitHash() { + m.git_hash = nil + m.clearedFields[devbuild.FieldGitHash] = struct{}{} +} + +// GitHashCleared returns if the "git_hash" field was cleared in this mutation. +func (m *DevBuildMutation) GitHashCleared() bool { + _, ok := m.clearedFields[devbuild.FieldGitHash] + return ok +} + +// ResetGitHash resets all changes to the "git_hash" field. +func (m *DevBuildMutation) ResetGitHash() { + m.git_hash = nil + delete(m.clearedFields, devbuild.FieldGitHash) +} + +// SetPluginGitRef sets the "plugin_git_ref" field. +func (m *DevBuildMutation) SetPluginGitRef(s string) { + m.plugin_git_ref = &s +} + +// PluginGitRef returns the value of the "plugin_git_ref" field in the mutation. +func (m *DevBuildMutation) PluginGitRef() (r string, exists bool) { + v := m.plugin_git_ref + if v == nil { + return + } + return *v, true +} + +// OldPluginGitRef returns the old "plugin_git_ref" field's value of the DevBuild entity. +// If the DevBuild object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *DevBuildMutation) OldPluginGitRef(ctx context.Context) (v string, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldPluginGitRef is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldPluginGitRef requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldPluginGitRef: %w", err) + } + return oldValue.PluginGitRef, nil +} + +// ClearPluginGitRef clears the value of the "plugin_git_ref" field. +func (m *DevBuildMutation) ClearPluginGitRef() { + m.plugin_git_ref = nil + m.clearedFields[devbuild.FieldPluginGitRef] = struct{}{} +} + +// PluginGitRefCleared returns if the "plugin_git_ref" field was cleared in this mutation. +func (m *DevBuildMutation) PluginGitRefCleared() bool { + _, ok := m.clearedFields[devbuild.FieldPluginGitRef] + return ok +} + +// ResetPluginGitRef resets all changes to the "plugin_git_ref" field. +func (m *DevBuildMutation) ResetPluginGitRef() { + m.plugin_git_ref = nil + delete(m.clearedFields, devbuild.FieldPluginGitRef) +} + +// SetIsHotfix sets the "is_hotfix" field. +func (m *DevBuildMutation) SetIsHotfix(b bool) { + m.is_hotfix = &b +} + +// IsHotfix returns the value of the "is_hotfix" field in the mutation. +func (m *DevBuildMutation) IsHotfix() (r bool, exists bool) { + v := m.is_hotfix + if v == nil { + return + } + return *v, true +} + +// OldIsHotfix returns the old "is_hotfix" field's value of the DevBuild entity. +// If the DevBuild object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *DevBuildMutation) OldIsHotfix(ctx context.Context) (v bool, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldIsHotfix is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldIsHotfix requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldIsHotfix: %w", err) + } + return oldValue.IsHotfix, nil +} + +// ResetIsHotfix resets all changes to the "is_hotfix" field. +func (m *DevBuildMutation) ResetIsHotfix() { + m.is_hotfix = nil +} + +// SetIsPushGcr sets the "is_push_gcr" field. +func (m *DevBuildMutation) SetIsPushGcr(b bool) { + m.is_push_gcr = &b +} + +// IsPushGcr returns the value of the "is_push_gcr" field in the mutation. +func (m *DevBuildMutation) IsPushGcr() (r bool, exists bool) { + v := m.is_push_gcr + if v == nil { + return + } + return *v, true +} + +// OldIsPushGcr returns the old "is_push_gcr" field's value of the DevBuild entity. +// If the DevBuild object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *DevBuildMutation) OldIsPushGcr(ctx context.Context) (v bool, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldIsPushGcr is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldIsPushGcr requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldIsPushGcr: %w", err) + } + return oldValue.IsPushGcr, nil +} + +// ClearIsPushGcr clears the value of the "is_push_gcr" field. +func (m *DevBuildMutation) ClearIsPushGcr() { + m.is_push_gcr = nil + m.clearedFields[devbuild.FieldIsPushGcr] = struct{}{} +} + +// IsPushGcrCleared returns if the "is_push_gcr" field was cleared in this mutation. +func (m *DevBuildMutation) IsPushGcrCleared() bool { + _, ok := m.clearedFields[devbuild.FieldIsPushGcr] + return ok +} + +// ResetIsPushGcr resets all changes to the "is_push_gcr" field. +func (m *DevBuildMutation) ResetIsPushGcr() { + m.is_push_gcr = nil + delete(m.clearedFields, devbuild.FieldIsPushGcr) +} + +// SetTargetImg sets the "target_img" field. +func (m *DevBuildMutation) SetTargetImg(s string) { + m.target_img = &s +} + +// TargetImg returns the value of the "target_img" field in the mutation. +func (m *DevBuildMutation) TargetImg() (r string, exists bool) { + v := m.target_img + if v == nil { + return + } + return *v, true +} + +// OldTargetImg returns the old "target_img" field's value of the DevBuild entity. +// If the DevBuild object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *DevBuildMutation) OldTargetImg(ctx context.Context) (v string, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldTargetImg is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldTargetImg requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldTargetImg: %w", err) + } + return oldValue.TargetImg, nil +} + +// ClearTargetImg clears the value of the "target_img" field. +func (m *DevBuildMutation) ClearTargetImg() { + m.target_img = nil + m.clearedFields[devbuild.FieldTargetImg] = struct{}{} +} + +// TargetImgCleared returns if the "target_img" field was cleared in this mutation. +func (m *DevBuildMutation) TargetImgCleared() bool { + _, ok := m.clearedFields[devbuild.FieldTargetImg] + return ok +} + +// ResetTargetImg resets all changes to the "target_img" field. +func (m *DevBuildMutation) ResetTargetImg() { + m.target_img = nil + delete(m.clearedFields, devbuild.FieldTargetImg) +} + +// SetPipelineEngine sets the "pipeline_engine" field. +func (m *DevBuildMutation) SetPipelineEngine(s string) { + m.pipeline_engine = &s +} + +// PipelineEngine returns the value of the "pipeline_engine" field in the mutation. +func (m *DevBuildMutation) PipelineEngine() (r string, exists bool) { + v := m.pipeline_engine + if v == nil { + return + } + return *v, true +} + +// OldPipelineEngine returns the old "pipeline_engine" field's value of the DevBuild entity. +// If the DevBuild object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *DevBuildMutation) OldPipelineEngine(ctx context.Context) (v string, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldPipelineEngine is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldPipelineEngine requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldPipelineEngine: %w", err) + } + return oldValue.PipelineEngine, nil +} + +// ClearPipelineEngine clears the value of the "pipeline_engine" field. +func (m *DevBuildMutation) ClearPipelineEngine() { + m.pipeline_engine = nil + m.clearedFields[devbuild.FieldPipelineEngine] = struct{}{} +} + +// PipelineEngineCleared returns if the "pipeline_engine" field was cleared in this mutation. +func (m *DevBuildMutation) PipelineEngineCleared() bool { + _, ok := m.clearedFields[devbuild.FieldPipelineEngine] + return ok +} + +// ResetPipelineEngine resets all changes to the "pipeline_engine" field. +func (m *DevBuildMutation) ResetPipelineEngine() { + m.pipeline_engine = nil + delete(m.clearedFields, devbuild.FieldPipelineEngine) +} + +// SetBuilderImg sets the "builder_img" field. +func (m *DevBuildMutation) SetBuilderImg(s string) { + m.builder_img = &s +} + +// BuilderImg returns the value of the "builder_img" field in the mutation. +func (m *DevBuildMutation) BuilderImg() (r string, exists bool) { + v := m.builder_img + if v == nil { + return + } + return *v, true +} + +// OldBuilderImg returns the old "builder_img" field's value of the DevBuild entity. +// If the DevBuild object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *DevBuildMutation) OldBuilderImg(ctx context.Context) (v string, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldBuilderImg is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldBuilderImg requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldBuilderImg: %w", err) + } + return oldValue.BuilderImg, nil +} + +// ClearBuilderImg clears the value of the "builder_img" field. +func (m *DevBuildMutation) ClearBuilderImg() { + m.builder_img = nil + m.clearedFields[devbuild.FieldBuilderImg] = struct{}{} +} + +// BuilderImgCleared returns if the "builder_img" field was cleared in this mutation. +func (m *DevBuildMutation) BuilderImgCleared() bool { + _, ok := m.clearedFields[devbuild.FieldBuilderImg] + return ok +} + +// ResetBuilderImg resets all changes to the "builder_img" field. +func (m *DevBuildMutation) ResetBuilderImg() { + m.builder_img = nil + delete(m.clearedFields, devbuild.FieldBuilderImg) +} + +// SetBuildEnv sets the "build_env" field. +func (m *DevBuildMutation) SetBuildEnv(s string) { + m.build_env = &s +} + +// BuildEnv returns the value of the "build_env" field in the mutation. +func (m *DevBuildMutation) BuildEnv() (r string, exists bool) { + v := m.build_env + if v == nil { + return + } + return *v, true +} + +// OldBuildEnv returns the old "build_env" field's value of the DevBuild entity. +// If the DevBuild object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *DevBuildMutation) OldBuildEnv(ctx context.Context) (v string, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldBuildEnv is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldBuildEnv requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldBuildEnv: %w", err) + } + return oldValue.BuildEnv, nil +} + +// ClearBuildEnv clears the value of the "build_env" field. +func (m *DevBuildMutation) ClearBuildEnv() { + m.build_env = nil + m.clearedFields[devbuild.FieldBuildEnv] = struct{}{} +} + +// BuildEnvCleared returns if the "build_env" field was cleared in this mutation. +func (m *DevBuildMutation) BuildEnvCleared() bool { + _, ok := m.clearedFields[devbuild.FieldBuildEnv] + return ok +} + +// ResetBuildEnv resets all changes to the "build_env" field. +func (m *DevBuildMutation) ResetBuildEnv() { + m.build_env = nil + delete(m.clearedFields, devbuild.FieldBuildEnv) +} + +// SetFeatures sets the "features" field. +func (m *DevBuildMutation) SetFeatures(s string) { + m.features = &s +} + +// Features returns the value of the "features" field in the mutation. +func (m *DevBuildMutation) Features() (r string, exists bool) { + v := m.features + if v == nil { + return + } + return *v, true +} + +// OldFeatures returns the old "features" field's value of the DevBuild entity. +// If the DevBuild object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *DevBuildMutation) OldFeatures(ctx context.Context) (v string, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldFeatures is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldFeatures requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldFeatures: %w", err) + } + return oldValue.Features, nil +} + +// ClearFeatures clears the value of the "features" field. +func (m *DevBuildMutation) ClearFeatures() { + m.features = nil + m.clearedFields[devbuild.FieldFeatures] = struct{}{} +} + +// FeaturesCleared returns if the "features" field was cleared in this mutation. +func (m *DevBuildMutation) FeaturesCleared() bool { + _, ok := m.clearedFields[devbuild.FieldFeatures] + return ok +} + +// ResetFeatures resets all changes to the "features" field. +func (m *DevBuildMutation) ResetFeatures() { + m.features = nil + delete(m.clearedFields, devbuild.FieldFeatures) +} + +// SetProductBaseImg sets the "product_base_img" field. +func (m *DevBuildMutation) SetProductBaseImg(s string) { + m.product_base_img = &s +} + +// ProductBaseImg returns the value of the "product_base_img" field in the mutation. +func (m *DevBuildMutation) ProductBaseImg() (r string, exists bool) { + v := m.product_base_img + if v == nil { + return + } + return *v, true +} + +// OldProductBaseImg returns the old "product_base_img" field's value of the DevBuild entity. +// If the DevBuild object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *DevBuildMutation) OldProductBaseImg(ctx context.Context) (v string, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldProductBaseImg is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldProductBaseImg requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldProductBaseImg: %w", err) + } + return oldValue.ProductBaseImg, nil +} + +// ClearProductBaseImg clears the value of the "product_base_img" field. +func (m *DevBuildMutation) ClearProductBaseImg() { + m.product_base_img = nil + m.clearedFields[devbuild.FieldProductBaseImg] = struct{}{} +} + +// ProductBaseImgCleared returns if the "product_base_img" field was cleared in this mutation. +func (m *DevBuildMutation) ProductBaseImgCleared() bool { + _, ok := m.clearedFields[devbuild.FieldProductBaseImg] + return ok +} + +// ResetProductBaseImg resets all changes to the "product_base_img" field. +func (m *DevBuildMutation) ResetProductBaseImg() { + m.product_base_img = nil + delete(m.clearedFields, devbuild.FieldProductBaseImg) +} + +// SetProductDockerfile sets the "product_dockerfile" field. +func (m *DevBuildMutation) SetProductDockerfile(s string) { + m.product_dockerfile = &s +} + +// ProductDockerfile returns the value of the "product_dockerfile" field in the mutation. +func (m *DevBuildMutation) ProductDockerfile() (r string, exists bool) { + v := m.product_dockerfile + if v == nil { + return + } + return *v, true +} + +// OldProductDockerfile returns the old "product_dockerfile" field's value of the DevBuild entity. +// If the DevBuild object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *DevBuildMutation) OldProductDockerfile(ctx context.Context) (v string, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldProductDockerfile is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldProductDockerfile requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldProductDockerfile: %w", err) + } + return oldValue.ProductDockerfile, nil +} + +// ClearProductDockerfile clears the value of the "product_dockerfile" field. +func (m *DevBuildMutation) ClearProductDockerfile() { + m.product_dockerfile = nil + m.clearedFields[devbuild.FieldProductDockerfile] = struct{}{} +} + +// ProductDockerfileCleared returns if the "product_dockerfile" field was cleared in this mutation. +func (m *DevBuildMutation) ProductDockerfileCleared() bool { + _, ok := m.clearedFields[devbuild.FieldProductDockerfile] + return ok +} + +// ResetProductDockerfile resets all changes to the "product_dockerfile" field. +func (m *DevBuildMutation) ResetProductDockerfile() { + m.product_dockerfile = nil + delete(m.clearedFields, devbuild.FieldProductDockerfile) +} + +// SetStatus sets the "status" field. +func (m *DevBuildMutation) SetStatus(s string) { + m.status = &s +} + +// Status returns the value of the "status" field in the mutation. +func (m *DevBuildMutation) Status() (r string, exists bool) { + v := m.status + if v == nil { + return + } + return *v, true +} + +// OldStatus returns the old "status" field's value of the DevBuild entity. +// If the DevBuild object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *DevBuildMutation) OldStatus(ctx context.Context) (v string, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldStatus is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldStatus requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldStatus: %w", err) + } + return oldValue.Status, nil +} + +// ClearStatus clears the value of the "status" field. +func (m *DevBuildMutation) ClearStatus() { + m.status = nil + m.clearedFields[devbuild.FieldStatus] = struct{}{} +} + +// StatusCleared returns if the "status" field was cleared in this mutation. +func (m *DevBuildMutation) StatusCleared() bool { + _, ok := m.clearedFields[devbuild.FieldStatus] + return ok +} + +// ResetStatus resets all changes to the "status" field. +func (m *DevBuildMutation) ResetStatus() { + m.status = nil + delete(m.clearedFields, devbuild.FieldStatus) +} + +// SetErrMsg sets the "err_msg" field. +func (m *DevBuildMutation) SetErrMsg(s string) { + m.err_msg = &s +} + +// ErrMsg returns the value of the "err_msg" field in the mutation. +func (m *DevBuildMutation) ErrMsg() (r string, exists bool) { + v := m.err_msg + if v == nil { + return + } + return *v, true +} + +// OldErrMsg returns the old "err_msg" field's value of the DevBuild entity. +// If the DevBuild object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *DevBuildMutation) OldErrMsg(ctx context.Context) (v string, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldErrMsg is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldErrMsg requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldErrMsg: %w", err) + } + return oldValue.ErrMsg, nil +} + +// ClearErrMsg clears the value of the "err_msg" field. +func (m *DevBuildMutation) ClearErrMsg() { + m.err_msg = nil + m.clearedFields[devbuild.FieldErrMsg] = struct{}{} +} + +// ErrMsgCleared returns if the "err_msg" field was cleared in this mutation. +func (m *DevBuildMutation) ErrMsgCleared() bool { + _, ok := m.clearedFields[devbuild.FieldErrMsg] + return ok +} + +// ResetErrMsg resets all changes to the "err_msg" field. +func (m *DevBuildMutation) ResetErrMsg() { + m.err_msg = nil + delete(m.clearedFields, devbuild.FieldErrMsg) +} + +// SetPipelineBuildID sets the "pipeline_build_id" field. +func (m *DevBuildMutation) SetPipelineBuildID(i int64) { + m.pipeline_build_id = &i + m.addpipeline_build_id = nil +} + +// PipelineBuildID returns the value of the "pipeline_build_id" field in the mutation. +func (m *DevBuildMutation) PipelineBuildID() (r int64, exists bool) { + v := m.pipeline_build_id + if v == nil { + return + } + return *v, true +} + +// OldPipelineBuildID returns the old "pipeline_build_id" field's value of the DevBuild entity. +// If the DevBuild object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *DevBuildMutation) OldPipelineBuildID(ctx context.Context) (v int64, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldPipelineBuildID is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldPipelineBuildID requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldPipelineBuildID: %w", err) + } + return oldValue.PipelineBuildID, nil +} + +// AddPipelineBuildID adds i to the "pipeline_build_id" field. +func (m *DevBuildMutation) AddPipelineBuildID(i int64) { + if m.addpipeline_build_id != nil { + *m.addpipeline_build_id += i + } else { + m.addpipeline_build_id = &i + } +} + +// AddedPipelineBuildID returns the value that was added to the "pipeline_build_id" field in this mutation. +func (m *DevBuildMutation) AddedPipelineBuildID() (r int64, exists bool) { + v := m.addpipeline_build_id + if v == nil { + return + } + return *v, true +} + +// ClearPipelineBuildID clears the value of the "pipeline_build_id" field. +func (m *DevBuildMutation) ClearPipelineBuildID() { + m.pipeline_build_id = nil + m.addpipeline_build_id = nil + m.clearedFields[devbuild.FieldPipelineBuildID] = struct{}{} +} + +// PipelineBuildIDCleared returns if the "pipeline_build_id" field was cleared in this mutation. +func (m *DevBuildMutation) PipelineBuildIDCleared() bool { + _, ok := m.clearedFields[devbuild.FieldPipelineBuildID] + return ok +} + +// ResetPipelineBuildID resets all changes to the "pipeline_build_id" field. +func (m *DevBuildMutation) ResetPipelineBuildID() { + m.pipeline_build_id = nil + m.addpipeline_build_id = nil + delete(m.clearedFields, devbuild.FieldPipelineBuildID) +} + +// SetPipelineStartAt sets the "pipeline_start_at" field. +func (m *DevBuildMutation) SetPipelineStartAt(t time.Time) { + m.pipeline_start_at = &t +} + +// PipelineStartAt returns the value of the "pipeline_start_at" field in the mutation. +func (m *DevBuildMutation) PipelineStartAt() (r time.Time, exists bool) { + v := m.pipeline_start_at + if v == nil { + return + } + return *v, true +} + +// OldPipelineStartAt returns the old "pipeline_start_at" field's value of the DevBuild entity. +// If the DevBuild object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *DevBuildMutation) OldPipelineStartAt(ctx context.Context) (v time.Time, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldPipelineStartAt is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldPipelineStartAt requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldPipelineStartAt: %w", err) + } + return oldValue.PipelineStartAt, nil +} + +// ClearPipelineStartAt clears the value of the "pipeline_start_at" field. +func (m *DevBuildMutation) ClearPipelineStartAt() { + m.pipeline_start_at = nil + m.clearedFields[devbuild.FieldPipelineStartAt] = struct{}{} +} + +// PipelineStartAtCleared returns if the "pipeline_start_at" field was cleared in this mutation. +func (m *DevBuildMutation) PipelineStartAtCleared() bool { + _, ok := m.clearedFields[devbuild.FieldPipelineStartAt] + return ok +} + +// ResetPipelineStartAt resets all changes to the "pipeline_start_at" field. +func (m *DevBuildMutation) ResetPipelineStartAt() { + m.pipeline_start_at = nil + delete(m.clearedFields, devbuild.FieldPipelineStartAt) +} + +// SetPipelineEndAt sets the "pipeline_end_at" field. +func (m *DevBuildMutation) SetPipelineEndAt(t time.Time) { + m.pipeline_end_at = &t +} + +// PipelineEndAt returns the value of the "pipeline_end_at" field in the mutation. +func (m *DevBuildMutation) PipelineEndAt() (r time.Time, exists bool) { + v := m.pipeline_end_at + if v == nil { + return + } + return *v, true +} + +// OldPipelineEndAt returns the old "pipeline_end_at" field's value of the DevBuild entity. +// If the DevBuild object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *DevBuildMutation) OldPipelineEndAt(ctx context.Context) (v time.Time, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldPipelineEndAt is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldPipelineEndAt requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldPipelineEndAt: %w", err) + } + return oldValue.PipelineEndAt, nil +} + +// ClearPipelineEndAt clears the value of the "pipeline_end_at" field. +func (m *DevBuildMutation) ClearPipelineEndAt() { + m.pipeline_end_at = nil + m.clearedFields[devbuild.FieldPipelineEndAt] = struct{}{} +} + +// PipelineEndAtCleared returns if the "pipeline_end_at" field was cleared in this mutation. +func (m *DevBuildMutation) PipelineEndAtCleared() bool { + _, ok := m.clearedFields[devbuild.FieldPipelineEndAt] + return ok +} + +// ResetPipelineEndAt resets all changes to the "pipeline_end_at" field. +func (m *DevBuildMutation) ResetPipelineEndAt() { + m.pipeline_end_at = nil + delete(m.clearedFields, devbuild.FieldPipelineEndAt) +} + +// SetBuildReport sets the "build_report" field. +func (m *DevBuildMutation) SetBuildReport(value map[string]interface{}) { + m.build_report = &value +} + +// BuildReport returns the value of the "build_report" field in the mutation. +func (m *DevBuildMutation) BuildReport() (r map[string]interface{}, exists bool) { + v := m.build_report + if v == nil { + return + } + return *v, true +} + +// OldBuildReport returns the old "build_report" field's value of the DevBuild entity. +// If the DevBuild object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *DevBuildMutation) OldBuildReport(ctx context.Context) (v map[string]interface{}, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldBuildReport is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldBuildReport requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldBuildReport: %w", err) + } + return oldValue.BuildReport, nil +} + +// ClearBuildReport clears the value of the "build_report" field. +func (m *DevBuildMutation) ClearBuildReport() { + m.build_report = nil + m.clearedFields[devbuild.FieldBuildReport] = struct{}{} +} + +// BuildReportCleared returns if the "build_report" field was cleared in this mutation. +func (m *DevBuildMutation) BuildReportCleared() bool { + _, ok := m.clearedFields[devbuild.FieldBuildReport] + return ok +} + +// ResetBuildReport resets all changes to the "build_report" field. +func (m *DevBuildMutation) ResetBuildReport() { + m.build_report = nil + delete(m.clearedFields, devbuild.FieldBuildReport) +} + +// SetTektonStatus sets the "tekton_status" field. +func (m *DevBuildMutation) SetTektonStatus(value map[string]interface{}) { + m.tekton_status = &value +} + +// TektonStatus returns the value of the "tekton_status" field in the mutation. +func (m *DevBuildMutation) TektonStatus() (r map[string]interface{}, exists bool) { + v := m.tekton_status + if v == nil { + return + } + return *v, true +} + +// OldTektonStatus returns the old "tekton_status" field's value of the DevBuild entity. +// If the DevBuild object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *DevBuildMutation) OldTektonStatus(ctx context.Context) (v map[string]interface{}, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldTektonStatus is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldTektonStatus requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldTektonStatus: %w", err) + } + return oldValue.TektonStatus, nil +} + +// ClearTektonStatus clears the value of the "tekton_status" field. +func (m *DevBuildMutation) ClearTektonStatus() { + m.tekton_status = nil + m.clearedFields[devbuild.FieldTektonStatus] = struct{}{} +} + +// TektonStatusCleared returns if the "tekton_status" field was cleared in this mutation. +func (m *DevBuildMutation) TektonStatusCleared() bool { + _, ok := m.clearedFields[devbuild.FieldTektonStatus] + return ok +} + +// ResetTektonStatus resets all changes to the "tekton_status" field. +func (m *DevBuildMutation) ResetTektonStatus() { + m.tekton_status = nil + delete(m.clearedFields, devbuild.FieldTektonStatus) +} + +// Where appends a list predicates to the DevBuildMutation builder. +func (m *DevBuildMutation) Where(ps ...predicate.DevBuild) { + m.predicates = append(m.predicates, ps...) +} + +// WhereP appends storage-level predicates to the DevBuildMutation builder. Using this method, +// users can use type-assertion to append predicates that do not depend on any generated package. +func (m *DevBuildMutation) WhereP(ps ...func(*sql.Selector)) { + p := make([]predicate.DevBuild, len(ps)) + for i := range ps { + p[i] = ps[i] + } + m.Where(p...) +} + +// Op returns the operation name. +func (m *DevBuildMutation) Op() Op { + return m.op +} + +// SetOp allows setting the mutation operation. +func (m *DevBuildMutation) SetOp(op Op) { + m.op = op +} + +// Type returns the node type of this mutation (DevBuild). +func (m *DevBuildMutation) Type() string { + return m.typ +} + +// Fields returns all fields that were changed during this mutation. Note that in +// order to get all numeric fields that were incremented/decremented, call +// AddedFields(). +func (m *DevBuildMutation) Fields() []string { + fields := make([]string, 0, 26) + if m.created_by != nil { + fields = append(fields, devbuild.FieldCreatedBy) + } + if m.created_at != nil { + fields = append(fields, devbuild.FieldCreatedAt) + } + if m.updated_at != nil { + fields = append(fields, devbuild.FieldUpdatedAt) + } + if m.product != nil { + fields = append(fields, devbuild.FieldProduct) + } + if m.edition != nil { + fields = append(fields, devbuild.FieldEdition) + } + if m.version != nil { + fields = append(fields, devbuild.FieldVersion) + } + if m.github_repo != nil { + fields = append(fields, devbuild.FieldGithubRepo) + } + if m.git_ref != nil { + fields = append(fields, devbuild.FieldGitRef) + } + if m.git_hash != nil { + fields = append(fields, devbuild.FieldGitHash) + } + if m.plugin_git_ref != nil { + fields = append(fields, devbuild.FieldPluginGitRef) + } + if m.is_hotfix != nil { + fields = append(fields, devbuild.FieldIsHotfix) + } + if m.is_push_gcr != nil { + fields = append(fields, devbuild.FieldIsPushGcr) + } + if m.target_img != nil { + fields = append(fields, devbuild.FieldTargetImg) + } + if m.pipeline_engine != nil { + fields = append(fields, devbuild.FieldPipelineEngine) + } + if m.builder_img != nil { + fields = append(fields, devbuild.FieldBuilderImg) + } + if m.build_env != nil { + fields = append(fields, devbuild.FieldBuildEnv) + } + if m.features != nil { + fields = append(fields, devbuild.FieldFeatures) + } + if m.product_base_img != nil { + fields = append(fields, devbuild.FieldProductBaseImg) + } + if m.product_dockerfile != nil { + fields = append(fields, devbuild.FieldProductDockerfile) + } + if m.status != nil { + fields = append(fields, devbuild.FieldStatus) + } + if m.err_msg != nil { + fields = append(fields, devbuild.FieldErrMsg) + } + if m.pipeline_build_id != nil { + fields = append(fields, devbuild.FieldPipelineBuildID) + } + if m.pipeline_start_at != nil { + fields = append(fields, devbuild.FieldPipelineStartAt) + } + if m.pipeline_end_at != nil { + fields = append(fields, devbuild.FieldPipelineEndAt) + } + if m.build_report != nil { + fields = append(fields, devbuild.FieldBuildReport) + } + if m.tekton_status != nil { + fields = append(fields, devbuild.FieldTektonStatus) + } + return fields +} + +// Field returns the value of a field with the given name. The second boolean +// return value indicates that this field was not set, or was not defined in the +// schema. +func (m *DevBuildMutation) Field(name string) (ent.Value, bool) { + switch name { + case devbuild.FieldCreatedBy: + return m.CreatedBy() + case devbuild.FieldCreatedAt: + return m.CreatedAt() + case devbuild.FieldUpdatedAt: + return m.UpdatedAt() + case devbuild.FieldProduct: + return m.Product() + case devbuild.FieldEdition: + return m.Edition() + case devbuild.FieldVersion: + return m.Version() + case devbuild.FieldGithubRepo: + return m.GithubRepo() + case devbuild.FieldGitRef: + return m.GitRef() + case devbuild.FieldGitHash: + return m.GitHash() + case devbuild.FieldPluginGitRef: + return m.PluginGitRef() + case devbuild.FieldIsHotfix: + return m.IsHotfix() + case devbuild.FieldIsPushGcr: + return m.IsPushGcr() + case devbuild.FieldTargetImg: + return m.TargetImg() + case devbuild.FieldPipelineEngine: + return m.PipelineEngine() + case devbuild.FieldBuilderImg: + return m.BuilderImg() + case devbuild.FieldBuildEnv: + return m.BuildEnv() + case devbuild.FieldFeatures: + return m.Features() + case devbuild.FieldProductBaseImg: + return m.ProductBaseImg() + case devbuild.FieldProductDockerfile: + return m.ProductDockerfile() + case devbuild.FieldStatus: + return m.Status() + case devbuild.FieldErrMsg: + return m.ErrMsg() + case devbuild.FieldPipelineBuildID: + return m.PipelineBuildID() + case devbuild.FieldPipelineStartAt: + return m.PipelineStartAt() + case devbuild.FieldPipelineEndAt: + return m.PipelineEndAt() + case devbuild.FieldBuildReport: + return m.BuildReport() + case devbuild.FieldTektonStatus: + return m.TektonStatus() + } + return nil, false +} + +// OldField returns the old value of the field from the database. An error is +// returned if the mutation operation is not UpdateOne, or the query to the +// database failed. +func (m *DevBuildMutation) OldField(ctx context.Context, name string) (ent.Value, error) { + switch name { + case devbuild.FieldCreatedBy: + return m.OldCreatedBy(ctx) + case devbuild.FieldCreatedAt: + return m.OldCreatedAt(ctx) + case devbuild.FieldUpdatedAt: + return m.OldUpdatedAt(ctx) + case devbuild.FieldProduct: + return m.OldProduct(ctx) + case devbuild.FieldEdition: + return m.OldEdition(ctx) + case devbuild.FieldVersion: + return m.OldVersion(ctx) + case devbuild.FieldGithubRepo: + return m.OldGithubRepo(ctx) + case devbuild.FieldGitRef: + return m.OldGitRef(ctx) + case devbuild.FieldGitHash: + return m.OldGitHash(ctx) + case devbuild.FieldPluginGitRef: + return m.OldPluginGitRef(ctx) + case devbuild.FieldIsHotfix: + return m.OldIsHotfix(ctx) + case devbuild.FieldIsPushGcr: + return m.OldIsPushGcr(ctx) + case devbuild.FieldTargetImg: + return m.OldTargetImg(ctx) + case devbuild.FieldPipelineEngine: + return m.OldPipelineEngine(ctx) + case devbuild.FieldBuilderImg: + return m.OldBuilderImg(ctx) + case devbuild.FieldBuildEnv: + return m.OldBuildEnv(ctx) + case devbuild.FieldFeatures: + return m.OldFeatures(ctx) + case devbuild.FieldProductBaseImg: + return m.OldProductBaseImg(ctx) + case devbuild.FieldProductDockerfile: + return m.OldProductDockerfile(ctx) + case devbuild.FieldStatus: + return m.OldStatus(ctx) + case devbuild.FieldErrMsg: + return m.OldErrMsg(ctx) + case devbuild.FieldPipelineBuildID: + return m.OldPipelineBuildID(ctx) + case devbuild.FieldPipelineStartAt: + return m.OldPipelineStartAt(ctx) + case devbuild.FieldPipelineEndAt: + return m.OldPipelineEndAt(ctx) + case devbuild.FieldBuildReport: + return m.OldBuildReport(ctx) + case devbuild.FieldTektonStatus: + return m.OldTektonStatus(ctx) + } + return nil, fmt.Errorf("unknown DevBuild field %s", name) +} + +// SetField sets the value of a field with the given name. It returns an error if +// the field is not defined in the schema, or if the type mismatched the field +// type. +func (m *DevBuildMutation) SetField(name string, value ent.Value) error { + switch name { + case devbuild.FieldCreatedBy: + v, ok := value.(string) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetCreatedBy(v) + return nil + case devbuild.FieldCreatedAt: + v, ok := value.(time.Time) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetCreatedAt(v) + return nil + case devbuild.FieldUpdatedAt: + v, ok := value.(time.Time) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetUpdatedAt(v) + return nil + case devbuild.FieldProduct: + v, ok := value.(string) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetProduct(v) + return nil + case devbuild.FieldEdition: + v, ok := value.(string) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetEdition(v) + return nil + case devbuild.FieldVersion: + v, ok := value.(string) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetVersion(v) + return nil + case devbuild.FieldGithubRepo: + v, ok := value.(string) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetGithubRepo(v) + return nil + case devbuild.FieldGitRef: + v, ok := value.(string) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetGitRef(v) + return nil + case devbuild.FieldGitHash: + v, ok := value.(string) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetGitHash(v) + return nil + case devbuild.FieldPluginGitRef: + v, ok := value.(string) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetPluginGitRef(v) + return nil + case devbuild.FieldIsHotfix: + v, ok := value.(bool) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetIsHotfix(v) + return nil + case devbuild.FieldIsPushGcr: + v, ok := value.(bool) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetIsPushGcr(v) + return nil + case devbuild.FieldTargetImg: + v, ok := value.(string) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetTargetImg(v) + return nil + case devbuild.FieldPipelineEngine: + v, ok := value.(string) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetPipelineEngine(v) + return nil + case devbuild.FieldBuilderImg: + v, ok := value.(string) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetBuilderImg(v) + return nil + case devbuild.FieldBuildEnv: + v, ok := value.(string) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetBuildEnv(v) + return nil + case devbuild.FieldFeatures: + v, ok := value.(string) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetFeatures(v) + return nil + case devbuild.FieldProductBaseImg: + v, ok := value.(string) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetProductBaseImg(v) + return nil + case devbuild.FieldProductDockerfile: + v, ok := value.(string) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetProductDockerfile(v) + return nil + case devbuild.FieldStatus: + v, ok := value.(string) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetStatus(v) + return nil + case devbuild.FieldErrMsg: + v, ok := value.(string) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetErrMsg(v) + return nil + case devbuild.FieldPipelineBuildID: + v, ok := value.(int64) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetPipelineBuildID(v) + return nil + case devbuild.FieldPipelineStartAt: + v, ok := value.(time.Time) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetPipelineStartAt(v) + return nil + case devbuild.FieldPipelineEndAt: + v, ok := value.(time.Time) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetPipelineEndAt(v) + return nil + case devbuild.FieldBuildReport: + v, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetBuildReport(v) + return nil + case devbuild.FieldTektonStatus: + v, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetTektonStatus(v) + return nil + } + return fmt.Errorf("unknown DevBuild field %s", name) +} + +// AddedFields returns all numeric fields that were incremented/decremented during +// this mutation. +func (m *DevBuildMutation) AddedFields() []string { + var fields []string + if m.addpipeline_build_id != nil { + fields = append(fields, devbuild.FieldPipelineBuildID) + } + return fields +} + +// AddedField returns the numeric value that was incremented/decremented on a field +// with the given name. The second boolean return value indicates that this field +// was not set, or was not defined in the schema. +func (m *DevBuildMutation) AddedField(name string) (ent.Value, bool) { + switch name { + case devbuild.FieldPipelineBuildID: + return m.AddedPipelineBuildID() + } + return nil, false +} + +// AddField adds the value to the field with the given name. It returns an error if +// the field is not defined in the schema, or if the type mismatched the field +// type. +func (m *DevBuildMutation) AddField(name string, value ent.Value) error { + switch name { + case devbuild.FieldPipelineBuildID: + v, ok := value.(int64) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.AddPipelineBuildID(v) + return nil + } + return fmt.Errorf("unknown DevBuild numeric field %s", name) +} + +// ClearedFields returns all nullable fields that were cleared during this +// mutation. +func (m *DevBuildMutation) ClearedFields() []string { + var fields []string + if m.FieldCleared(devbuild.FieldCreatedBy) { + fields = append(fields, devbuild.FieldCreatedBy) + } + if m.FieldCleared(devbuild.FieldProduct) { + fields = append(fields, devbuild.FieldProduct) + } + if m.FieldCleared(devbuild.FieldEdition) { + fields = append(fields, devbuild.FieldEdition) + } + if m.FieldCleared(devbuild.FieldVersion) { + fields = append(fields, devbuild.FieldVersion) + } + if m.FieldCleared(devbuild.FieldGithubRepo) { + fields = append(fields, devbuild.FieldGithubRepo) + } + if m.FieldCleared(devbuild.FieldGitRef) { + fields = append(fields, devbuild.FieldGitRef) + } + if m.FieldCleared(devbuild.FieldGitHash) { + fields = append(fields, devbuild.FieldGitHash) + } + if m.FieldCleared(devbuild.FieldPluginGitRef) { + fields = append(fields, devbuild.FieldPluginGitRef) + } + if m.FieldCleared(devbuild.FieldIsPushGcr) { + fields = append(fields, devbuild.FieldIsPushGcr) + } + if m.FieldCleared(devbuild.FieldTargetImg) { + fields = append(fields, devbuild.FieldTargetImg) + } + if m.FieldCleared(devbuild.FieldPipelineEngine) { + fields = append(fields, devbuild.FieldPipelineEngine) + } + if m.FieldCleared(devbuild.FieldBuilderImg) { + fields = append(fields, devbuild.FieldBuilderImg) + } + if m.FieldCleared(devbuild.FieldBuildEnv) { + fields = append(fields, devbuild.FieldBuildEnv) + } + if m.FieldCleared(devbuild.FieldFeatures) { + fields = append(fields, devbuild.FieldFeatures) + } + if m.FieldCleared(devbuild.FieldProductBaseImg) { + fields = append(fields, devbuild.FieldProductBaseImg) + } + if m.FieldCleared(devbuild.FieldProductDockerfile) { + fields = append(fields, devbuild.FieldProductDockerfile) + } + if m.FieldCleared(devbuild.FieldStatus) { + fields = append(fields, devbuild.FieldStatus) + } + if m.FieldCleared(devbuild.FieldErrMsg) { + fields = append(fields, devbuild.FieldErrMsg) + } + if m.FieldCleared(devbuild.FieldPipelineBuildID) { + fields = append(fields, devbuild.FieldPipelineBuildID) + } + if m.FieldCleared(devbuild.FieldPipelineStartAt) { + fields = append(fields, devbuild.FieldPipelineStartAt) + } + if m.FieldCleared(devbuild.FieldPipelineEndAt) { + fields = append(fields, devbuild.FieldPipelineEndAt) + } + if m.FieldCleared(devbuild.FieldBuildReport) { + fields = append(fields, devbuild.FieldBuildReport) + } + if m.FieldCleared(devbuild.FieldTektonStatus) { + fields = append(fields, devbuild.FieldTektonStatus) + } + return fields +} + +// FieldCleared returns a boolean indicating if a field with the given name was +// cleared in this mutation. +func (m *DevBuildMutation) FieldCleared(name string) bool { + _, ok := m.clearedFields[name] + return ok +} + +// ClearField clears the value of the field with the given name. It returns an +// error if the field is not defined in the schema. +func (m *DevBuildMutation) ClearField(name string) error { + switch name { + case devbuild.FieldCreatedBy: + m.ClearCreatedBy() + return nil + case devbuild.FieldProduct: + m.ClearProduct() + return nil + case devbuild.FieldEdition: + m.ClearEdition() + return nil + case devbuild.FieldVersion: + m.ClearVersion() + return nil + case devbuild.FieldGithubRepo: + m.ClearGithubRepo() + return nil + case devbuild.FieldGitRef: + m.ClearGitRef() + return nil + case devbuild.FieldGitHash: + m.ClearGitHash() + return nil + case devbuild.FieldPluginGitRef: + m.ClearPluginGitRef() + return nil + case devbuild.FieldIsPushGcr: + m.ClearIsPushGcr() + return nil + case devbuild.FieldTargetImg: + m.ClearTargetImg() + return nil + case devbuild.FieldPipelineEngine: + m.ClearPipelineEngine() + return nil + case devbuild.FieldBuilderImg: + m.ClearBuilderImg() + return nil + case devbuild.FieldBuildEnv: + m.ClearBuildEnv() + return nil + case devbuild.FieldFeatures: + m.ClearFeatures() + return nil + case devbuild.FieldProductBaseImg: + m.ClearProductBaseImg() + return nil + case devbuild.FieldProductDockerfile: + m.ClearProductDockerfile() + return nil + case devbuild.FieldStatus: + m.ClearStatus() + return nil + case devbuild.FieldErrMsg: + m.ClearErrMsg() + return nil + case devbuild.FieldPipelineBuildID: + m.ClearPipelineBuildID() + return nil + case devbuild.FieldPipelineStartAt: + m.ClearPipelineStartAt() + return nil + case devbuild.FieldPipelineEndAt: + m.ClearPipelineEndAt() + return nil + case devbuild.FieldBuildReport: + m.ClearBuildReport() + return nil + case devbuild.FieldTektonStatus: + m.ClearTektonStatus() + return nil + } + return fmt.Errorf("unknown DevBuild nullable field %s", name) +} + +// ResetField resets all changes in the mutation for the field with the given name. +// It returns an error if the field is not defined in the schema. +func (m *DevBuildMutation) ResetField(name string) error { + switch name { + case devbuild.FieldCreatedBy: + m.ResetCreatedBy() + return nil + case devbuild.FieldCreatedAt: + m.ResetCreatedAt() + return nil + case devbuild.FieldUpdatedAt: + m.ResetUpdatedAt() + return nil + case devbuild.FieldProduct: + m.ResetProduct() + return nil + case devbuild.FieldEdition: + m.ResetEdition() + return nil + case devbuild.FieldVersion: + m.ResetVersion() + return nil + case devbuild.FieldGithubRepo: + m.ResetGithubRepo() + return nil + case devbuild.FieldGitRef: + m.ResetGitRef() + return nil + case devbuild.FieldGitHash: + m.ResetGitHash() + return nil + case devbuild.FieldPluginGitRef: + m.ResetPluginGitRef() + return nil + case devbuild.FieldIsHotfix: + m.ResetIsHotfix() + return nil + case devbuild.FieldIsPushGcr: + m.ResetIsPushGcr() + return nil + case devbuild.FieldTargetImg: + m.ResetTargetImg() + return nil + case devbuild.FieldPipelineEngine: + m.ResetPipelineEngine() + return nil + case devbuild.FieldBuilderImg: + m.ResetBuilderImg() + return nil + case devbuild.FieldBuildEnv: + m.ResetBuildEnv() + return nil + case devbuild.FieldFeatures: + m.ResetFeatures() + return nil + case devbuild.FieldProductBaseImg: + m.ResetProductBaseImg() + return nil + case devbuild.FieldProductDockerfile: + m.ResetProductDockerfile() + return nil + case devbuild.FieldStatus: + m.ResetStatus() + return nil + case devbuild.FieldErrMsg: + m.ResetErrMsg() + return nil + case devbuild.FieldPipelineBuildID: + m.ResetPipelineBuildID() + return nil + case devbuild.FieldPipelineStartAt: + m.ResetPipelineStartAt() + return nil + case devbuild.FieldPipelineEndAt: + m.ResetPipelineEndAt() + return nil + case devbuild.FieldBuildReport: + m.ResetBuildReport() + return nil + case devbuild.FieldTektonStatus: + m.ResetTektonStatus() + return nil + } + return fmt.Errorf("unknown DevBuild field %s", name) +} + +// AddedEdges returns all edge names that were set/added in this mutation. +func (m *DevBuildMutation) AddedEdges() []string { + edges := make([]string, 0, 0) + return edges +} + +// AddedIDs returns all IDs (to other nodes) that were added for the given edge +// name in this mutation. +func (m *DevBuildMutation) AddedIDs(name string) []ent.Value { + return nil +} + +// RemovedEdges returns all edge names that were removed in this mutation. +func (m *DevBuildMutation) RemovedEdges() []string { + edges := make([]string, 0, 0) + return edges +} + +// RemovedIDs returns all IDs (to other nodes) that were removed for the edge with +// the given name in this mutation. +func (m *DevBuildMutation) RemovedIDs(name string) []ent.Value { + return nil +} + +// ClearedEdges returns all edge names that were cleared in this mutation. +func (m *DevBuildMutation) ClearedEdges() []string { + edges := make([]string, 0, 0) + return edges +} + +// EdgeCleared returns a boolean which indicates if the edge with the given name +// was cleared in this mutation. +func (m *DevBuildMutation) EdgeCleared(name string) bool { + return false +} + +// ClearEdge clears the value of the edge with the given name. It returns an error +// if that edge is not defined in the schema. +func (m *DevBuildMutation) ClearEdge(name string) error { + return fmt.Errorf("unknown DevBuild unique edge %s", name) +} + +// ResetEdge resets all changes to the edge with the given name in this mutation. +// It returns an error if the edge is not defined in the schema. +func (m *DevBuildMutation) ResetEdge(name string) error { + return fmt.Errorf("unknown DevBuild edge %s", name) +} diff --git a/experiments/tibuild-v2/internal/database/ent/predicate/predicate.go b/experiments/tibuild-v2/internal/database/ent/predicate/predicate.go new file mode 100644 index 00000000..853a774c --- /dev/null +++ b/experiments/tibuild-v2/internal/database/ent/predicate/predicate.go @@ -0,0 +1,10 @@ +// Code generated by ent, DO NOT EDIT. + +package predicate + +import ( + "entgo.io/ent/dialect/sql" +) + +// DevBuild is the predicate function for devbuild builders. +type DevBuild func(*sql.Selector) diff --git a/experiments/tibuild-v2/internal/database/ent/runtime.go b/experiments/tibuild-v2/internal/database/ent/runtime.go new file mode 100644 index 00000000..4c30c2ed --- /dev/null +++ b/experiments/tibuild-v2/internal/database/ent/runtime.go @@ -0,0 +1,111 @@ +// Code generated by ent, DO NOT EDIT. + +package ent + +import ( + "time" + + "github.com/PingCAP-QE/ee-apps/tibuild/internal/database/ent/devbuild" + "github.com/PingCAP-QE/ee-apps/tibuild/internal/database/schema" +) + +// The init function reads all schema descriptors with runtime code +// (default values, validators, hooks and policies) and stitches it +// to their package variables. +func init() { + devbuildMixin := schema.DevBuild{}.Mixin() + devbuildMixinFields0 := devbuildMixin[0].Fields() + _ = devbuildMixinFields0 + devbuildMixinFields1 := devbuildMixin[1].Fields() + _ = devbuildMixinFields1 + devbuildMixinFields2 := devbuildMixin[2].Fields() + _ = devbuildMixinFields2 + devbuildFields := schema.DevBuild{}.Fields() + _ = devbuildFields + // devbuildDescCreatedBy is the schema descriptor for created_by field. + devbuildDescCreatedBy := devbuildMixinFields0[0].Descriptor() + // devbuild.CreatedByValidator is a validator for the "created_by" field. It is called by the builders before save. + devbuild.CreatedByValidator = devbuildDescCreatedBy.Validators[0].(func(string) error) + // devbuildDescCreatedAt is the schema descriptor for created_at field. + devbuildDescCreatedAt := devbuildMixinFields0[1].Descriptor() + // devbuild.DefaultCreatedAt holds the default value on creation for the created_at field. + devbuild.DefaultCreatedAt = devbuildDescCreatedAt.Default.(func() time.Time) + // devbuildDescUpdatedAt is the schema descriptor for updated_at field. + devbuildDescUpdatedAt := devbuildMixinFields0[2].Descriptor() + // devbuild.DefaultUpdatedAt holds the default value on creation for the updated_at field. + devbuild.DefaultUpdatedAt = devbuildDescUpdatedAt.Default.(func() time.Time) + // devbuild.UpdateDefaultUpdatedAt holds the default value on update for the updated_at field. + devbuild.UpdateDefaultUpdatedAt = devbuildDescUpdatedAt.UpdateDefault.(func() time.Time) + // devbuildDescProduct is the schema descriptor for product field. + devbuildDescProduct := devbuildMixinFields1[0].Descriptor() + // devbuild.ProductValidator is a validator for the "product" field. It is called by the builders before save. + devbuild.ProductValidator = devbuildDescProduct.Validators[0].(func(string) error) + // devbuildDescEdition is the schema descriptor for edition field. + devbuildDescEdition := devbuildMixinFields1[1].Descriptor() + // devbuild.EditionValidator is a validator for the "edition" field. It is called by the builders before save. + devbuild.EditionValidator = devbuildDescEdition.Validators[0].(func(string) error) + // devbuildDescVersion is the schema descriptor for version field. + devbuildDescVersion := devbuildMixinFields1[2].Descriptor() + // devbuild.VersionValidator is a validator for the "version" field. It is called by the builders before save. + devbuild.VersionValidator = devbuildDescVersion.Validators[0].(func(string) error) + // devbuildDescGithubRepo is the schema descriptor for github_repo field. + devbuildDescGithubRepo := devbuildMixinFields1[3].Descriptor() + // devbuild.GithubRepoValidator is a validator for the "github_repo" field. It is called by the builders before save. + devbuild.GithubRepoValidator = devbuildDescGithubRepo.Validators[0].(func(string) error) + // devbuildDescGitRef is the schema descriptor for git_ref field. + devbuildDescGitRef := devbuildMixinFields1[4].Descriptor() + // devbuild.GitRefValidator is a validator for the "git_ref" field. It is called by the builders before save. + devbuild.GitRefValidator = devbuildDescGitRef.Validators[0].(func(string) error) + // devbuildDescGitHash is the schema descriptor for git_hash field. + devbuildDescGitHash := devbuildMixinFields1[5].Descriptor() + // devbuild.GitHashValidator is a validator for the "git_hash" field. It is called by the builders before save. + devbuild.GitHashValidator = devbuildDescGitHash.Validators[0].(func(string) error) + // devbuildDescPluginGitRef is the schema descriptor for plugin_git_ref field. + devbuildDescPluginGitRef := devbuildMixinFields1[6].Descriptor() + // devbuild.PluginGitRefValidator is a validator for the "plugin_git_ref" field. It is called by the builders before save. + devbuild.PluginGitRefValidator = devbuildDescPluginGitRef.Validators[0].(func(string) error) + // devbuildDescIsHotfix is the schema descriptor for is_hotfix field. + devbuildDescIsHotfix := devbuildMixinFields1[7].Descriptor() + // devbuild.DefaultIsHotfix holds the default value on creation for the is_hotfix field. + devbuild.DefaultIsHotfix = devbuildDescIsHotfix.Default.(bool) + // devbuildDescTargetImg is the schema descriptor for target_img field. + devbuildDescTargetImg := devbuildMixinFields1[9].Descriptor() + // devbuild.TargetImgValidator is a validator for the "target_img" field. It is called by the builders before save. + devbuild.TargetImgValidator = devbuildDescTargetImg.Validators[0].(func(string) error) + // devbuildDescPipelineEngine is the schema descriptor for pipeline_engine field. + devbuildDescPipelineEngine := devbuildMixinFields1[10].Descriptor() + // devbuild.DefaultPipelineEngine holds the default value on creation for the pipeline_engine field. + devbuild.DefaultPipelineEngine = devbuildDescPipelineEngine.Default.(string) + // devbuild.PipelineEngineValidator is a validator for the "pipeline_engine" field. It is called by the builders before save. + devbuild.PipelineEngineValidator = devbuildDescPipelineEngine.Validators[0].(func(string) error) + // devbuildDescBuilderImg is the schema descriptor for builder_img field. + devbuildDescBuilderImg := devbuildMixinFields1[11].Descriptor() + // devbuild.BuilderImgValidator is a validator for the "builder_img" field. It is called by the builders before save. + devbuild.BuilderImgValidator = devbuildDescBuilderImg.Validators[0].(func(string) error) + // devbuildDescBuildEnv is the schema descriptor for build_env field. + devbuildDescBuildEnv := devbuildMixinFields1[12].Descriptor() + // devbuild.BuildEnvValidator is a validator for the "build_env" field. It is called by the builders before save. + devbuild.BuildEnvValidator = devbuildDescBuildEnv.Validators[0].(func(string) error) + // devbuildDescFeatures is the schema descriptor for features field. + devbuildDescFeatures := devbuildMixinFields1[13].Descriptor() + // devbuild.FeaturesValidator is a validator for the "features" field. It is called by the builders before save. + devbuild.FeaturesValidator = devbuildDescFeatures.Validators[0].(func(string) error) + // devbuildDescProductBaseImg is the schema descriptor for product_base_img field. + devbuildDescProductBaseImg := devbuildMixinFields1[14].Descriptor() + // devbuild.ProductBaseImgValidator is a validator for the "product_base_img" field. It is called by the builders before save. + devbuild.ProductBaseImgValidator = devbuildDescProductBaseImg.Validators[0].(func(string) error) + // devbuildDescProductDockerfile is the schema descriptor for product_dockerfile field. + devbuildDescProductDockerfile := devbuildMixinFields1[15].Descriptor() + // devbuild.ProductDockerfileValidator is a validator for the "product_dockerfile" field. It is called by the builders before save. + devbuild.ProductDockerfileValidator = devbuildDescProductDockerfile.Validators[0].(func(string) error) + // devbuildDescStatus is the schema descriptor for status field. + devbuildDescStatus := devbuildMixinFields2[0].Descriptor() + // devbuild.DefaultStatus holds the default value on creation for the status field. + devbuild.DefaultStatus = devbuildDescStatus.Default.(string) + // devbuild.StatusValidator is a validator for the "status" field. It is called by the builders before save. + devbuild.StatusValidator = devbuildDescStatus.Validators[0].(func(string) error) + // devbuildDescErrMsg is the schema descriptor for err_msg field. + devbuildDescErrMsg := devbuildMixinFields2[1].Descriptor() + // devbuild.ErrMsgValidator is a validator for the "err_msg" field. It is called by the builders before save. + devbuild.ErrMsgValidator = devbuildDescErrMsg.Validators[0].(func(string) error) +} diff --git a/experiments/tibuild-v2/internal/database/ent/runtime/runtime.go b/experiments/tibuild-v2/internal/database/ent/runtime/runtime.go new file mode 100644 index 00000000..957501ab --- /dev/null +++ b/experiments/tibuild-v2/internal/database/ent/runtime/runtime.go @@ -0,0 +1,10 @@ +// Code generated by ent, DO NOT EDIT. + +package runtime + +// The schema-stitching logic is generated in github.com/PingCAP-QE/ee-apps/tibuild/internal/database/ent/runtime.go + +const ( + Version = "v0.14.3" // Version of ent codegen. + Sum = "h1:wokAV/kIlH9TeklJWGGS7AYJdVckr0DloWjIcO9iIIQ=" // Sum of ent codegen. +) diff --git a/experiments/tibuild-v2/internal/database/ent/tx.go b/experiments/tibuild-v2/internal/database/ent/tx.go new file mode 100644 index 00000000..5213f4b4 --- /dev/null +++ b/experiments/tibuild-v2/internal/database/ent/tx.go @@ -0,0 +1,210 @@ +// Code generated by ent, DO NOT EDIT. + +package ent + +import ( + "context" + "sync" + + "entgo.io/ent/dialect" +) + +// Tx is a transactional client that is created by calling Client.Tx(). +type Tx struct { + config + // DevBuild is the client for interacting with the DevBuild builders. + DevBuild *DevBuildClient + + // lazily loaded. + client *Client + clientOnce sync.Once + // ctx lives for the life of the transaction. It is + // the same context used by the underlying connection. + ctx context.Context +} + +type ( + // Committer is the interface that wraps the Commit method. + Committer interface { + Commit(context.Context, *Tx) error + } + + // The CommitFunc type is an adapter to allow the use of ordinary + // function as a Committer. If f is a function with the appropriate + // signature, CommitFunc(f) is a Committer that calls f. + CommitFunc func(context.Context, *Tx) error + + // CommitHook defines the "commit middleware". A function that gets a Committer + // and returns a Committer. For example: + // + // hook := func(next ent.Committer) ent.Committer { + // return ent.CommitFunc(func(ctx context.Context, tx *ent.Tx) error { + // // Do some stuff before. + // if err := next.Commit(ctx, tx); err != nil { + // return err + // } + // // Do some stuff after. + // return nil + // }) + // } + // + CommitHook func(Committer) Committer +) + +// Commit calls f(ctx, m). +func (f CommitFunc) Commit(ctx context.Context, tx *Tx) error { + return f(ctx, tx) +} + +// Commit commits the transaction. +func (tx *Tx) Commit() error { + txDriver := tx.config.driver.(*txDriver) + var fn Committer = CommitFunc(func(context.Context, *Tx) error { + return txDriver.tx.Commit() + }) + txDriver.mu.Lock() + hooks := append([]CommitHook(nil), txDriver.onCommit...) + txDriver.mu.Unlock() + for i := len(hooks) - 1; i >= 0; i-- { + fn = hooks[i](fn) + } + return fn.Commit(tx.ctx, tx) +} + +// OnCommit adds a hook to call on commit. +func (tx *Tx) OnCommit(f CommitHook) { + txDriver := tx.config.driver.(*txDriver) + txDriver.mu.Lock() + txDriver.onCommit = append(txDriver.onCommit, f) + txDriver.mu.Unlock() +} + +type ( + // Rollbacker is the interface that wraps the Rollback method. + Rollbacker interface { + Rollback(context.Context, *Tx) error + } + + // The RollbackFunc type is an adapter to allow the use of ordinary + // function as a Rollbacker. If f is a function with the appropriate + // signature, RollbackFunc(f) is a Rollbacker that calls f. + RollbackFunc func(context.Context, *Tx) error + + // RollbackHook defines the "rollback middleware". A function that gets a Rollbacker + // and returns a Rollbacker. For example: + // + // hook := func(next ent.Rollbacker) ent.Rollbacker { + // return ent.RollbackFunc(func(ctx context.Context, tx *ent.Tx) error { + // // Do some stuff before. + // if err := next.Rollback(ctx, tx); err != nil { + // return err + // } + // // Do some stuff after. + // return nil + // }) + // } + // + RollbackHook func(Rollbacker) Rollbacker +) + +// Rollback calls f(ctx, m). +func (f RollbackFunc) Rollback(ctx context.Context, tx *Tx) error { + return f(ctx, tx) +} + +// Rollback rollbacks the transaction. +func (tx *Tx) Rollback() error { + txDriver := tx.config.driver.(*txDriver) + var fn Rollbacker = RollbackFunc(func(context.Context, *Tx) error { + return txDriver.tx.Rollback() + }) + txDriver.mu.Lock() + hooks := append([]RollbackHook(nil), txDriver.onRollback...) + txDriver.mu.Unlock() + for i := len(hooks) - 1; i >= 0; i-- { + fn = hooks[i](fn) + } + return fn.Rollback(tx.ctx, tx) +} + +// OnRollback adds a hook to call on rollback. +func (tx *Tx) OnRollback(f RollbackHook) { + txDriver := tx.config.driver.(*txDriver) + txDriver.mu.Lock() + txDriver.onRollback = append(txDriver.onRollback, f) + txDriver.mu.Unlock() +} + +// Client returns a Client that binds to current transaction. +func (tx *Tx) Client() *Client { + tx.clientOnce.Do(func() { + tx.client = &Client{config: tx.config} + tx.client.init() + }) + return tx.client +} + +func (tx *Tx) init() { + tx.DevBuild = NewDevBuildClient(tx.config) +} + +// txDriver wraps the given dialect.Tx with a nop dialect.Driver implementation. +// The idea is to support transactions without adding any extra code to the builders. +// When a builder calls to driver.Tx(), it gets the same dialect.Tx instance. +// Commit and Rollback are nop for the internal builders and the user must call one +// of them in order to commit or rollback the transaction. +// +// If a closed transaction is embedded in one of the generated entities, and the entity +// applies a query, for example: DevBuild.QueryXXX(), the query will be executed +// through the driver which created this transaction. +// +// Note that txDriver is not goroutine safe. +type txDriver struct { + // the driver we started the transaction from. + drv dialect.Driver + // tx is the underlying transaction. + tx dialect.Tx + // completion hooks. + mu sync.Mutex + onCommit []CommitHook + onRollback []RollbackHook +} + +// newTx creates a new transactional driver. +func newTx(ctx context.Context, drv dialect.Driver) (*txDriver, error) { + tx, err := drv.Tx(ctx) + if err != nil { + return nil, err + } + return &txDriver{tx: tx, drv: drv}, nil +} + +// Tx returns the transaction wrapper (txDriver) to avoid Commit or Rollback calls +// from the internal builders. Should be called only by the internal builders. +func (tx *txDriver) Tx(context.Context) (dialect.Tx, error) { return tx, nil } + +// Dialect returns the dialect of the driver we started the transaction from. +func (tx *txDriver) Dialect() string { return tx.drv.Dialect() } + +// Close is a nop close. +func (*txDriver) Close() error { return nil } + +// Commit is a nop commit for the internal builders. +// User must call `Tx.Commit` in order to commit the transaction. +func (*txDriver) Commit() error { return nil } + +// Rollback is a nop rollback for the internal builders. +// User must call `Tx.Rollback` in order to rollback the transaction. +func (*txDriver) Rollback() error { return nil } + +// Exec calls tx.Exec. +func (tx *txDriver) Exec(ctx context.Context, query string, args, v any) error { + return tx.tx.Exec(ctx, query, args, v) +} + +// Query calls tx.Query. +func (tx *txDriver) Query(ctx context.Context, query string, args, v any) error { + return tx.tx.Query(ctx, query, args, v) +} + +var _ dialect.Driver = (*txDriver)(nil) diff --git a/experiments/tibuild-v2/internal/database/schema/devbuild.go b/experiments/tibuild-v2/internal/database/schema/devbuild.go new file mode 100644 index 00000000..a2ea9c01 --- /dev/null +++ b/experiments/tibuild-v2/internal/database/schema/devbuild.go @@ -0,0 +1,201 @@ +package schema + +import ( + "time" + + "entgo.io/ent" + "entgo.io/ent/dialect/entsql" + "entgo.io/ent/schema" + "entgo.io/ent/schema/field" + "entgo.io/ent/schema/mixin" +) + +// DevBuild holds the schema definition for the DevBuild entity. +type DevBuild struct { + ent.Schema +} + +// Fields of the DevBuild. +func (DevBuild) Fields() []ent.Field { + return []ent.Field{} +} + +func (DevBuild) Mixin() []ent.Mixin { + return []ent.Mixin{ + DevBuildMeta{}, + DevBuildSpec{}, + DevBuildStatus{}, + } +} + +// Edges of the DevBuild. +func (DevBuild) Edges() []ent.Edge { + return nil +} + +// Annotations of the DevBuild. +func (DevBuild) Annotations() []schema.Annotation { + return []schema.Annotation{ + entsql.Annotation{Table: "dev_builds"}, + } +} + +// DevBuildMeta holds the mixin schema definition. +type DevBuildMeta struct { + mixin.Schema +} + +// Fields of the DevBuildMeta. +func (DevBuildMeta) Fields() []ent.Field { + return []ent.Field{ + field.String("created_by"). + Optional(). + MaxLen(64). + Comment("User who created the build"). + StructTag(`json:"created_by,omitempty"`), + + field.Time("created_at"). + Default(time.Now). + Comment("Time when the build was created"). + StructTag(`json:"created_at,omitempty"`), + + field.Time("updated_at"). + Default(time.Now). + UpdateDefault(time.Now). + Comment("Time when the build was last updated"). + StructTag(`json:"updated_at,omitempty"`), + } +} + +// DevBuildSpec holds the mixin schema definition. +type DevBuildSpec struct { + mixin.Schema +} + +// Fields of the DevBuildSpec. +func (DevBuildSpec) Fields() []ent.Field { + return []ent.Field{ + field.String("product"). + Optional(). + MaxLen(32). + Comment("Product being built"), + + field.String("edition"). + Optional(). + MaxLen(32). + Comment("Edition of the product"), + + field.String("version"). + Optional(). + MaxLen(128). + Comment("Version of the build"), + + // Git related fields + field.String("github_repo"). + Optional(). + MaxLen(64). + Comment("GitHub repository"), + + field.String("git_ref"). + Optional(). + MaxLen(64). + Comment("Git reference of the build"), + + field.String("git_hash"). + Optional(). + MaxLen(40). + Comment("Git commit SHA"), + + field.String("plugin_git_ref"). + Optional(). + MaxLen(64). + Comment("Git reference of the plugin"), + + // Publish configuration fields + field.Bool("is_hotfix"). + Default(false). + Comment("Whether the build is a hotfix"), + + field.Bool("is_push_gcr"). + Optional(). + Comment("Whether to push to GCR"), + + field.String("target_img"). + Optional(). + MaxLen(128). + Comment("Target image name"), + + // Build configuration fields + field.String("pipeline_engine"). + Optional(). + MaxLen(16). + Default("jenkins"). + Comment("Pipeline engine used"), + + field.String("builder_img"). + Optional(). + MaxLen(128). + Comment("Builder image used"), + + field.String("build_env"). + Optional(). + MaxLen(128). + Comment("Build environment"), + + field.String("features"). + Optional(). + MaxLen(128). + Comment("Features included in the build"), + + field.String("product_base_img"). + Optional(). + MaxLen(128). + Comment("Base image for the product"), + + field.String("product_dockerfile"). + Optional(). + MaxLen(128). + Comment("Path to artifact image building dockerfile"), + } +} + +// DevBuildStatus holds the mixin schema definition. +type DevBuildStatus struct { + mixin.Schema +} + +// Fields of the DevBuildStatus. +func (DevBuildStatus) Fields() []ent.Field { + return []ent.Field{ + field.String("status"). + Optional(). + MaxLen(16). + Default("pending"). + Comment("Build status"), + + field.String("err_msg"). + Optional(). + MaxLen(256). + Comment("Build status message"), + + field.Int64("pipeline_build_id"). + Optional(). + Comment("ID of the pipeline build"), + + field.Time("pipeline_start_at"). + Optional(). + Comment("Build pipeline started time"), + + field.Time("pipeline_end_at"). + Optional(). + Comment("Build pipeline completed time"), + + field.JSON("build_report", map[string]any{}). + Optional(). + Comment("JSON report of the build"), + + field.JSON("tekton_status", map[string]any{}). + Optional(). + Comment("Tekton status"), + } +} diff --git a/experiments/tibuild-v2/internal/generate.go b/experiments/tibuild-v2/internal/generate.go new file mode 100644 index 00000000..222d84ac --- /dev/null +++ b/experiments/tibuild-v2/internal/generate.go @@ -0,0 +1,4 @@ +package internal + +//go:generate go run -mod=mod entgo.io/ent/cmd/ent generate --target ./database/ent ./database/schema +//go:generate go run -mod=mod goa.design/goa/v3/cmd/goa gen github.com/PingCAP-QE/ee-apps/tibuild/internal/service/design -o ./service diff --git a/experiments/tibuild-v2/design/design.go b/experiments/tibuild-v2/internal/service/design/design.go similarity index 81% rename from experiments/tibuild-v2/design/design.go rename to experiments/tibuild-v2/internal/service/design/design.go index 5333f3d2..c3fb34b4 100644 --- a/experiments/tibuild-v2/design/design.go +++ b/experiments/tibuild-v2/internal/service/design/design.go @@ -1,4 +1,4 @@ -package design +package api import ( . "goa.design/goa/v3/dsl" @@ -22,22 +22,27 @@ var _ = API("tibuild", func() { URI("http://0.0.0.0:8080") }) }) + + HTTP(func() { + // Add prefix to all API paths + Path("/api/v2") + }) }) var _ = Service("artifact", func() { Description("The artifact service provides operations to manage artifacts.") Error("BadRequest", HTTPError, "Bad Request") Error("InternalServerError", HTTPError, "Internal Server Error") + HTTP(func() { + Path("/artifact") + }) Method("syncImage", func() { Description("Sync hotfix image to dockerhub") - Payload(func() { - Attribute("ImageSyncRequest", ImageSyncRequest, "Image sync to public, only hotfix is accepted right now") - Required("ImageSyncRequest") - }) + Payload(ImageSyncRequest) Result(ImageSyncRequest) HTTP(func() { - POST("/api/artifact/sync-image") + POST("/sync-image") Response(StatusOK) Response("BadRequest", StatusBadRequest) Response("InternalServerError", StatusInternalServerError) @@ -49,38 +54,40 @@ var _ = Service("devbuild", func() { Description("The devbuild service provides operations to manage dev builds.") Error("BadRequest", HTTPError, "Bad Request") Error("InternalServerError", HTTPError, "Internal Server Error") + HTTP(func() { + Path("/devbuilds") + }) Method("list", func() { Description("List devbuild with pagination support") Payload(func() { Attribute("page", Int, "The page number of items", func() { Default(1) }) - Attribute("per_page", Int, "The number of items per page", func() { - Default(10) + Attribute("page_size", Int, "Page size", func() { + Default(30) + }) + Attribute("hotfix", Boolean, "Filter hotfix", func() { + Default(false) }) Attribute("sort", String, "What to sort results by", func() { - Enum("createdAt", "updatedAt") - Default("createdAt") + Enum("created_at", "updated_at") + Default("created_at") }) Attribute("direction", String, "The direction of the sort", func() { Enum("asc", "desc") Default("desc") }) - Attribute("hotfix", Boolean, "Filter hotfix") - Attribute("createdBy", String, "Filter created by") + Attribute("created_by", String, "Filter created by") }) Result(ArrayOf(DevBuild), "List of dev builds") HTTP(func() { - GET("/api/devbuilds") + GET("/") Param("page") - Param("pageSize") + Param("page_size") Param("hotfix") - Param("createdBy") - Response(StatusOK, func() { - Header("X-Next-Page", Int, "The next page number") - Header("X-Total-Count", Int, "The total number of items") - Header("X-Total-Pages", Int, "The total number of pages") - }) + Param("sort") + Param("created_by") + Response(StatusOK) Response("BadRequest", StatusBadRequest) }) }) @@ -88,18 +95,18 @@ var _ = Service("devbuild", func() { Method("create", func() { Description("Create and trigger devbuild") Payload(func() { - Attribute("createdBy", String, "Creator of build", func() { + Attribute("created_by", String, "Creator of build", func() { Format(FormatEmail) }) Attribute("request", DevBuildRequest, "Build to create, only spec field is required, others are ignored") Attribute("dryrun", Boolean, "Dry run", func() { Default(false) }) - Required("createdBy", "request") + Required("created_by", "request") }) Result(DevBuild) HTTP(func() { - POST("/api/devbuilds") + POST("/") Param("dryrun") Response(StatusOK) Response("BadRequest", StatusBadRequest) @@ -121,7 +128,7 @@ var _ = Service("devbuild", func() { Result(DevBuild) Error("http_error", HTTPError, "Bad Request") HTTP(func() { - GET("/api/devbuilds/{id}") + GET("/{id}") Param("sync") Response(StatusOK) Response("BadRequest", StatusBadRequest) @@ -143,7 +150,7 @@ var _ = Service("devbuild", func() { }) Result(DevBuild) HTTP(func() { - PUT("/api/devbuilds/{id}") + PUT("/{id}") Param("dryrun") Response(StatusOK) Response("BadRequest", StatusBadRequest) @@ -164,7 +171,7 @@ var _ = Service("devbuild", func() { }) Result(DevBuild) HTTP(func() { - POST("/api/devbuilds/{id}/rerun") + POST("/{id}/rerun") Param("dryrun") Response(StatusOK) Response("BadRequest", StatusBadRequest) @@ -180,16 +187,16 @@ var ImageSyncRequest = Type("ImageSyncRequest", func() { }) var DevBuildRequest = Type("DevBuildRequest", func() { - Attribute("buildEnv", String) - Attribute("builderImg", String) + Attribute("build_env", String) + Attribute("builder_img", String) Attribute("edition", ProductEdition) Attribute("features", String) Attribute("gitRef", String) Attribute("githubRepo", String) - Attribute("isHotfix", Boolean) - Attribute("isPushGCR", Boolean) - Attribute("pipelineEngine", PipelineEngine) - Attribute("pluginGitRef", String) + Attribute("is_hotfix", Boolean) + Attribute("is_push_gcr", Boolean) + Attribute("pipeline_engine", PipelineEngine) + Attribute("plugin_git_ref", String) Attribute("product", Product) Attribute("productBaseImg", String) Attribute("productDockerfile", String) @@ -208,30 +215,36 @@ var DevBuild = Type("DevBuild", func() { }) var DevBuildMeta = Type("DevBuildMeta", func() { - Attribute("createdAt", String) - Attribute("createdBy", String) - Attribute("updatedAt", String) - Required("createdAt", "createdBy", "updatedAt") + Attribute("created_by", String, func() { + Format(FormatEmail) + }) + Attribute("created_at", String, func() { + Format(FormatDateTime) + }) + Attribute("updated_at", String, func() { + Format(FormatDateTime) + }) + Required("created_at", "created_by", "updated_at") }) var DevBuildSpec = Type("DevBuildSpec", func() { - Attribute("buildEnv", String) - Attribute("builderImg", String) + Attribute("build_env", String) + Attribute("builder_img", String) Attribute("edition", ProductEdition) Attribute("features", String) Attribute("gitHash", String) Attribute("gitRef", String) Attribute("githubRepo", String) - Attribute("isHotfix", Boolean) - Attribute("isPushGCR", Boolean) - Attribute("pipelineEngine", PipelineEngine) - Attribute("pluginGitRef", String) + Attribute("is_hotfix", Boolean) + Attribute("is_push_gcr", Boolean) + Attribute("pipeline_engine", PipelineEngine) + Attribute("plugin_git_ref", String) Attribute("product", Product) Attribute("productBaseImg", String) Attribute("productDockerfile", String) Attribute("targetImg", String) Attribute("version", String) - Required("buildEnv", "builderImg", "edition", "features", "gitHash", "gitRef", "githubRepo", "isHotfix", "isPushGCR", "pipelineEngine", "pluginGitRef", "product", "productBaseImg", "productDockerfile", "targetImg", "version") + Required("build_env", "builder_img", "edition", "features", "gitHash", "gitRef", "githubRepo", "is_hotfix", "is_push_gcr", "pipeline_engine", "plugin_git_ref", "product", "productBaseImg", "productDockerfile", "targetImg", "version") }) var DevBuildStatus = Type("DevBuildStatus", func() { diff --git a/experiments/tibuild-v2/gen/artifact/client.go b/experiments/tibuild-v2/internal/service/gen/artifact/client.go similarity index 80% rename from experiments/tibuild-v2/gen/artifact/client.go rename to experiments/tibuild-v2/internal/service/gen/artifact/client.go index 69acabe4..20ad3ef2 100644 --- a/experiments/tibuild-v2/gen/artifact/client.go +++ b/experiments/tibuild-v2/internal/service/gen/artifact/client.go @@ -3,7 +3,8 @@ // artifact client // // Command: -// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/design +// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/internal/service/design -o +// ./service package artifact @@ -30,7 +31,7 @@ func NewClient(syncImage goa.Endpoint) *Client { // - "BadRequest" (type *HTTPError): Bad Request // - "InternalServerError" (type *HTTPError): Internal Server Error // - error: internal error -func (c *Client) SyncImage(ctx context.Context, p *SyncImagePayload) (res *ImageSyncRequest, err error) { +func (c *Client) SyncImage(ctx context.Context, p *ImageSyncRequest) (res *ImageSyncRequest, err error) { var ires any ires, err = c.SyncImageEndpoint(ctx, p) if err != nil { diff --git a/experiments/tibuild-v2/gen/artifact/endpoints.go b/experiments/tibuild-v2/internal/service/gen/artifact/endpoints.go similarity index 87% rename from experiments/tibuild-v2/gen/artifact/endpoints.go rename to experiments/tibuild-v2/internal/service/gen/artifact/endpoints.go index 3be8d183..700dc8c8 100644 --- a/experiments/tibuild-v2/gen/artifact/endpoints.go +++ b/experiments/tibuild-v2/internal/service/gen/artifact/endpoints.go @@ -3,7 +3,8 @@ // artifact endpoints // // Command: -// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/design +// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/internal/service/design -o +// ./service package artifact @@ -34,7 +35,7 @@ func (e *Endpoints) Use(m func(goa.Endpoint) goa.Endpoint) { // "syncImage" of service "artifact". func NewSyncImageEndpoint(s Service) goa.Endpoint { return func(ctx context.Context, req any) (any, error) { - p := req.(*SyncImagePayload) + p := req.(*ImageSyncRequest) return s.SyncImage(ctx, p) } } diff --git a/experiments/tibuild-v2/gen/artifact/service.go b/experiments/tibuild-v2/internal/service/gen/artifact/service.go similarity index 77% rename from experiments/tibuild-v2/gen/artifact/service.go rename to experiments/tibuild-v2/internal/service/gen/artifact/service.go index f3224c2c..25f6c4dd 100644 --- a/experiments/tibuild-v2/gen/artifact/service.go +++ b/experiments/tibuild-v2/internal/service/gen/artifact/service.go @@ -3,7 +3,8 @@ // artifact service // // Command: -// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/design +// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/internal/service/design -o +// ./service package artifact @@ -14,7 +15,7 @@ import ( // The artifact service provides operations to manage artifacts. type Service interface { // Sync hotfix image to dockerhub - SyncImage(context.Context, *SyncImagePayload) (res *ImageSyncRequest, err error) + SyncImage(context.Context, *ImageSyncRequest) (res *ImageSyncRequest, err error) } // APIName is the name of the API as defined in the design. @@ -38,19 +39,13 @@ type HTTPError struct { Message string } -// ImageSyncRequest is the result type of the artifact service syncImage method. +// ImageSyncRequest is the payload type of the artifact service syncImage +// method. type ImageSyncRequest struct { Source string Target string } -// SyncImagePayload is the payload type of the artifact service syncImage -// method. -type SyncImagePayload struct { - // Image sync to public, only hotfix is accepted right now - ImageSyncRequest *ImageSyncRequest -} - // Error returns an error description. func (e *HTTPError) Error() string { return "" diff --git a/experiments/tibuild-v2/gen/devbuild/client.go b/experiments/tibuild-v2/internal/service/gen/devbuild/client.go similarity index 97% rename from experiments/tibuild-v2/gen/devbuild/client.go rename to experiments/tibuild-v2/internal/service/gen/devbuild/client.go index 7f0a5032..5c7c6afa 100644 --- a/experiments/tibuild-v2/gen/devbuild/client.go +++ b/experiments/tibuild-v2/internal/service/gen/devbuild/client.go @@ -3,7 +3,8 @@ // devbuild client // // Command: -// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/design +// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/internal/service/design -o +// ./service package devbuild diff --git a/experiments/tibuild-v2/gen/devbuild/endpoints.go b/experiments/tibuild-v2/internal/service/gen/devbuild/endpoints.go similarity index 96% rename from experiments/tibuild-v2/gen/devbuild/endpoints.go rename to experiments/tibuild-v2/internal/service/gen/devbuild/endpoints.go index 8a37bee7..800fda95 100644 --- a/experiments/tibuild-v2/gen/devbuild/endpoints.go +++ b/experiments/tibuild-v2/internal/service/gen/devbuild/endpoints.go @@ -3,7 +3,8 @@ // devbuild endpoints // // Command: -// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/design +// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/internal/service/design -o +// ./service package devbuild diff --git a/experiments/tibuild-v2/gen/devbuild/service.go b/experiments/tibuild-v2/internal/service/gen/devbuild/service.go similarity index 93% rename from experiments/tibuild-v2/gen/devbuild/service.go rename to experiments/tibuild-v2/internal/service/gen/devbuild/service.go index 461a1f9a..38217275 100644 --- a/experiments/tibuild-v2/gen/devbuild/service.go +++ b/experiments/tibuild-v2/internal/service/gen/devbuild/service.go @@ -3,7 +3,8 @@ // devbuild service // // Command: -// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/design +// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/internal/service/design -o +// ./service package devbuild @@ -13,7 +14,7 @@ import ( // The devbuild service provides operations to manage dev builds. type Service interface { - // List devbuild + // List devbuild with pagination support List(context.Context, *ListPayload) (res []*DevBuild, err error) // Create and trigger devbuild Create(context.Context, *CreatePayload) (res *DevBuild, err error) @@ -79,8 +80,8 @@ type DevBuild struct { } type DevBuildMeta struct { - CreatedAt string CreatedBy string + CreatedAt string UpdatedAt string } @@ -92,7 +93,7 @@ type DevBuildRequest struct { GitRef string GithubRepo *string IsHotfix *bool - IsPushGCR *bool + IsPushGcr *bool PipelineEngine *PipelineEngine PluginGitRef *string Product Product @@ -111,7 +112,7 @@ type DevBuildSpec struct { GitRef string GithubRepo string IsHotfix bool - IsPushGCR bool + IsPushGcr bool PipelineEngine PipelineEngine PluginGitRef string Product Product @@ -153,12 +154,16 @@ type ImageArtifact struct { // ListPayload is the payload type of the devbuild service list method. type ListPayload struct { - // The size limit of items - Size int - // The start position of items - Offset int + // The page number of items + Page int + // Page size + PageSize int // Filter hotfix - Hotfix *bool + Hotfix bool + // What to sort results by + Sort string + // The direction of the sort + Direction string // Filter created by CreatedBy *string } diff --git a/experiments/tibuild-v2/internal/service/gen/http/artifact/client/cli.go b/experiments/tibuild-v2/internal/service/gen/http/artifact/client/cli.go new file mode 100644 index 00000000..1a6114cc --- /dev/null +++ b/experiments/tibuild-v2/internal/service/gen/http/artifact/client/cli.go @@ -0,0 +1,35 @@ +// Code generated by goa v3.20.0, DO NOT EDIT. +// +// artifact HTTP client CLI support package +// +// Command: +// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/internal/service/design -o +// ./service + +package client + +import ( + "encoding/json" + "fmt" + + artifact "github.com/PingCAP-QE/ee-apps/tibuild/internal/service/gen/artifact" +) + +// BuildSyncImagePayload builds the payload for the artifact syncImage endpoint +// from CLI flags. +func BuildSyncImagePayload(artifactSyncImageBody string) (*artifact.ImageSyncRequest, error) { + var err error + var body SyncImageRequestBody + { + err = json.Unmarshal([]byte(artifactSyncImageBody), &body) + if err != nil { + return nil, fmt.Errorf("invalid JSON for body, \nerror: %s, \nexample of valid JSON:\n%s", err, "'{\n \"source\": \"Ut alias adipisci est consequatur quo.\",\n \"target\": \"Dolore et et quis.\"\n }'") + } + } + v := &artifact.ImageSyncRequest{ + Source: body.Source, + Target: body.Target, + } + + return v, nil +} diff --git a/experiments/tibuild-v2/gen/http/artifact/client/client.go b/experiments/tibuild-v2/internal/service/gen/http/artifact/client/client.go similarity index 95% rename from experiments/tibuild-v2/gen/http/artifact/client/client.go rename to experiments/tibuild-v2/internal/service/gen/http/artifact/client/client.go index e09c050e..dddb90c4 100644 --- a/experiments/tibuild-v2/gen/http/artifact/client/client.go +++ b/experiments/tibuild-v2/internal/service/gen/http/artifact/client/client.go @@ -3,7 +3,8 @@ // artifact client HTTP transport // // Command: -// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/design +// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/internal/service/design -o +// ./service package client diff --git a/experiments/tibuild-v2/gen/http/artifact/client/encode_decode.go b/experiments/tibuild-v2/internal/service/gen/http/artifact/client/encode_decode.go similarity index 78% rename from experiments/tibuild-v2/gen/http/artifact/client/encode_decode.go rename to experiments/tibuild-v2/internal/service/gen/http/artifact/client/encode_decode.go index bb0fda8e..b8efe9d5 100644 --- a/experiments/tibuild-v2/gen/http/artifact/client/encode_decode.go +++ b/experiments/tibuild-v2/internal/service/gen/http/artifact/client/encode_decode.go @@ -3,7 +3,8 @@ // artifact HTTP client encoders and decoders // // Command: -// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/design +// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/internal/service/design -o +// ./service package client @@ -14,7 +15,7 @@ import ( "net/http" "net/url" - artifact "github.com/PingCAP-QE/ee-apps/tibuild/gen/artifact" + artifact "github.com/PingCAP-QE/ee-apps/tibuild/internal/service/gen/artifact" goahttp "goa.design/goa/v3/http" ) @@ -37,9 +38,9 @@ func (c *Client) BuildSyncImageRequest(ctx context.Context, v any) (*http.Reques // syncImage server. func EncodeSyncImageRequest(encoder func(*http.Request) goahttp.Encoder) func(*http.Request, any) error { return func(req *http.Request, v any) error { - p, ok := v.(*artifact.SyncImagePayload) + p, ok := v.(*artifact.ImageSyncRequest) if !ok { - return goahttp.ErrInvalidType("artifact", "syncImage", "*artifact.SyncImagePayload", v) + return goahttp.ErrInvalidType("artifact", "syncImage", "*artifact.ImageSyncRequest", v) } body := NewSyncImageRequestBody(p) if err := encoder(req).Encode(&body); err != nil { @@ -120,27 +121,3 @@ func DecodeSyncImageResponse(decoder func(*http.Response) goahttp.Decoder, resto } } } - -// marshalArtifactImageSyncRequestToImageSyncRequestRequestBody builds a value -// of type *ImageSyncRequestRequestBody from a value of type -// *artifact.ImageSyncRequest. -func marshalArtifactImageSyncRequestToImageSyncRequestRequestBody(v *artifact.ImageSyncRequest) *ImageSyncRequestRequestBody { - res := &ImageSyncRequestRequestBody{ - Source: v.Source, - Target: v.Target, - } - - return res -} - -// marshalImageSyncRequestRequestBodyToArtifactImageSyncRequest builds a value -// of type *artifact.ImageSyncRequest from a value of type -// *ImageSyncRequestRequestBody. -func marshalImageSyncRequestRequestBodyToArtifactImageSyncRequest(v *ImageSyncRequestRequestBody) *artifact.ImageSyncRequest { - res := &artifact.ImageSyncRequest{ - Source: v.Source, - Target: v.Target, - } - - return res -} diff --git a/experiments/tibuild-v2/gen/http/artifact/client/paths.go b/experiments/tibuild-v2/internal/service/gen/http/artifact/client/paths.go similarity index 68% rename from experiments/tibuild-v2/gen/http/artifact/client/paths.go rename to experiments/tibuild-v2/internal/service/gen/http/artifact/client/paths.go index ddd218cc..1f1e7ad6 100644 --- a/experiments/tibuild-v2/gen/http/artifact/client/paths.go +++ b/experiments/tibuild-v2/internal/service/gen/http/artifact/client/paths.go @@ -3,11 +3,12 @@ // HTTP request path constructors for the artifact service. // // Command: -// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/design +// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/internal/service/design -o +// ./service package client // SyncImageArtifactPath returns the URL path to the artifact service syncImage HTTP endpoint. func SyncImageArtifactPath() string { - return "/api/artifact/sync-image" + return "/api/v2/artifact/sync-image" } diff --git a/experiments/tibuild-v2/gen/http/artifact/client/types.go b/experiments/tibuild-v2/internal/service/gen/http/artifact/client/types.go similarity index 85% rename from experiments/tibuild-v2/gen/http/artifact/client/types.go rename to experiments/tibuild-v2/internal/service/gen/http/artifact/client/types.go index d9aa63d4..397bf8aa 100644 --- a/experiments/tibuild-v2/gen/http/artifact/client/types.go +++ b/experiments/tibuild-v2/internal/service/gen/http/artifact/client/types.go @@ -3,20 +3,21 @@ // artifact HTTP client types // // Command: -// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/design +// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/internal/service/design -o +// ./service package client import ( - artifact "github.com/PingCAP-QE/ee-apps/tibuild/gen/artifact" + artifact "github.com/PingCAP-QE/ee-apps/tibuild/internal/service/gen/artifact" goa "goa.design/goa/v3/pkg" ) // SyncImageRequestBody is the type of the "artifact" service "syncImage" // endpoint HTTP request body. type SyncImageRequestBody struct { - // Image sync to public, only hotfix is accepted right now - ImageSyncRequest *ImageSyncRequestRequestBody `form:"ImageSyncRequest" json:"ImageSyncRequest" xml:"ImageSyncRequest"` + Source string `form:"source" json:"source" xml:"source"` + Target string `form:"target" json:"target" xml:"target"` } // SyncImageResponseBody is the type of the "artifact" service "syncImage" @@ -41,18 +42,12 @@ type SyncImageInternalServerErrorResponseBody struct { Message *string `form:"message,omitempty" json:"message,omitempty" xml:"message,omitempty"` } -// ImageSyncRequestRequestBody is used to define fields on request body types. -type ImageSyncRequestRequestBody struct { - Source string `form:"source" json:"source" xml:"source"` - Target string `form:"target" json:"target" xml:"target"` -} - // NewSyncImageRequestBody builds the HTTP request body from the payload of the // "syncImage" endpoint of the "artifact" service. -func NewSyncImageRequestBody(p *artifact.SyncImagePayload) *SyncImageRequestBody { - body := &SyncImageRequestBody{} - if p.ImageSyncRequest != nil { - body.ImageSyncRequest = marshalArtifactImageSyncRequestToImageSyncRequestRequestBody(p.ImageSyncRequest) +func NewSyncImageRequestBody(p *artifact.ImageSyncRequest) *SyncImageRequestBody { + body := &SyncImageRequestBody{ + Source: p.Source, + Target: p.Target, } return body } diff --git a/experiments/tibuild-v2/gen/http/artifact/server/encode_decode.go b/experiments/tibuild-v2/internal/service/gen/http/artifact/server/encode_decode.go similarity index 83% rename from experiments/tibuild-v2/gen/http/artifact/server/encode_decode.go rename to experiments/tibuild-v2/internal/service/gen/http/artifact/server/encode_decode.go index 640f8ad5..cd70a8a5 100644 --- a/experiments/tibuild-v2/gen/http/artifact/server/encode_decode.go +++ b/experiments/tibuild-v2/internal/service/gen/http/artifact/server/encode_decode.go @@ -3,7 +3,8 @@ // artifact HTTP server encoders and decoders // // Command: -// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/design +// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/internal/service/design -o +// ./service package server @@ -13,7 +14,7 @@ import ( "io" "net/http" - artifact "github.com/PingCAP-QE/ee-apps/tibuild/gen/artifact" + artifact "github.com/PingCAP-QE/ee-apps/tibuild/internal/service/gen/artifact" goahttp "goa.design/goa/v3/http" goa "goa.design/goa/v3/pkg" ) @@ -53,7 +54,7 @@ func DecodeSyncImageRequest(mux goahttp.Muxer, decoder func(*http.Request) goaht if err != nil { return nil, err } - payload := NewSyncImagePayload(&body) + payload := NewSyncImageImageSyncRequest(&body) return payload, nil } @@ -100,15 +101,3 @@ func EncodeSyncImageError(encoder func(context.Context, http.ResponseWriter) goa } } } - -// unmarshalImageSyncRequestRequestBodyToArtifactImageSyncRequest builds a -// value of type *artifact.ImageSyncRequest from a value of type -// *ImageSyncRequestRequestBody. -func unmarshalImageSyncRequestRequestBodyToArtifactImageSyncRequest(v *ImageSyncRequestRequestBody) *artifact.ImageSyncRequest { - res := &artifact.ImageSyncRequest{ - Source: *v.Source, - Target: *v.Target, - } - - return res -} diff --git a/experiments/tibuild-v2/gen/http/artifact/server/paths.go b/experiments/tibuild-v2/internal/service/gen/http/artifact/server/paths.go similarity index 68% rename from experiments/tibuild-v2/gen/http/artifact/server/paths.go rename to experiments/tibuild-v2/internal/service/gen/http/artifact/server/paths.go index 944dc4c8..4151dad6 100644 --- a/experiments/tibuild-v2/gen/http/artifact/server/paths.go +++ b/experiments/tibuild-v2/internal/service/gen/http/artifact/server/paths.go @@ -3,11 +3,12 @@ // HTTP request path constructors for the artifact service. // // Command: -// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/design +// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/internal/service/design -o +// ./service package server // SyncImageArtifactPath returns the URL path to the artifact service syncImage HTTP endpoint. func SyncImageArtifactPath() string { - return "/api/artifact/sync-image" + return "/api/v2/artifact/sync-image" } diff --git a/experiments/tibuild-v2/gen/http/artifact/server/server.go b/experiments/tibuild-v2/internal/service/gen/http/artifact/server/server.go similarity index 93% rename from experiments/tibuild-v2/gen/http/artifact/server/server.go rename to experiments/tibuild-v2/internal/service/gen/http/artifact/server/server.go index 4be7accb..dad45b46 100644 --- a/experiments/tibuild-v2/gen/http/artifact/server/server.go +++ b/experiments/tibuild-v2/internal/service/gen/http/artifact/server/server.go @@ -3,7 +3,8 @@ // artifact HTTP server // // Command: -// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/design +// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/internal/service/design -o +// ./service package server @@ -11,7 +12,7 @@ import ( "context" "net/http" - artifact "github.com/PingCAP-QE/ee-apps/tibuild/gen/artifact" + artifact "github.com/PingCAP-QE/ee-apps/tibuild/internal/service/gen/artifact" goahttp "goa.design/goa/v3/http" goa "goa.design/goa/v3/pkg" ) @@ -49,7 +50,7 @@ func New( ) *Server { return &Server{ Mounts: []*MountPoint{ - {"SyncImage", "POST", "/api/artifact/sync-image"}, + {"SyncImage", "POST", "/api/v2/artifact/sync-image"}, }, SyncImage: NewSyncImageHandler(e.SyncImage, mux, decoder, encoder, errhandler, formatter), } @@ -85,7 +86,7 @@ func MountSyncImageHandler(mux goahttp.Muxer, h http.Handler) { h.ServeHTTP(w, r) } } - mux.Handle("POST", "/api/artifact/sync-image", f) + mux.Handle("POST", "/api/v2/artifact/sync-image", f) } // NewSyncImageHandler creates a HTTP handler which loads the HTTP request and diff --git a/experiments/tibuild-v2/gen/http/artifact/server/types.go b/experiments/tibuild-v2/internal/service/gen/http/artifact/server/types.go similarity index 69% rename from experiments/tibuild-v2/gen/http/artifact/server/types.go rename to experiments/tibuild-v2/internal/service/gen/http/artifact/server/types.go index 20443b4b..1046c457 100644 --- a/experiments/tibuild-v2/gen/http/artifact/server/types.go +++ b/experiments/tibuild-v2/internal/service/gen/http/artifact/server/types.go @@ -3,20 +3,21 @@ // artifact HTTP server types // // Command: -// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/design +// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/internal/service/design -o +// ./service package server import ( - artifact "github.com/PingCAP-QE/ee-apps/tibuild/gen/artifact" + artifact "github.com/PingCAP-QE/ee-apps/tibuild/internal/service/gen/artifact" goa "goa.design/goa/v3/pkg" ) // SyncImageRequestBody is the type of the "artifact" service "syncImage" // endpoint HTTP request body. type SyncImageRequestBody struct { - // Image sync to public, only hotfix is accepted right now - ImageSyncRequest *ImageSyncRequestRequestBody `form:"ImageSyncRequest,omitempty" json:"ImageSyncRequest,omitempty" xml:"ImageSyncRequest,omitempty"` + Source *string `form:"source,omitempty" json:"source,omitempty" xml:"source,omitempty"` + Target *string `form:"target,omitempty" json:"target,omitempty" xml:"target,omitempty"` } // SyncImageResponseBody is the type of the "artifact" service "syncImage" @@ -41,12 +42,6 @@ type SyncImageInternalServerErrorResponseBody struct { Message string `form:"message" json:"message" xml:"message"` } -// ImageSyncRequestRequestBody is used to define fields on request body types. -type ImageSyncRequestRequestBody struct { - Source *string `form:"source,omitempty" json:"source,omitempty" xml:"source,omitempty"` - Target *string `form:"target,omitempty" json:"target,omitempty" xml:"target,omitempty"` -} - // NewSyncImageResponseBody builds the HTTP response body from the result of // the "syncImage" endpoint of the "artifact" service. func NewSyncImageResponseBody(res *artifact.ImageSyncRequest) *SyncImageResponseBody { @@ -77,10 +72,13 @@ func NewSyncImageInternalServerErrorResponseBody(res *artifact.HTTPError) *SyncI return body } -// NewSyncImagePayload builds a artifact service syncImage endpoint payload. -func NewSyncImagePayload(body *SyncImageRequestBody) *artifact.SyncImagePayload { - v := &artifact.SyncImagePayload{} - v.ImageSyncRequest = unmarshalImageSyncRequestRequestBodyToArtifactImageSyncRequest(body.ImageSyncRequest) +// NewSyncImageImageSyncRequest builds a artifact service syncImage endpoint +// payload. +func NewSyncImageImageSyncRequest(body *SyncImageRequestBody) *artifact.ImageSyncRequest { + v := &artifact.ImageSyncRequest{ + Source: *body.Source, + Target: *body.Target, + } return v } @@ -88,20 +86,6 @@ func NewSyncImagePayload(body *SyncImageRequestBody) *artifact.SyncImagePayload // ValidateSyncImageRequestBody runs the validations defined on // SyncImageRequestBody func ValidateSyncImageRequestBody(body *SyncImageRequestBody) (err error) { - if body.ImageSyncRequest == nil { - err = goa.MergeErrors(err, goa.MissingFieldError("ImageSyncRequest", "body")) - } - if body.ImageSyncRequest != nil { - if err2 := ValidateImageSyncRequestRequestBody(body.ImageSyncRequest); err2 != nil { - err = goa.MergeErrors(err, err2) - } - } - return -} - -// ValidateImageSyncRequestRequestBody runs the validations defined on -// ImageSyncRequestRequestBody -func ValidateImageSyncRequestRequestBody(body *ImageSyncRequestRequestBody) (err error) { if body.Source == nil { err = goa.MergeErrors(err, goa.MissingFieldError("source", "body")) } diff --git a/experiments/tibuild-v2/internal/service/gen/http/cli/tibuild/cli.go b/experiments/tibuild-v2/internal/service/gen/http/cli/tibuild/cli.go new file mode 100644 index 00000000..6960bcd4 --- /dev/null +++ b/experiments/tibuild-v2/internal/service/gen/http/cli/tibuild/cli.go @@ -0,0 +1,677 @@ +// Code generated by goa v3.20.0, DO NOT EDIT. +// +// tibuild HTTP client CLI support package +// +// Command: +// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/internal/service/design -o +// ./service + +package cli + +import ( + "flag" + "fmt" + "net/http" + "os" + + artifactc "github.com/PingCAP-QE/ee-apps/tibuild/internal/service/gen/http/artifact/client" + devbuildc "github.com/PingCAP-QE/ee-apps/tibuild/internal/service/gen/http/devbuild/client" + goahttp "goa.design/goa/v3/http" + goa "goa.design/goa/v3/pkg" +) + +// UsageCommands returns the set of commands and sub-commands using the format +// +// command (subcommand1|subcommand2|...) +func UsageCommands() string { + return `artifact sync-image +devbuild (list|create|get|update|rerun) +` +} + +// UsageExamples produces an example of a valid invocation of the CLI tool. +func UsageExamples() string { + return os.Args[0] + ` artifact sync-image --body '{ + "source": "Ut alias adipisci est consequatur quo.", + "target": "Dolore et et quis." + }'` + "\n" + + os.Args[0] + ` devbuild list --body '{ + "direction": "asc" + }' --page 5781465023224679501 --page-size 6693278566002394271 --hotfix true --sort "updated_at" --created-by "Sed rerum."` + "\n" + + "" +} + +// ParseEndpoint returns the endpoint and payload as specified on the command +// line. +func ParseEndpoint( + scheme, host string, + doer goahttp.Doer, + enc func(*http.Request) goahttp.Encoder, + dec func(*http.Response) goahttp.Decoder, + restore bool, +) (goa.Endpoint, any, error) { + var ( + artifactFlags = flag.NewFlagSet("artifact", flag.ContinueOnError) + + artifactSyncImageFlags = flag.NewFlagSet("sync-image", flag.ExitOnError) + artifactSyncImageBodyFlag = artifactSyncImageFlags.String("body", "REQUIRED", "") + + devbuildFlags = flag.NewFlagSet("devbuild", flag.ContinueOnError) + + devbuildListFlags = flag.NewFlagSet("list", flag.ExitOnError) + devbuildListBodyFlag = devbuildListFlags.String("body", "REQUIRED", "") + devbuildListPageFlag = devbuildListFlags.String("page", "1", "") + devbuildListPageSizeFlag = devbuildListFlags.String("page-size", "30", "") + devbuildListHotfixFlag = devbuildListFlags.String("hotfix", "", "") + devbuildListSortFlag = devbuildListFlags.String("sort", "created_at", "") + devbuildListCreatedByFlag = devbuildListFlags.String("created-by", "", "") + + devbuildCreateFlags = flag.NewFlagSet("create", flag.ExitOnError) + devbuildCreateBodyFlag = devbuildCreateFlags.String("body", "REQUIRED", "") + devbuildCreateDryrunFlag = devbuildCreateFlags.String("dryrun", "", "") + + devbuildGetFlags = flag.NewFlagSet("get", flag.ExitOnError) + devbuildGetIDFlag = devbuildGetFlags.String("id", "REQUIRED", "ID of build") + devbuildGetSyncFlag = devbuildGetFlags.String("sync", "", "") + + devbuildUpdateFlags = flag.NewFlagSet("update", flag.ExitOnError) + devbuildUpdateBodyFlag = devbuildUpdateFlags.String("body", "REQUIRED", "") + devbuildUpdateIDFlag = devbuildUpdateFlags.String("id", "REQUIRED", "ID of build") + devbuildUpdateDryrunFlag = devbuildUpdateFlags.String("dryrun", "", "") + + devbuildRerunFlags = flag.NewFlagSet("rerun", flag.ExitOnError) + devbuildRerunIDFlag = devbuildRerunFlags.String("id", "REQUIRED", "ID of build") + devbuildRerunDryrunFlag = devbuildRerunFlags.String("dryrun", "", "") + ) + artifactFlags.Usage = artifactUsage + artifactSyncImageFlags.Usage = artifactSyncImageUsage + + devbuildFlags.Usage = devbuildUsage + devbuildListFlags.Usage = devbuildListUsage + devbuildCreateFlags.Usage = devbuildCreateUsage + devbuildGetFlags.Usage = devbuildGetUsage + devbuildUpdateFlags.Usage = devbuildUpdateUsage + devbuildRerunFlags.Usage = devbuildRerunUsage + + if err := flag.CommandLine.Parse(os.Args[1:]); err != nil { + return nil, nil, err + } + + if flag.NArg() < 2 { // two non flag args are required: SERVICE and ENDPOINT (aka COMMAND) + return nil, nil, fmt.Errorf("not enough arguments") + } + + var ( + svcn string + svcf *flag.FlagSet + ) + { + svcn = flag.Arg(0) + switch svcn { + case "artifact": + svcf = artifactFlags + case "devbuild": + svcf = devbuildFlags + default: + return nil, nil, fmt.Errorf("unknown service %q", svcn) + } + } + if err := svcf.Parse(flag.Args()[1:]); err != nil { + return nil, nil, err + } + + var ( + epn string + epf *flag.FlagSet + ) + { + epn = svcf.Arg(0) + switch svcn { + case "artifact": + switch epn { + case "sync-image": + epf = artifactSyncImageFlags + + } + + case "devbuild": + switch epn { + case "list": + epf = devbuildListFlags + + case "create": + epf = devbuildCreateFlags + + case "get": + epf = devbuildGetFlags + + case "update": + epf = devbuildUpdateFlags + + case "rerun": + epf = devbuildRerunFlags + + } + + } + } + if epf == nil { + return nil, nil, fmt.Errorf("unknown %q endpoint %q", svcn, epn) + } + + // Parse endpoint flags if any + if svcf.NArg() > 1 { + if err := epf.Parse(svcf.Args()[1:]); err != nil { + return nil, nil, err + } + } + + var ( + data any + endpoint goa.Endpoint + err error + ) + { + switch svcn { + case "artifact": + c := artifactc.NewClient(scheme, host, doer, enc, dec, restore) + switch epn { + case "sync-image": + endpoint = c.SyncImage() + data, err = artifactc.BuildSyncImagePayload(*artifactSyncImageBodyFlag) + } + case "devbuild": + c := devbuildc.NewClient(scheme, host, doer, enc, dec, restore) + switch epn { + case "list": + endpoint = c.List() + data, err = devbuildc.BuildListPayload(*devbuildListBodyFlag, *devbuildListPageFlag, *devbuildListPageSizeFlag, *devbuildListHotfixFlag, *devbuildListSortFlag, *devbuildListCreatedByFlag) + case "create": + endpoint = c.Create() + data, err = devbuildc.BuildCreatePayload(*devbuildCreateBodyFlag, *devbuildCreateDryrunFlag) + case "get": + endpoint = c.Get() + data, err = devbuildc.BuildGetPayload(*devbuildGetIDFlag, *devbuildGetSyncFlag) + case "update": + endpoint = c.Update() + data, err = devbuildc.BuildUpdatePayload(*devbuildUpdateBodyFlag, *devbuildUpdateIDFlag, *devbuildUpdateDryrunFlag) + case "rerun": + endpoint = c.Rerun() + data, err = devbuildc.BuildRerunPayload(*devbuildRerunIDFlag, *devbuildRerunDryrunFlag) + } + } + } + if err != nil { + return nil, nil, err + } + + return endpoint, data, nil +} + +// artifactUsage displays the usage of the artifact command and its subcommands. +func artifactUsage() { + fmt.Fprintf(os.Stderr, `The artifact service provides operations to manage artifacts. +Usage: + %[1]s [globalflags] artifact COMMAND [flags] + +COMMAND: + sync-image: Sync hotfix image to dockerhub + +Additional help: + %[1]s artifact COMMAND --help +`, os.Args[0]) +} +func artifactSyncImageUsage() { + fmt.Fprintf(os.Stderr, `%[1]s [flags] artifact sync-image -body JSON + +Sync hotfix image to dockerhub + -body JSON: + +Example: + %[1]s artifact sync-image --body '{ + "source": "Ut alias adipisci est consequatur quo.", + "target": "Dolore et et quis." + }' +`, os.Args[0]) +} + +// devbuildUsage displays the usage of the devbuild command and its subcommands. +func devbuildUsage() { + fmt.Fprintf(os.Stderr, `The devbuild service provides operations to manage dev builds. +Usage: + %[1]s [globalflags] devbuild COMMAND [flags] + +COMMAND: + list: List devbuild with pagination support + create: Create and trigger devbuild + get: Get devbuild + update: Update devbuild status + rerun: Rerun devbuild + +Additional help: + %[1]s devbuild COMMAND --help +`, os.Args[0]) +} +func devbuildListUsage() { + fmt.Fprintf(os.Stderr, `%[1]s [flags] devbuild list -body JSON -page INT -page-size INT -hotfix BOOL -sort STRING -created-by STRING + +List devbuild with pagination support + -body JSON: + -page INT: + -page-size INT: + -hotfix BOOL: + -sort STRING: + -created-by STRING: + +Example: + %[1]s devbuild list --body '{ + "direction": "asc" + }' --page 5781465023224679501 --page-size 6693278566002394271 --hotfix true --sort "updated_at" --created-by "Sed rerum." +`, os.Args[0]) +} + +func devbuildCreateUsage() { + fmt.Fprintf(os.Stderr, `%[1]s [flags] devbuild create -body JSON -dryrun BOOL + +Create and trigger devbuild + -body JSON: + -dryrun BOOL: + +Example: + %[1]s devbuild create --body '{ + "created_by": "david_stehr@koch.name", + "request": { + "build_env": "Voluptate doloribus architecto numquam est.", + "builder_img": "Neque doloremque.", + "edition": "enterprise", + "features": "Commodi dolorum.", + "gitRef": "Et facere magnam velit optio est.", + "githubRepo": "Doloribus nisi corporis nihil soluta.", + "is_hotfix": true, + "is_push_gcr": false, + "pipeline_engine": "tekton", + "plugin_git_ref": "Qui necessitatibus possimus ab quos facere.", + "product": "tidb", + "productBaseImg": "Voluptatem rem earum aut.", + "productDockerfile": "Nulla aut natus totam esse maxime aliquid.", + "targetImg": "Numquam at illo voluptas dolor atque.", + "version": "Beatae sunt nesciunt amet autem." + } + }' --dryrun true +`, os.Args[0]) +} + +func devbuildGetUsage() { + fmt.Fprintf(os.Stderr, `%[1]s [flags] devbuild get -id INT -sync BOOL + +Get devbuild + -id INT: ID of build + -sync BOOL: + +Example: + %[1]s devbuild get --id 1 --sync true +`, os.Args[0]) +} + +func devbuildUpdateUsage() { + fmt.Fprintf(os.Stderr, `%[1]s [flags] devbuild update -body JSON -id INT -dryrun BOOL + +Update devbuild status + -body JSON: + -id INT: ID of build + -dryrun BOOL: + +Example: + %[1]s devbuild update --body '{ + "DevBuild": { + "id": 8425332152695240675, + "meta": { + "created_at": "1982-06-14T15:45:52Z", + "created_by": "khalil_steuber@rippin.org", + "updated_at": "1994-05-27T04:49:34Z" + }, + "spec": { + "build_env": "Eum sit.", + "builder_img": "Suscipit et.", + "edition": "enterprise", + "features": "Magni suscipit eum vel officiis quasi sit.", + "gitHash": "Ex amet est nemo harum voluptas.", + "gitRef": "Eaque exercitationem et.", + "githubRepo": "Blanditiis velit voluptatem exercitationem.", + "is_hotfix": true, + "is_push_gcr": true, + "pipeline_engine": "tekton", + "plugin_git_ref": "Error officiis impedit quaerat consectetur voluptas ea.", + "product": "br", + "productBaseImg": "Numquam explicabo quod quidem perspiciatis.", + "productDockerfile": "Dolor laudantium dolores saepe nihil voluptas id.", + "targetImg": "Quasi quasi error laboriosam qui.", + "version": "Dolorum est nisi voluptatem et harum quae." + }, + "status": { + "buildReport": { + "binaries": [ + { + "component": "Qui tempora quos quae velit sint quia.", + "ociFile": { + "file": "Commodi eius et ad ut.", + "repo": "Dolor deserunt atque exercitationem non placeat.", + "tag": "Possimus libero." + }, + "platform": "Ab quos esse delectus ea rem.", + "sha256OciFile": { + "file": "Commodi eius et ad ut.", + "repo": "Dolor deserunt atque exercitationem non placeat.", + "tag": "Possimus libero." + }, + "sha256URL": "Voluptatem ratione hic quae tempora ratione.", + "url": "Quos eaque rerum expedita perspiciatis." + }, + { + "component": "Qui tempora quos quae velit sint quia.", + "ociFile": { + "file": "Commodi eius et ad ut.", + "repo": "Dolor deserunt atque exercitationem non placeat.", + "tag": "Possimus libero." + }, + "platform": "Ab quos esse delectus ea rem.", + "sha256OciFile": { + "file": "Commodi eius et ad ut.", + "repo": "Dolor deserunt atque exercitationem non placeat.", + "tag": "Possimus libero." + }, + "sha256URL": "Voluptatem ratione hic quae tempora ratione.", + "url": "Quos eaque rerum expedita perspiciatis." + }, + { + "component": "Qui tempora quos quae velit sint quia.", + "ociFile": { + "file": "Commodi eius et ad ut.", + "repo": "Dolor deserunt atque exercitationem non placeat.", + "tag": "Possimus libero." + }, + "platform": "Ab quos esse delectus ea rem.", + "sha256OciFile": { + "file": "Commodi eius et ad ut.", + "repo": "Dolor deserunt atque exercitationem non placeat.", + "tag": "Possimus libero." + }, + "sha256URL": "Voluptatem ratione hic quae tempora ratione.", + "url": "Quos eaque rerum expedita perspiciatis." + } + ], + "gitHash": "Dolore ipsam non.", + "images": [ + { + "platform": "Suscipit exercitationem assumenda.", + "url": "In voluptas omnis." + }, + { + "platform": "Suscipit exercitationem assumenda.", + "url": "In voluptas omnis." + } + ], + "pluginGitHash": "Non eligendi eum.", + "printedVersion": "Asperiores sit consequatur repudiandae voluptas sit." + }, + "errMsg": "Illum perferendis.", + "pipelineBuildID": 7878572798948134575, + "pipelineEndAt": "Distinctio minima molestiae quis.", + "pipelineStartAt": "Tempora earum quam est architecto.", + "pipelineViewURL": "Quia delectus qui minima.", + "pipelineViewURLs": [ + "Aut modi voluptas aut eveniet.", + "Esse aut.", + "Delectus dolore libero aut.", + "Corrupti autem iste." + ], + "status": "FAILURE", + "tektonStatus": { + "pipelines": [ + { + "endAt": "Animi at sequi error.", + "gitHash": "Aut molestiae.", + "images": [ + { + "platform": "Suscipit exercitationem assumenda.", + "url": "In voluptas omnis." + }, + { + "platform": "Suscipit exercitationem assumenda.", + "url": "In voluptas omnis." + }, + { + "platform": "Suscipit exercitationem assumenda.", + "url": "In voluptas omnis." + } + ], + "name": "Occaecati omnis sunt a perspiciatis ratione.", + "ociArtifacts": [ + { + "files": [ + "Eius quae quisquam itaque.", + "Debitis dolore explicabo repellendus et error provident." + ], + "repo": "Quo dolor consequatur est incidunt labore non.", + "tag": "Minus quis qui magnam." + }, + { + "files": [ + "Eius quae quisquam itaque.", + "Debitis dolore explicabo repellendus et error provident." + ], + "repo": "Quo dolor consequatur est incidunt labore non.", + "tag": "Minus quis qui magnam." + }, + { + "files": [ + "Eius quae quisquam itaque.", + "Debitis dolore explicabo repellendus et error provident." + ], + "repo": "Quo dolor consequatur est incidunt labore non.", + "tag": "Minus quis qui magnam." + }, + { + "files": [ + "Eius quae quisquam itaque.", + "Debitis dolore explicabo repellendus et error provident." + ], + "repo": "Quo dolor consequatur est incidunt labore non.", + "tag": "Minus quis qui magnam." + } + ], + "platform": "Explicabo id eum quae illum vitae necessitatibus.", + "startAt": "Accusantium nostrum quaerat necessitatibus distinctio nobis.", + "status": "PROCESSING", + "url": "Vero sunt culpa molestiae sint ut." + }, + { + "endAt": "Animi at sequi error.", + "gitHash": "Aut molestiae.", + "images": [ + { + "platform": "Suscipit exercitationem assumenda.", + "url": "In voluptas omnis." + }, + { + "platform": "Suscipit exercitationem assumenda.", + "url": "In voluptas omnis." + }, + { + "platform": "Suscipit exercitationem assumenda.", + "url": "In voluptas omnis." + } + ], + "name": "Occaecati omnis sunt a perspiciatis ratione.", + "ociArtifacts": [ + { + "files": [ + "Eius quae quisquam itaque.", + "Debitis dolore explicabo repellendus et error provident." + ], + "repo": "Quo dolor consequatur est incidunt labore non.", + "tag": "Minus quis qui magnam." + }, + { + "files": [ + "Eius quae quisquam itaque.", + "Debitis dolore explicabo repellendus et error provident." + ], + "repo": "Quo dolor consequatur est incidunt labore non.", + "tag": "Minus quis qui magnam." + }, + { + "files": [ + "Eius quae quisquam itaque.", + "Debitis dolore explicabo repellendus et error provident." + ], + "repo": "Quo dolor consequatur est incidunt labore non.", + "tag": "Minus quis qui magnam." + }, + { + "files": [ + "Eius quae quisquam itaque.", + "Debitis dolore explicabo repellendus et error provident." + ], + "repo": "Quo dolor consequatur est incidunt labore non.", + "tag": "Minus quis qui magnam." + } + ], + "platform": "Explicabo id eum quae illum vitae necessitatibus.", + "startAt": "Accusantium nostrum quaerat necessitatibus distinctio nobis.", + "status": "PROCESSING", + "url": "Vero sunt culpa molestiae sint ut." + }, + { + "endAt": "Animi at sequi error.", + "gitHash": "Aut molestiae.", + "images": [ + { + "platform": "Suscipit exercitationem assumenda.", + "url": "In voluptas omnis." + }, + { + "platform": "Suscipit exercitationem assumenda.", + "url": "In voluptas omnis." + }, + { + "platform": "Suscipit exercitationem assumenda.", + "url": "In voluptas omnis." + } + ], + "name": "Occaecati omnis sunt a perspiciatis ratione.", + "ociArtifacts": [ + { + "files": [ + "Eius quae quisquam itaque.", + "Debitis dolore explicabo repellendus et error provident." + ], + "repo": "Quo dolor consequatur est incidunt labore non.", + "tag": "Minus quis qui magnam." + }, + { + "files": [ + "Eius quae quisquam itaque.", + "Debitis dolore explicabo repellendus et error provident." + ], + "repo": "Quo dolor consequatur est incidunt labore non.", + "tag": "Minus quis qui magnam." + }, + { + "files": [ + "Eius quae quisquam itaque.", + "Debitis dolore explicabo repellendus et error provident." + ], + "repo": "Quo dolor consequatur est incidunt labore non.", + "tag": "Minus quis qui magnam." + }, + { + "files": [ + "Eius quae quisquam itaque.", + "Debitis dolore explicabo repellendus et error provident." + ], + "repo": "Quo dolor consequatur est incidunt labore non.", + "tag": "Minus quis qui magnam." + } + ], + "platform": "Explicabo id eum quae illum vitae necessitatibus.", + "startAt": "Accusantium nostrum quaerat necessitatibus distinctio nobis.", + "status": "PROCESSING", + "url": "Vero sunt culpa molestiae sint ut." + }, + { + "endAt": "Animi at sequi error.", + "gitHash": "Aut molestiae.", + "images": [ + { + "platform": "Suscipit exercitationem assumenda.", + "url": "In voluptas omnis." + }, + { + "platform": "Suscipit exercitationem assumenda.", + "url": "In voluptas omnis." + }, + { + "platform": "Suscipit exercitationem assumenda.", + "url": "In voluptas omnis." + } + ], + "name": "Occaecati omnis sunt a perspiciatis ratione.", + "ociArtifacts": [ + { + "files": [ + "Eius quae quisquam itaque.", + "Debitis dolore explicabo repellendus et error provident." + ], + "repo": "Quo dolor consequatur est incidunt labore non.", + "tag": "Minus quis qui magnam." + }, + { + "files": [ + "Eius quae quisquam itaque.", + "Debitis dolore explicabo repellendus et error provident." + ], + "repo": "Quo dolor consequatur est incidunt labore non.", + "tag": "Minus quis qui magnam." + }, + { + "files": [ + "Eius quae quisquam itaque.", + "Debitis dolore explicabo repellendus et error provident." + ], + "repo": "Quo dolor consequatur est incidunt labore non.", + "tag": "Minus quis qui magnam." + }, + { + "files": [ + "Eius quae quisquam itaque.", + "Debitis dolore explicabo repellendus et error provident." + ], + "repo": "Quo dolor consequatur est incidunt labore non.", + "tag": "Minus quis qui magnam." + } + ], + "platform": "Explicabo id eum quae illum vitae necessitatibus.", + "startAt": "Accusantium nostrum quaerat necessitatibus distinctio nobis.", + "status": "PROCESSING", + "url": "Vero sunt culpa molestiae sint ut." + } + ] + } + } + } + }' --id 1 --dryrun false +`, os.Args[0]) +} + +func devbuildRerunUsage() { + fmt.Fprintf(os.Stderr, `%[1]s [flags] devbuild rerun -id INT -dryrun BOOL + +Rerun devbuild + -id INT: ID of build + -dryrun BOOL: + +Example: + %[1]s devbuild rerun --id 1 --dryrun true +`, os.Args[0]) +} diff --git a/experiments/tibuild-v2/internal/service/gen/http/devbuild/client/cli.go b/experiments/tibuild-v2/internal/service/gen/http/devbuild/client/cli.go new file mode 100644 index 00000000..4b8e08ff --- /dev/null +++ b/experiments/tibuild-v2/internal/service/gen/http/devbuild/client/cli.go @@ -0,0 +1,247 @@ +// Code generated by goa v3.20.0, DO NOT EDIT. +// +// devbuild HTTP client CLI support package +// +// Command: +// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/internal/service/design -o +// ./service + +package client + +import ( + "encoding/json" + "fmt" + "strconv" + + devbuild "github.com/PingCAP-QE/ee-apps/tibuild/internal/service/gen/devbuild" + goa "goa.design/goa/v3/pkg" +) + +// BuildListPayload builds the payload for the devbuild list endpoint from CLI +// flags. +func BuildListPayload(devbuildListBody string, devbuildListPage string, devbuildListPageSize string, devbuildListHotfix string, devbuildListSort string, devbuildListCreatedBy string) (*devbuild.ListPayload, error) { + var err error + var body ListRequestBody + { + err = json.Unmarshal([]byte(devbuildListBody), &body) + if err != nil { + return nil, fmt.Errorf("invalid JSON for body, \nerror: %s, \nexample of valid JSON:\n%s", err, "'{\n \"direction\": \"asc\"\n }'") + } + } + var page int + { + if devbuildListPage != "" { + var v int64 + v, err = strconv.ParseInt(devbuildListPage, 10, strconv.IntSize) + page = int(v) + if err != nil { + return nil, fmt.Errorf("invalid value for page, must be INT") + } + } + } + var pageSize int + { + if devbuildListPageSize != "" { + var v int64 + v, err = strconv.ParseInt(devbuildListPageSize, 10, strconv.IntSize) + pageSize = int(v) + if err != nil { + return nil, fmt.Errorf("invalid value for pageSize, must be INT") + } + } + } + var hotfix bool + { + if devbuildListHotfix != "" { + hotfix, err = strconv.ParseBool(devbuildListHotfix) + if err != nil { + return nil, fmt.Errorf("invalid value for hotfix, must be BOOL") + } + } + } + var sort string + { + if devbuildListSort != "" { + sort = devbuildListSort + if !(sort == "created_at" || sort == "updated_at") { + err = goa.MergeErrors(err, goa.InvalidEnumValueError("sort", sort, []any{"created_at", "updated_at"})) + } + if err != nil { + return nil, err + } + } + } + var createdBy *string + { + if devbuildListCreatedBy != "" { + createdBy = &devbuildListCreatedBy + } + } + v := &devbuild.ListPayload{ + Direction: body.Direction, + } + { + var zero string + if v.Direction == zero { + v.Direction = "desc" + } + } + v.Page = page + v.PageSize = pageSize + v.Hotfix = hotfix + v.Sort = sort + v.CreatedBy = createdBy + + return v, nil +} + +// BuildCreatePayload builds the payload for the devbuild create endpoint from +// CLI flags. +func BuildCreatePayload(devbuildCreateBody string, devbuildCreateDryrun string) (*devbuild.CreatePayload, error) { + var err error + var body CreateRequestBody + { + err = json.Unmarshal([]byte(devbuildCreateBody), &body) + if err != nil { + return nil, fmt.Errorf("invalid JSON for body, \nerror: %s, \nexample of valid JSON:\n%s", err, "'{\n \"created_by\": \"david_stehr@koch.name\",\n \"request\": {\n \"build_env\": \"Voluptate doloribus architecto numquam est.\",\n \"builder_img\": \"Neque doloremque.\",\n \"edition\": \"enterprise\",\n \"features\": \"Commodi dolorum.\",\n \"gitRef\": \"Et facere magnam velit optio est.\",\n \"githubRepo\": \"Doloribus nisi corporis nihil soluta.\",\n \"is_hotfix\": true,\n \"is_push_gcr\": false,\n \"pipeline_engine\": \"tekton\",\n \"plugin_git_ref\": \"Qui necessitatibus possimus ab quos facere.\",\n \"product\": \"tidb\",\n \"productBaseImg\": \"Voluptatem rem earum aut.\",\n \"productDockerfile\": \"Nulla aut natus totam esse maxime aliquid.\",\n \"targetImg\": \"Numquam at illo voluptas dolor atque.\",\n \"version\": \"Beatae sunt nesciunt amet autem.\"\n }\n }'") + } + if body.Request == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("request", "body")) + } + err = goa.MergeErrors(err, goa.ValidateFormat("body.created_by", body.CreatedBy, goa.FormatEmail)) + if body.Request != nil { + if err2 := ValidateDevBuildRequestRequestBody(body.Request); err2 != nil { + err = goa.MergeErrors(err, err2) + } + } + if err != nil { + return nil, err + } + } + var dryrun bool + { + if devbuildCreateDryrun != "" { + dryrun, err = strconv.ParseBool(devbuildCreateDryrun) + if err != nil { + return nil, fmt.Errorf("invalid value for dryrun, must be BOOL") + } + } + } + v := &devbuild.CreatePayload{ + CreatedBy: body.CreatedBy, + } + if body.Request != nil { + v.Request = marshalDevBuildRequestRequestBodyToDevbuildDevBuildRequest(body.Request) + } + v.Dryrun = dryrun + + return v, nil +} + +// BuildGetPayload builds the payload for the devbuild get endpoint from CLI +// flags. +func BuildGetPayload(devbuildGetID string, devbuildGetSync string) (*devbuild.GetPayload, error) { + var err error + var id int + { + var v int64 + v, err = strconv.ParseInt(devbuildGetID, 10, strconv.IntSize) + id = int(v) + if err != nil { + return nil, fmt.Errorf("invalid value for id, must be INT") + } + } + var sync bool + { + if devbuildGetSync != "" { + sync, err = strconv.ParseBool(devbuildGetSync) + if err != nil { + return nil, fmt.Errorf("invalid value for sync, must be BOOL") + } + } + } + v := &devbuild.GetPayload{} + v.ID = id + v.Sync = sync + + return v, nil +} + +// BuildUpdatePayload builds the payload for the devbuild update endpoint from +// CLI flags. +func BuildUpdatePayload(devbuildUpdateBody string, devbuildUpdateID string, devbuildUpdateDryrun string) (*devbuild.UpdatePayload, error) { + var err error + var body UpdateRequestBody + { + err = json.Unmarshal([]byte(devbuildUpdateBody), &body) + if err != nil { + return nil, fmt.Errorf("invalid JSON for body, \nerror: %s, \nexample of valid JSON:\n%s", err, "'{\n \"DevBuild\": {\n \"id\": 8425332152695240675,\n \"meta\": {\n \"created_at\": \"1982-06-14T15:45:52Z\",\n \"created_by\": \"khalil_steuber@rippin.org\",\n \"updated_at\": \"1994-05-27T04:49:34Z\"\n },\n \"spec\": {\n \"build_env\": \"Eum sit.\",\n \"builder_img\": \"Suscipit et.\",\n \"edition\": \"enterprise\",\n \"features\": \"Magni suscipit eum vel officiis quasi sit.\",\n \"gitHash\": \"Ex amet est nemo harum voluptas.\",\n \"gitRef\": \"Eaque exercitationem et.\",\n \"githubRepo\": \"Blanditiis velit voluptatem exercitationem.\",\n \"is_hotfix\": true,\n \"is_push_gcr\": true,\n \"pipeline_engine\": \"tekton\",\n \"plugin_git_ref\": \"Error officiis impedit quaerat consectetur voluptas ea.\",\n \"product\": \"br\",\n \"productBaseImg\": \"Numquam explicabo quod quidem perspiciatis.\",\n \"productDockerfile\": \"Dolor laudantium dolores saepe nihil voluptas id.\",\n \"targetImg\": \"Quasi quasi error laboriosam qui.\",\n \"version\": \"Dolorum est nisi voluptatem et harum quae.\"\n },\n \"status\": {\n \"buildReport\": {\n \"binaries\": [\n {\n \"component\": \"Qui tempora quos quae velit sint quia.\",\n \"ociFile\": {\n \"file\": \"Commodi eius et ad ut.\",\n \"repo\": \"Dolor deserunt atque exercitationem non placeat.\",\n \"tag\": \"Possimus libero.\"\n },\n \"platform\": \"Ab quos esse delectus ea rem.\",\n \"sha256OciFile\": {\n \"file\": \"Commodi eius et ad ut.\",\n \"repo\": \"Dolor deserunt atque exercitationem non placeat.\",\n \"tag\": \"Possimus libero.\"\n },\n \"sha256URL\": \"Voluptatem ratione hic quae tempora ratione.\",\n \"url\": \"Quos eaque rerum expedita perspiciatis.\"\n },\n {\n \"component\": \"Qui tempora quos quae velit sint quia.\",\n \"ociFile\": {\n \"file\": \"Commodi eius et ad ut.\",\n \"repo\": \"Dolor deserunt atque exercitationem non placeat.\",\n \"tag\": \"Possimus libero.\"\n },\n \"platform\": \"Ab quos esse delectus ea rem.\",\n \"sha256OciFile\": {\n \"file\": \"Commodi eius et ad ut.\",\n \"repo\": \"Dolor deserunt atque exercitationem non placeat.\",\n \"tag\": \"Possimus libero.\"\n },\n \"sha256URL\": \"Voluptatem ratione hic quae tempora ratione.\",\n \"url\": \"Quos eaque rerum expedita perspiciatis.\"\n },\n {\n \"component\": \"Qui tempora quos quae velit sint quia.\",\n \"ociFile\": {\n \"file\": \"Commodi eius et ad ut.\",\n \"repo\": \"Dolor deserunt atque exercitationem non placeat.\",\n \"tag\": \"Possimus libero.\"\n },\n \"platform\": \"Ab quos esse delectus ea rem.\",\n \"sha256OciFile\": {\n \"file\": \"Commodi eius et ad ut.\",\n \"repo\": \"Dolor deserunt atque exercitationem non placeat.\",\n \"tag\": \"Possimus libero.\"\n },\n \"sha256URL\": \"Voluptatem ratione hic quae tempora ratione.\",\n \"url\": \"Quos eaque rerum expedita perspiciatis.\"\n }\n ],\n \"gitHash\": \"Dolore ipsam non.\",\n \"images\": [\n {\n \"platform\": \"Suscipit exercitationem assumenda.\",\n \"url\": \"In voluptas omnis.\"\n },\n {\n \"platform\": \"Suscipit exercitationem assumenda.\",\n \"url\": \"In voluptas omnis.\"\n }\n ],\n \"pluginGitHash\": \"Non eligendi eum.\",\n \"printedVersion\": \"Asperiores sit consequatur repudiandae voluptas sit.\"\n },\n \"errMsg\": \"Illum perferendis.\",\n \"pipelineBuildID\": 7878572798948134575,\n \"pipelineEndAt\": \"Distinctio minima molestiae quis.\",\n \"pipelineStartAt\": \"Tempora earum quam est architecto.\",\n \"pipelineViewURL\": \"Quia delectus qui minima.\",\n \"pipelineViewURLs\": [\n \"Aut modi voluptas aut eveniet.\",\n \"Esse aut.\",\n \"Delectus dolore libero aut.\",\n \"Corrupti autem iste.\"\n ],\n \"status\": \"FAILURE\",\n \"tektonStatus\": {\n \"pipelines\": [\n {\n \"endAt\": \"Animi at sequi error.\",\n \"gitHash\": \"Aut molestiae.\",\n \"images\": [\n {\n \"platform\": \"Suscipit exercitationem assumenda.\",\n \"url\": \"In voluptas omnis.\"\n },\n {\n \"platform\": \"Suscipit exercitationem assumenda.\",\n \"url\": \"In voluptas omnis.\"\n },\n {\n \"platform\": \"Suscipit exercitationem assumenda.\",\n \"url\": \"In voluptas omnis.\"\n }\n ],\n \"name\": \"Occaecati omnis sunt a perspiciatis ratione.\",\n \"ociArtifacts\": [\n {\n \"files\": [\n \"Eius quae quisquam itaque.\",\n \"Debitis dolore explicabo repellendus et error provident.\"\n ],\n \"repo\": \"Quo dolor consequatur est incidunt labore non.\",\n \"tag\": \"Minus quis qui magnam.\"\n },\n {\n \"files\": [\n \"Eius quae quisquam itaque.\",\n \"Debitis dolore explicabo repellendus et error provident.\"\n ],\n \"repo\": \"Quo dolor consequatur est incidunt labore non.\",\n \"tag\": \"Minus quis qui magnam.\"\n },\n {\n \"files\": [\n \"Eius quae quisquam itaque.\",\n \"Debitis dolore explicabo repellendus et error provident.\"\n ],\n \"repo\": \"Quo dolor consequatur est incidunt labore non.\",\n \"tag\": \"Minus quis qui magnam.\"\n },\n {\n \"files\": [\n \"Eius quae quisquam itaque.\",\n \"Debitis dolore explicabo repellendus et error provident.\"\n ],\n \"repo\": \"Quo dolor consequatur est incidunt labore non.\",\n \"tag\": \"Minus quis qui magnam.\"\n }\n ],\n \"platform\": \"Explicabo id eum quae illum vitae necessitatibus.\",\n \"startAt\": \"Accusantium nostrum quaerat necessitatibus distinctio nobis.\",\n \"status\": \"PROCESSING\",\n \"url\": \"Vero sunt culpa molestiae sint ut.\"\n },\n {\n \"endAt\": \"Animi at sequi error.\",\n \"gitHash\": \"Aut molestiae.\",\n \"images\": [\n {\n \"platform\": \"Suscipit exercitationem assumenda.\",\n \"url\": \"In voluptas omnis.\"\n },\n {\n \"platform\": \"Suscipit exercitationem assumenda.\",\n \"url\": \"In voluptas omnis.\"\n },\n {\n \"platform\": \"Suscipit exercitationem assumenda.\",\n \"url\": \"In voluptas omnis.\"\n }\n ],\n \"name\": \"Occaecati omnis sunt a perspiciatis ratione.\",\n \"ociArtifacts\": [\n {\n \"files\": [\n \"Eius quae quisquam itaque.\",\n \"Debitis dolore explicabo repellendus et error provident.\"\n ],\n \"repo\": \"Quo dolor consequatur est incidunt labore non.\",\n \"tag\": \"Minus quis qui magnam.\"\n },\n {\n \"files\": [\n \"Eius quae quisquam itaque.\",\n \"Debitis dolore explicabo repellendus et error provident.\"\n ],\n \"repo\": \"Quo dolor consequatur est incidunt labore non.\",\n \"tag\": \"Minus quis qui magnam.\"\n },\n {\n \"files\": [\n \"Eius quae quisquam itaque.\",\n \"Debitis dolore explicabo repellendus et error provident.\"\n ],\n \"repo\": \"Quo dolor consequatur est incidunt labore non.\",\n \"tag\": \"Minus quis qui magnam.\"\n },\n {\n \"files\": [\n \"Eius quae quisquam itaque.\",\n \"Debitis dolore explicabo repellendus et error provident.\"\n ],\n \"repo\": \"Quo dolor consequatur est incidunt labore non.\",\n \"tag\": \"Minus quis qui magnam.\"\n }\n ],\n \"platform\": \"Explicabo id eum quae illum vitae necessitatibus.\",\n \"startAt\": \"Accusantium nostrum quaerat necessitatibus distinctio nobis.\",\n \"status\": \"PROCESSING\",\n \"url\": \"Vero sunt culpa molestiae sint ut.\"\n },\n {\n \"endAt\": \"Animi at sequi error.\",\n \"gitHash\": \"Aut molestiae.\",\n \"images\": [\n {\n \"platform\": \"Suscipit exercitationem assumenda.\",\n \"url\": \"In voluptas omnis.\"\n },\n {\n \"platform\": \"Suscipit exercitationem assumenda.\",\n \"url\": \"In voluptas omnis.\"\n },\n {\n \"platform\": \"Suscipit exercitationem assumenda.\",\n \"url\": \"In voluptas omnis.\"\n }\n ],\n \"name\": \"Occaecati omnis sunt a perspiciatis ratione.\",\n \"ociArtifacts\": [\n {\n \"files\": [\n \"Eius quae quisquam itaque.\",\n \"Debitis dolore explicabo repellendus et error provident.\"\n ],\n \"repo\": \"Quo dolor consequatur est incidunt labore non.\",\n \"tag\": \"Minus quis qui magnam.\"\n },\n {\n \"files\": [\n \"Eius quae quisquam itaque.\",\n \"Debitis dolore explicabo repellendus et error provident.\"\n ],\n \"repo\": \"Quo dolor consequatur est incidunt labore non.\",\n \"tag\": \"Minus quis qui magnam.\"\n },\n {\n \"files\": [\n \"Eius quae quisquam itaque.\",\n \"Debitis dolore explicabo repellendus et error provident.\"\n ],\n \"repo\": \"Quo dolor consequatur est incidunt labore non.\",\n \"tag\": \"Minus quis qui magnam.\"\n },\n {\n \"files\": [\n \"Eius quae quisquam itaque.\",\n \"Debitis dolore explicabo repellendus et error provident.\"\n ],\n \"repo\": \"Quo dolor consequatur est incidunt labore non.\",\n \"tag\": \"Minus quis qui magnam.\"\n }\n ],\n \"platform\": \"Explicabo id eum quae illum vitae necessitatibus.\",\n \"startAt\": \"Accusantium nostrum quaerat necessitatibus distinctio nobis.\",\n \"status\": \"PROCESSING\",\n \"url\": \"Vero sunt culpa molestiae sint ut.\"\n },\n {\n \"endAt\": \"Animi at sequi error.\",\n \"gitHash\": \"Aut molestiae.\",\n \"images\": [\n {\n \"platform\": \"Suscipit exercitationem assumenda.\",\n \"url\": \"In voluptas omnis.\"\n },\n {\n \"platform\": \"Suscipit exercitationem assumenda.\",\n \"url\": \"In voluptas omnis.\"\n },\n {\n \"platform\": \"Suscipit exercitationem assumenda.\",\n \"url\": \"In voluptas omnis.\"\n }\n ],\n \"name\": \"Occaecati omnis sunt a perspiciatis ratione.\",\n \"ociArtifacts\": [\n {\n \"files\": [\n \"Eius quae quisquam itaque.\",\n \"Debitis dolore explicabo repellendus et error provident.\"\n ],\n \"repo\": \"Quo dolor consequatur est incidunt labore non.\",\n \"tag\": \"Minus quis qui magnam.\"\n },\n {\n \"files\": [\n \"Eius quae quisquam itaque.\",\n \"Debitis dolore explicabo repellendus et error provident.\"\n ],\n \"repo\": \"Quo dolor consequatur est incidunt labore non.\",\n \"tag\": \"Minus quis qui magnam.\"\n },\n {\n \"files\": [\n \"Eius quae quisquam itaque.\",\n \"Debitis dolore explicabo repellendus et error provident.\"\n ],\n \"repo\": \"Quo dolor consequatur est incidunt labore non.\",\n \"tag\": \"Minus quis qui magnam.\"\n },\n {\n \"files\": [\n \"Eius quae quisquam itaque.\",\n \"Debitis dolore explicabo repellendus et error provident.\"\n ],\n \"repo\": \"Quo dolor consequatur est incidunt labore non.\",\n \"tag\": \"Minus quis qui magnam.\"\n }\n ],\n \"platform\": \"Explicabo id eum quae illum vitae necessitatibus.\",\n \"startAt\": \"Accusantium nostrum quaerat necessitatibus distinctio nobis.\",\n \"status\": \"PROCESSING\",\n \"url\": \"Vero sunt culpa molestiae sint ut.\"\n }\n ]\n }\n }\n }\n }'") + } + if body.DevBuild == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("DevBuild", "body")) + } + if body.DevBuild != nil { + if err2 := ValidateDevBuildRequestBody(body.DevBuild); err2 != nil { + err = goa.MergeErrors(err, err2) + } + } + if err != nil { + return nil, err + } + } + var id int + { + var v int64 + v, err = strconv.ParseInt(devbuildUpdateID, 10, strconv.IntSize) + id = int(v) + if err != nil { + return nil, fmt.Errorf("invalid value for id, must be INT") + } + } + var dryrun bool + { + if devbuildUpdateDryrun != "" { + dryrun, err = strconv.ParseBool(devbuildUpdateDryrun) + if err != nil { + return nil, fmt.Errorf("invalid value for dryrun, must be BOOL") + } + } + } + v := &devbuild.UpdatePayload{} + if body.DevBuild != nil { + v.DevBuild = marshalDevBuildRequestBodyToDevbuildDevBuild(body.DevBuild) + } + v.ID = id + v.Dryrun = dryrun + + return v, nil +} + +// BuildRerunPayload builds the payload for the devbuild rerun endpoint from +// CLI flags. +func BuildRerunPayload(devbuildRerunID string, devbuildRerunDryrun string) (*devbuild.RerunPayload, error) { + var err error + var id int + { + var v int64 + v, err = strconv.ParseInt(devbuildRerunID, 10, strconv.IntSize) + id = int(v) + if err != nil { + return nil, fmt.Errorf("invalid value for id, must be INT") + } + } + var dryrun bool + { + if devbuildRerunDryrun != "" { + dryrun, err = strconv.ParseBool(devbuildRerunDryrun) + if err != nil { + return nil, fmt.Errorf("invalid value for dryrun, must be BOOL") + } + } + } + v := &devbuild.RerunPayload{} + v.ID = id + v.Dryrun = dryrun + + return v, nil +} diff --git a/experiments/tibuild-v2/gen/http/devbuild/client/client.go b/experiments/tibuild-v2/internal/service/gen/http/devbuild/client/client.go similarity index 98% rename from experiments/tibuild-v2/gen/http/devbuild/client/client.go rename to experiments/tibuild-v2/internal/service/gen/http/devbuild/client/client.go index 9d8df103..467f0c94 100644 --- a/experiments/tibuild-v2/gen/http/devbuild/client/client.go +++ b/experiments/tibuild-v2/internal/service/gen/http/devbuild/client/client.go @@ -3,7 +3,8 @@ // devbuild client HTTP transport // // Command: -// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/design +// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/internal/service/design -o +// ./service package client diff --git a/experiments/tibuild-v2/gen/http/devbuild/client/encode_decode.go b/experiments/tibuild-v2/internal/service/gen/http/devbuild/client/encode_decode.go similarity index 98% rename from experiments/tibuild-v2/gen/http/devbuild/client/encode_decode.go rename to experiments/tibuild-v2/internal/service/gen/http/devbuild/client/encode_decode.go index 68fcf4d4..2d09cedd 100644 --- a/experiments/tibuild-v2/gen/http/devbuild/client/encode_decode.go +++ b/experiments/tibuild-v2/internal/service/gen/http/devbuild/client/encode_decode.go @@ -3,7 +3,8 @@ // devbuild HTTP client encoders and decoders // // Command: -// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/design +// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/internal/service/design -o +// ./service package client @@ -15,7 +16,7 @@ import ( "net/http" "net/url" - devbuild "github.com/PingCAP-QE/ee-apps/tibuild/gen/devbuild" + devbuild "github.com/PingCAP-QE/ee-apps/tibuild/internal/service/gen/devbuild" goahttp "goa.design/goa/v3/http" goa "goa.design/goa/v3/pkg" ) @@ -44,15 +45,18 @@ func EncodeListRequest(encoder func(*http.Request) goahttp.Encoder) func(*http.R return goahttp.ErrInvalidType("devbuild", "list", "*devbuild.ListPayload", v) } values := req.URL.Query() - values.Add("size", fmt.Sprintf("%v", p.Size)) - values.Add("offset", fmt.Sprintf("%v", p.Offset)) - if p.Hotfix != nil { - values.Add("hotfix", fmt.Sprintf("%v", *p.Hotfix)) - } + values.Add("page", fmt.Sprintf("%v", p.Page)) + values.Add("page_size", fmt.Sprintf("%v", p.PageSize)) + values.Add("hotfix", fmt.Sprintf("%v", p.Hotfix)) + values.Add("sort", p.Sort) if p.CreatedBy != nil { - values.Add("createdBy", *p.CreatedBy) + values.Add("created_by", *p.CreatedBy) } req.URL.RawQuery = values.Encode() + body := NewListRequestBody(p) + if err := encoder(req).Encode(&body); err != nil { + return goahttp.ErrEncodingError("devbuild", "list", err) + } return nil } } @@ -583,8 +587,8 @@ func unmarshalDevBuildResponseToDevbuildDevBuild(v *DevBuildResponse) *devbuild. // *devbuild.DevBuildMeta from a value of type *DevBuildMetaResponse. func unmarshalDevBuildMetaResponseToDevbuildDevBuildMeta(v *DevBuildMetaResponse) *devbuild.DevBuildMeta { res := &devbuild.DevBuildMeta{ - CreatedAt: *v.CreatedAt, CreatedBy: *v.CreatedBy, + CreatedAt: *v.CreatedAt, UpdatedAt: *v.UpdatedAt, } @@ -603,7 +607,7 @@ func unmarshalDevBuildSpecResponseToDevbuildDevBuildSpec(v *DevBuildSpecResponse GitRef: *v.GitRef, GithubRepo: *v.GithubRepo, IsHotfix: *v.IsHotfix, - IsPushGCR: *v.IsPushGCR, + IsPushGcr: *v.IsPushGcr, PipelineEngine: devbuild.PipelineEngine(*v.PipelineEngine), PluginGitRef: *v.PluginGitRef, Product: devbuild.Product(*v.Product), @@ -758,7 +762,7 @@ func marshalDevbuildDevBuildRequestToDevBuildRequestRequestBody(v *devbuild.DevB GitRef: v.GitRef, GithubRepo: v.GithubRepo, IsHotfix: v.IsHotfix, - IsPushGCR: v.IsPushGCR, + IsPushGcr: v.IsPushGcr, PluginGitRef: v.PluginGitRef, Product: string(v.Product), ProductBaseImg: v.ProductBaseImg, @@ -786,7 +790,7 @@ func marshalDevBuildRequestRequestBodyToDevbuildDevBuildRequest(v *DevBuildReque GitRef: v.GitRef, GithubRepo: v.GithubRepo, IsHotfix: v.IsHotfix, - IsPushGCR: v.IsPushGCR, + IsPushGcr: v.IsPushGcr, PluginGitRef: v.PluginGitRef, Product: devbuild.Product(v.Product), ProductBaseImg: v.ProductBaseImg, @@ -806,8 +810,8 @@ func marshalDevBuildRequestRequestBodyToDevbuildDevBuildRequest(v *DevBuildReque // type *devbuild.DevBuildMeta from a value of type *DevBuildMetaResponseBody. func unmarshalDevBuildMetaResponseBodyToDevbuildDevBuildMeta(v *DevBuildMetaResponseBody) *devbuild.DevBuildMeta { res := &devbuild.DevBuildMeta{ - CreatedAt: *v.CreatedAt, CreatedBy: *v.CreatedBy, + CreatedAt: *v.CreatedAt, UpdatedAt: *v.UpdatedAt, } @@ -826,7 +830,7 @@ func unmarshalDevBuildSpecResponseBodyToDevbuildDevBuildSpec(v *DevBuildSpecResp GitRef: *v.GitRef, GithubRepo: *v.GithubRepo, IsHotfix: *v.IsHotfix, - IsPushGCR: *v.IsPushGCR, + IsPushGcr: *v.IsPushGcr, PipelineEngine: devbuild.PipelineEngine(*v.PipelineEngine), PluginGitRef: *v.PluginGitRef, Product: devbuild.Product(*v.Product), @@ -994,8 +998,8 @@ func marshalDevbuildDevBuildToDevBuildRequestBody(v *devbuild.DevBuild) *DevBuil // *DevBuildMetaRequestBody from a value of type *devbuild.DevBuildMeta. func marshalDevbuildDevBuildMetaToDevBuildMetaRequestBody(v *devbuild.DevBuildMeta) *DevBuildMetaRequestBody { res := &DevBuildMetaRequestBody{ - CreatedAt: v.CreatedAt, CreatedBy: v.CreatedBy, + CreatedAt: v.CreatedAt, UpdatedAt: v.UpdatedAt, } @@ -1014,7 +1018,7 @@ func marshalDevbuildDevBuildSpecToDevBuildSpecRequestBody(v *devbuild.DevBuildSp GitRef: v.GitRef, GithubRepo: v.GithubRepo, IsHotfix: v.IsHotfix, - IsPushGCR: v.IsPushGCR, + IsPushGcr: v.IsPushGcr, PipelineEngine: string(v.PipelineEngine), PluginGitRef: v.PluginGitRef, Product: string(v.Product), @@ -1218,8 +1222,8 @@ func marshalDevBuildRequestBodyToDevbuildDevBuild(v *DevBuildRequestBody) *devbu // *devbuild.DevBuildMeta from a value of type *DevBuildMetaRequestBody. func marshalDevBuildMetaRequestBodyToDevbuildDevBuildMeta(v *DevBuildMetaRequestBody) *devbuild.DevBuildMeta { res := &devbuild.DevBuildMeta{ - CreatedAt: v.CreatedAt, CreatedBy: v.CreatedBy, + CreatedAt: v.CreatedAt, UpdatedAt: v.UpdatedAt, } @@ -1238,7 +1242,7 @@ func marshalDevBuildSpecRequestBodyToDevbuildDevBuildSpec(v *DevBuildSpecRequest GitRef: v.GitRef, GithubRepo: v.GithubRepo, IsHotfix: v.IsHotfix, - IsPushGCR: v.IsPushGCR, + IsPushGcr: v.IsPushGcr, PipelineEngine: devbuild.PipelineEngine(v.PipelineEngine), PluginGitRef: v.PluginGitRef, Product: devbuild.Product(v.Product), diff --git a/experiments/tibuild-v2/gen/http/devbuild/client/paths.go b/experiments/tibuild-v2/internal/service/gen/http/devbuild/client/paths.go similarity index 72% rename from experiments/tibuild-v2/gen/http/devbuild/client/paths.go rename to experiments/tibuild-v2/internal/service/gen/http/devbuild/client/paths.go index c1666140..18c01fc3 100644 --- a/experiments/tibuild-v2/gen/http/devbuild/client/paths.go +++ b/experiments/tibuild-v2/internal/service/gen/http/devbuild/client/paths.go @@ -3,7 +3,8 @@ // HTTP request path constructors for the devbuild service. // // Command: -// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/design +// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/internal/service/design -o +// ./service package client @@ -13,25 +14,25 @@ import ( // ListDevbuildPath returns the URL path to the devbuild service list HTTP endpoint. func ListDevbuildPath() string { - return "/api/devbuilds" + return "/api/v2/devbuilds" } // CreateDevbuildPath returns the URL path to the devbuild service create HTTP endpoint. func CreateDevbuildPath() string { - return "/api/devbuilds" + return "/api/v2/devbuilds" } // GetDevbuildPath returns the URL path to the devbuild service get HTTP endpoint. func GetDevbuildPath(id int) string { - return fmt.Sprintf("/api/devbuilds/%v", id) + return fmt.Sprintf("/api/v2/devbuilds/%v", id) } // UpdateDevbuildPath returns the URL path to the devbuild service update HTTP endpoint. func UpdateDevbuildPath(id int) string { - return fmt.Sprintf("/api/devbuilds/%v", id) + return fmt.Sprintf("/api/v2/devbuilds/%v", id) } // RerunDevbuildPath returns the URL path to the devbuild service rerun HTTP endpoint. func RerunDevbuildPath(id int) string { - return fmt.Sprintf("/api/devbuilds/%v/rerun", id) + return fmt.Sprintf("/api/v2/devbuilds/%v/rerun", id) } diff --git a/experiments/tibuild-v2/gen/http/devbuild/client/types.go b/experiments/tibuild-v2/internal/service/gen/http/devbuild/client/types.go similarity index 90% rename from experiments/tibuild-v2/gen/http/devbuild/client/types.go rename to experiments/tibuild-v2/internal/service/gen/http/devbuild/client/types.go index 6f052053..e490cdd7 100644 --- a/experiments/tibuild-v2/gen/http/devbuild/client/types.go +++ b/experiments/tibuild-v2/internal/service/gen/http/devbuild/client/types.go @@ -3,20 +3,28 @@ // devbuild HTTP client types // // Command: -// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/design +// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/internal/service/design -o +// ./service package client import ( - devbuild "github.com/PingCAP-QE/ee-apps/tibuild/gen/devbuild" + devbuild "github.com/PingCAP-QE/ee-apps/tibuild/internal/service/gen/devbuild" goa "goa.design/goa/v3/pkg" ) +// ListRequestBody is the type of the "devbuild" service "list" endpoint HTTP +// request body. +type ListRequestBody struct { + // The direction of the sort + Direction string `form:"direction" json:"direction" xml:"direction"` +} + // CreateRequestBody is the type of the "devbuild" service "create" endpoint // HTTP request body. type CreateRequestBody struct { // Creator of build - CreatedBy string `form:"createdBy" json:"createdBy" xml:"createdBy"` + CreatedBy string `form:"created_by" json:"created_by" xml:"created_by"` // Build to create, only spec field is required, others are ignored Request *DevBuildRequestRequestBody `form:"request" json:"request" xml:"request"` } @@ -141,24 +149,24 @@ type DevBuildResponse struct { // DevBuildMetaResponse is used to define fields on response body types. type DevBuildMetaResponse struct { - CreatedAt *string `form:"createdAt,omitempty" json:"createdAt,omitempty" xml:"createdAt,omitempty"` - CreatedBy *string `form:"createdBy,omitempty" json:"createdBy,omitempty" xml:"createdBy,omitempty"` - UpdatedAt *string `form:"updatedAt,omitempty" json:"updatedAt,omitempty" xml:"updatedAt,omitempty"` + CreatedBy *string `form:"created_by,omitempty" json:"created_by,omitempty" xml:"created_by,omitempty"` + CreatedAt *string `form:"created_at,omitempty" json:"created_at,omitempty" xml:"created_at,omitempty"` + UpdatedAt *string `form:"updated_at,omitempty" json:"updated_at,omitempty" xml:"updated_at,omitempty"` } // DevBuildSpecResponse is used to define fields on response body types. type DevBuildSpecResponse struct { - BuildEnv *string `form:"buildEnv,omitempty" json:"buildEnv,omitempty" xml:"buildEnv,omitempty"` - BuilderImg *string `form:"builderImg,omitempty" json:"builderImg,omitempty" xml:"builderImg,omitempty"` + BuildEnv *string `form:"build_env,omitempty" json:"build_env,omitempty" xml:"build_env,omitempty"` + BuilderImg *string `form:"builder_img,omitempty" json:"builder_img,omitempty" xml:"builder_img,omitempty"` Edition *string `form:"edition,omitempty" json:"edition,omitempty" xml:"edition,omitempty"` Features *string `form:"features,omitempty" json:"features,omitempty" xml:"features,omitempty"` GitHash *string `form:"gitHash,omitempty" json:"gitHash,omitempty" xml:"gitHash,omitempty"` GitRef *string `form:"gitRef,omitempty" json:"gitRef,omitempty" xml:"gitRef,omitempty"` GithubRepo *string `form:"githubRepo,omitempty" json:"githubRepo,omitempty" xml:"githubRepo,omitempty"` - IsHotfix *bool `form:"isHotfix,omitempty" json:"isHotfix,omitempty" xml:"isHotfix,omitempty"` - IsPushGCR *bool `form:"isPushGCR,omitempty" json:"isPushGCR,omitempty" xml:"isPushGCR,omitempty"` - PipelineEngine *string `form:"pipelineEngine,omitempty" json:"pipelineEngine,omitempty" xml:"pipelineEngine,omitempty"` - PluginGitRef *string `form:"pluginGitRef,omitempty" json:"pluginGitRef,omitempty" xml:"pluginGitRef,omitempty"` + IsHotfix *bool `form:"is_hotfix,omitempty" json:"is_hotfix,omitempty" xml:"is_hotfix,omitempty"` + IsPushGcr *bool `form:"is_push_gcr,omitempty" json:"is_push_gcr,omitempty" xml:"is_push_gcr,omitempty"` + PipelineEngine *string `form:"pipeline_engine,omitempty" json:"pipeline_engine,omitempty" xml:"pipeline_engine,omitempty"` + PluginGitRef *string `form:"plugin_git_ref,omitempty" json:"plugin_git_ref,omitempty" xml:"plugin_git_ref,omitempty"` Product *string `form:"product,omitempty" json:"product,omitempty" xml:"product,omitempty"` ProductBaseImg *string `form:"productBaseImg,omitempty" json:"productBaseImg,omitempty" xml:"productBaseImg,omitempty"` ProductDockerfile *string `form:"productDockerfile,omitempty" json:"productDockerfile,omitempty" xml:"productDockerfile,omitempty"` @@ -238,16 +246,16 @@ type OciArtifactResponse struct { // DevBuildRequestRequestBody is used to define fields on request body types. type DevBuildRequestRequestBody struct { - BuildEnv *string `form:"buildEnv,omitempty" json:"buildEnv,omitempty" xml:"buildEnv,omitempty"` - BuilderImg *string `form:"builderImg,omitempty" json:"builderImg,omitempty" xml:"builderImg,omitempty"` + BuildEnv *string `form:"build_env,omitempty" json:"build_env,omitempty" xml:"build_env,omitempty"` + BuilderImg *string `form:"builder_img,omitempty" json:"builder_img,omitempty" xml:"builder_img,omitempty"` Edition string `form:"edition" json:"edition" xml:"edition"` Features *string `form:"features,omitempty" json:"features,omitempty" xml:"features,omitempty"` GitRef string `form:"gitRef" json:"gitRef" xml:"gitRef"` GithubRepo *string `form:"githubRepo,omitempty" json:"githubRepo,omitempty" xml:"githubRepo,omitempty"` - IsHotfix *bool `form:"isHotfix,omitempty" json:"isHotfix,omitempty" xml:"isHotfix,omitempty"` - IsPushGCR *bool `form:"isPushGCR,omitempty" json:"isPushGCR,omitempty" xml:"isPushGCR,omitempty"` - PipelineEngine *string `form:"pipelineEngine,omitempty" json:"pipelineEngine,omitempty" xml:"pipelineEngine,omitempty"` - PluginGitRef *string `form:"pluginGitRef,omitempty" json:"pluginGitRef,omitempty" xml:"pluginGitRef,omitempty"` + IsHotfix *bool `form:"is_hotfix,omitempty" json:"is_hotfix,omitempty" xml:"is_hotfix,omitempty"` + IsPushGcr *bool `form:"is_push_gcr,omitempty" json:"is_push_gcr,omitempty" xml:"is_push_gcr,omitempty"` + PipelineEngine *string `form:"pipeline_engine,omitempty" json:"pipeline_engine,omitempty" xml:"pipeline_engine,omitempty"` + PluginGitRef *string `form:"plugin_git_ref,omitempty" json:"plugin_git_ref,omitempty" xml:"plugin_git_ref,omitempty"` Product string `form:"product" json:"product" xml:"product"` ProductBaseImg *string `form:"productBaseImg,omitempty" json:"productBaseImg,omitempty" xml:"productBaseImg,omitempty"` ProductDockerfile *string `form:"productDockerfile,omitempty" json:"productDockerfile,omitempty" xml:"productDockerfile,omitempty"` @@ -257,24 +265,24 @@ type DevBuildRequestRequestBody struct { // DevBuildMetaResponseBody is used to define fields on response body types. type DevBuildMetaResponseBody struct { - CreatedAt *string `form:"createdAt,omitempty" json:"createdAt,omitempty" xml:"createdAt,omitempty"` - CreatedBy *string `form:"createdBy,omitempty" json:"createdBy,omitempty" xml:"createdBy,omitempty"` - UpdatedAt *string `form:"updatedAt,omitempty" json:"updatedAt,omitempty" xml:"updatedAt,omitempty"` + CreatedBy *string `form:"created_by,omitempty" json:"created_by,omitempty" xml:"created_by,omitempty"` + CreatedAt *string `form:"created_at,omitempty" json:"created_at,omitempty" xml:"created_at,omitempty"` + UpdatedAt *string `form:"updated_at,omitempty" json:"updated_at,omitempty" xml:"updated_at,omitempty"` } // DevBuildSpecResponseBody is used to define fields on response body types. type DevBuildSpecResponseBody struct { - BuildEnv *string `form:"buildEnv,omitempty" json:"buildEnv,omitempty" xml:"buildEnv,omitempty"` - BuilderImg *string `form:"builderImg,omitempty" json:"builderImg,omitempty" xml:"builderImg,omitempty"` + BuildEnv *string `form:"build_env,omitempty" json:"build_env,omitempty" xml:"build_env,omitempty"` + BuilderImg *string `form:"builder_img,omitempty" json:"builder_img,omitempty" xml:"builder_img,omitempty"` Edition *string `form:"edition,omitempty" json:"edition,omitempty" xml:"edition,omitempty"` Features *string `form:"features,omitempty" json:"features,omitempty" xml:"features,omitempty"` GitHash *string `form:"gitHash,omitempty" json:"gitHash,omitempty" xml:"gitHash,omitempty"` GitRef *string `form:"gitRef,omitempty" json:"gitRef,omitempty" xml:"gitRef,omitempty"` GithubRepo *string `form:"githubRepo,omitempty" json:"githubRepo,omitempty" xml:"githubRepo,omitempty"` - IsHotfix *bool `form:"isHotfix,omitempty" json:"isHotfix,omitempty" xml:"isHotfix,omitempty"` - IsPushGCR *bool `form:"isPushGCR,omitempty" json:"isPushGCR,omitempty" xml:"isPushGCR,omitempty"` - PipelineEngine *string `form:"pipelineEngine,omitempty" json:"pipelineEngine,omitempty" xml:"pipelineEngine,omitempty"` - PluginGitRef *string `form:"pluginGitRef,omitempty" json:"pluginGitRef,omitempty" xml:"pluginGitRef,omitempty"` + IsHotfix *bool `form:"is_hotfix,omitempty" json:"is_hotfix,omitempty" xml:"is_hotfix,omitempty"` + IsPushGcr *bool `form:"is_push_gcr,omitempty" json:"is_push_gcr,omitempty" xml:"is_push_gcr,omitempty"` + PipelineEngine *string `form:"pipeline_engine,omitempty" json:"pipeline_engine,omitempty" xml:"pipeline_engine,omitempty"` + PluginGitRef *string `form:"plugin_git_ref,omitempty" json:"plugin_git_ref,omitempty" xml:"plugin_git_ref,omitempty"` Product *string `form:"product,omitempty" json:"product,omitempty" xml:"product,omitempty"` ProductBaseImg *string `form:"productBaseImg,omitempty" json:"productBaseImg,omitempty" xml:"productBaseImg,omitempty"` ProductDockerfile *string `form:"productDockerfile,omitempty" json:"productDockerfile,omitempty" xml:"productDockerfile,omitempty"` @@ -362,24 +370,24 @@ type DevBuildRequestBody struct { // DevBuildMetaRequestBody is used to define fields on request body types. type DevBuildMetaRequestBody struct { - CreatedAt string `form:"createdAt" json:"createdAt" xml:"createdAt"` - CreatedBy string `form:"createdBy" json:"createdBy" xml:"createdBy"` - UpdatedAt string `form:"updatedAt" json:"updatedAt" xml:"updatedAt"` + CreatedBy string `form:"created_by" json:"created_by" xml:"created_by"` + CreatedAt string `form:"created_at" json:"created_at" xml:"created_at"` + UpdatedAt string `form:"updated_at" json:"updated_at" xml:"updated_at"` } // DevBuildSpecRequestBody is used to define fields on request body types. type DevBuildSpecRequestBody struct { - BuildEnv string `form:"buildEnv" json:"buildEnv" xml:"buildEnv"` - BuilderImg string `form:"builderImg" json:"builderImg" xml:"builderImg"` + BuildEnv string `form:"build_env" json:"build_env" xml:"build_env"` + BuilderImg string `form:"builder_img" json:"builder_img" xml:"builder_img"` Edition string `form:"edition" json:"edition" xml:"edition"` Features string `form:"features" json:"features" xml:"features"` GitHash string `form:"gitHash" json:"gitHash" xml:"gitHash"` GitRef string `form:"gitRef" json:"gitRef" xml:"gitRef"` GithubRepo string `form:"githubRepo" json:"githubRepo" xml:"githubRepo"` - IsHotfix bool `form:"isHotfix" json:"isHotfix" xml:"isHotfix"` - IsPushGCR bool `form:"isPushGCR" json:"isPushGCR" xml:"isPushGCR"` - PipelineEngine string `form:"pipelineEngine" json:"pipelineEngine" xml:"pipelineEngine"` - PluginGitRef string `form:"pluginGitRef" json:"pluginGitRef" xml:"pluginGitRef"` + IsHotfix bool `form:"is_hotfix" json:"is_hotfix" xml:"is_hotfix"` + IsPushGcr bool `form:"is_push_gcr" json:"is_push_gcr" xml:"is_push_gcr"` + PipelineEngine string `form:"pipeline_engine" json:"pipeline_engine" xml:"pipeline_engine"` + PluginGitRef string `form:"plugin_git_ref" json:"plugin_git_ref" xml:"plugin_git_ref"` Product string `form:"product" json:"product" xml:"product"` ProductBaseImg string `form:"productBaseImg" json:"productBaseImg" xml:"productBaseImg"` ProductDockerfile string `form:"productDockerfile" json:"productDockerfile" xml:"productDockerfile"` @@ -457,6 +465,21 @@ type OciArtifactRequestBody struct { Tag string `form:"tag" json:"tag" xml:"tag"` } +// NewListRequestBody builds the HTTP request body from the payload of the +// "list" endpoint of the "devbuild" service. +func NewListRequestBody(p *devbuild.ListPayload) *ListRequestBody { + body := &ListRequestBody{ + Direction: p.Direction, + } + { + var zero string + if body.Direction == zero { + body.Direction = "desc" + } + } + return body +} + // NewCreateRequestBody builds the HTTP request body from the payload of the // "create" endpoint of the "devbuild" service. func NewCreateRequestBody(p *devbuild.CreatePayload) *CreateRequestBody { @@ -910,13 +933,22 @@ func ValidateDevBuildResponse(body *DevBuildResponse) (err error) { // DevBuildMetaResponse func ValidateDevBuildMetaResponse(body *DevBuildMetaResponse) (err error) { if body.CreatedAt == nil { - err = goa.MergeErrors(err, goa.MissingFieldError("createdAt", "body")) + err = goa.MergeErrors(err, goa.MissingFieldError("created_at", "body")) } if body.CreatedBy == nil { - err = goa.MergeErrors(err, goa.MissingFieldError("createdBy", "body")) + err = goa.MergeErrors(err, goa.MissingFieldError("created_by", "body")) } if body.UpdatedAt == nil { - err = goa.MergeErrors(err, goa.MissingFieldError("updatedAt", "body")) + err = goa.MergeErrors(err, goa.MissingFieldError("updated_at", "body")) + } + if body.CreatedBy != nil { + err = goa.MergeErrors(err, goa.ValidateFormat("body.created_by", *body.CreatedBy, goa.FormatEmail)) + } + if body.CreatedAt != nil { + err = goa.MergeErrors(err, goa.ValidateFormat("body.created_at", *body.CreatedAt, goa.FormatDateTime)) + } + if body.UpdatedAt != nil { + err = goa.MergeErrors(err, goa.ValidateFormat("body.updated_at", *body.UpdatedAt, goa.FormatDateTime)) } return } @@ -925,10 +957,10 @@ func ValidateDevBuildMetaResponse(body *DevBuildMetaResponse) (err error) { // DevBuildSpecResponse func ValidateDevBuildSpecResponse(body *DevBuildSpecResponse) (err error) { if body.BuildEnv == nil { - err = goa.MergeErrors(err, goa.MissingFieldError("buildEnv", "body")) + err = goa.MergeErrors(err, goa.MissingFieldError("build_env", "body")) } if body.BuilderImg == nil { - err = goa.MergeErrors(err, goa.MissingFieldError("builderImg", "body")) + err = goa.MergeErrors(err, goa.MissingFieldError("builder_img", "body")) } if body.Edition == nil { err = goa.MergeErrors(err, goa.MissingFieldError("edition", "body")) @@ -946,16 +978,16 @@ func ValidateDevBuildSpecResponse(body *DevBuildSpecResponse) (err error) { err = goa.MergeErrors(err, goa.MissingFieldError("githubRepo", "body")) } if body.IsHotfix == nil { - err = goa.MergeErrors(err, goa.MissingFieldError("isHotfix", "body")) + err = goa.MergeErrors(err, goa.MissingFieldError("is_hotfix", "body")) } - if body.IsPushGCR == nil { - err = goa.MergeErrors(err, goa.MissingFieldError("isPushGCR", "body")) + if body.IsPushGcr == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("is_push_gcr", "body")) } if body.PipelineEngine == nil { - err = goa.MergeErrors(err, goa.MissingFieldError("pipelineEngine", "body")) + err = goa.MergeErrors(err, goa.MissingFieldError("pipeline_engine", "body")) } if body.PluginGitRef == nil { - err = goa.MergeErrors(err, goa.MissingFieldError("pluginGitRef", "body")) + err = goa.MergeErrors(err, goa.MissingFieldError("plugin_git_ref", "body")) } if body.Product == nil { err = goa.MergeErrors(err, goa.MissingFieldError("product", "body")) @@ -979,7 +1011,7 @@ func ValidateDevBuildSpecResponse(body *DevBuildSpecResponse) (err error) { } if body.PipelineEngine != nil { if !(*body.PipelineEngine == "jenkins" || *body.PipelineEngine == "tekton") { - err = goa.MergeErrors(err, goa.InvalidEnumValueError("body.pipelineEngine", *body.PipelineEngine, []any{"jenkins", "tekton"})) + err = goa.MergeErrors(err, goa.InvalidEnumValueError("body.pipeline_engine", *body.PipelineEngine, []any{"jenkins", "tekton"})) } } if body.Product != nil { @@ -1224,7 +1256,7 @@ func ValidateDevBuildRequestRequestBody(body *DevBuildRequestRequestBody) (err e } if body.PipelineEngine != nil { if !(*body.PipelineEngine == "jenkins" || *body.PipelineEngine == "tekton") { - err = goa.MergeErrors(err, goa.InvalidEnumValueError("body.pipelineEngine", *body.PipelineEngine, []any{"jenkins", "tekton"})) + err = goa.MergeErrors(err, goa.InvalidEnumValueError("body.pipeline_engine", *body.PipelineEngine, []any{"jenkins", "tekton"})) } } if !(body.Product == "tidb" || body.Product == "enterprise-plugin" || body.Product == "tikv" || body.Product == "pd" || body.Product == "tiflash" || body.Product == "br" || body.Product == "dumpling" || body.Product == "tidb-lightning" || body.Product == "ticdc" || body.Product == "ticdc-newarch" || body.Product == "dm" || body.Product == "tidb-binlog" || body.Product == "tidb-tools" || body.Product == "ng-monitoring" || body.Product == "tidb-dashboard" || body.Product == "drainer" || body.Product == "pump" || body.Product == "") { @@ -1237,13 +1269,22 @@ func ValidateDevBuildRequestRequestBody(body *DevBuildRequestRequestBody) (err e // DevBuildMetaResponseBody func ValidateDevBuildMetaResponseBody(body *DevBuildMetaResponseBody) (err error) { if body.CreatedAt == nil { - err = goa.MergeErrors(err, goa.MissingFieldError("createdAt", "body")) + err = goa.MergeErrors(err, goa.MissingFieldError("created_at", "body")) } if body.CreatedBy == nil { - err = goa.MergeErrors(err, goa.MissingFieldError("createdBy", "body")) + err = goa.MergeErrors(err, goa.MissingFieldError("created_by", "body")) } if body.UpdatedAt == nil { - err = goa.MergeErrors(err, goa.MissingFieldError("updatedAt", "body")) + err = goa.MergeErrors(err, goa.MissingFieldError("updated_at", "body")) + } + if body.CreatedBy != nil { + err = goa.MergeErrors(err, goa.ValidateFormat("body.created_by", *body.CreatedBy, goa.FormatEmail)) + } + if body.CreatedAt != nil { + err = goa.MergeErrors(err, goa.ValidateFormat("body.created_at", *body.CreatedAt, goa.FormatDateTime)) + } + if body.UpdatedAt != nil { + err = goa.MergeErrors(err, goa.ValidateFormat("body.updated_at", *body.UpdatedAt, goa.FormatDateTime)) } return } @@ -1252,10 +1293,10 @@ func ValidateDevBuildMetaResponseBody(body *DevBuildMetaResponseBody) (err error // DevBuildSpecResponseBody func ValidateDevBuildSpecResponseBody(body *DevBuildSpecResponseBody) (err error) { if body.BuildEnv == nil { - err = goa.MergeErrors(err, goa.MissingFieldError("buildEnv", "body")) + err = goa.MergeErrors(err, goa.MissingFieldError("build_env", "body")) } if body.BuilderImg == nil { - err = goa.MergeErrors(err, goa.MissingFieldError("builderImg", "body")) + err = goa.MergeErrors(err, goa.MissingFieldError("builder_img", "body")) } if body.Edition == nil { err = goa.MergeErrors(err, goa.MissingFieldError("edition", "body")) @@ -1273,16 +1314,16 @@ func ValidateDevBuildSpecResponseBody(body *DevBuildSpecResponseBody) (err error err = goa.MergeErrors(err, goa.MissingFieldError("githubRepo", "body")) } if body.IsHotfix == nil { - err = goa.MergeErrors(err, goa.MissingFieldError("isHotfix", "body")) + err = goa.MergeErrors(err, goa.MissingFieldError("is_hotfix", "body")) } - if body.IsPushGCR == nil { - err = goa.MergeErrors(err, goa.MissingFieldError("isPushGCR", "body")) + if body.IsPushGcr == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("is_push_gcr", "body")) } if body.PipelineEngine == nil { - err = goa.MergeErrors(err, goa.MissingFieldError("pipelineEngine", "body")) + err = goa.MergeErrors(err, goa.MissingFieldError("pipeline_engine", "body")) } if body.PluginGitRef == nil { - err = goa.MergeErrors(err, goa.MissingFieldError("pluginGitRef", "body")) + err = goa.MergeErrors(err, goa.MissingFieldError("plugin_git_ref", "body")) } if body.Product == nil { err = goa.MergeErrors(err, goa.MissingFieldError("product", "body")) @@ -1306,7 +1347,7 @@ func ValidateDevBuildSpecResponseBody(body *DevBuildSpecResponseBody) (err error } if body.PipelineEngine != nil { if !(*body.PipelineEngine == "jenkins" || *body.PipelineEngine == "tekton") { - err = goa.MergeErrors(err, goa.InvalidEnumValueError("body.pipelineEngine", *body.PipelineEngine, []any{"jenkins", "tekton"})) + err = goa.MergeErrors(err, goa.InvalidEnumValueError("body.pipeline_engine", *body.PipelineEngine, []any{"jenkins", "tekton"})) } } if body.Product != nil { @@ -1556,6 +1597,11 @@ func ValidateDevBuildRequestBody(body *DevBuildRequestBody) (err error) { if body.Status == nil { err = goa.MergeErrors(err, goa.MissingFieldError("status", "body")) } + if body.Meta != nil { + if err2 := ValidateDevBuildMetaRequestBody(body.Meta); err2 != nil { + err = goa.MergeErrors(err, err2) + } + } if body.Spec != nil { if err2 := ValidateDevBuildSpecRequestBody(body.Spec); err2 != nil { err = goa.MergeErrors(err, err2) @@ -1569,6 +1615,15 @@ func ValidateDevBuildRequestBody(body *DevBuildRequestBody) (err error) { return } +// ValidateDevBuildMetaRequestBody runs the validations defined on +// DevBuildMetaRequestBody +func ValidateDevBuildMetaRequestBody(body *DevBuildMetaRequestBody) (err error) { + err = goa.MergeErrors(err, goa.ValidateFormat("body.created_by", body.CreatedBy, goa.FormatEmail)) + err = goa.MergeErrors(err, goa.ValidateFormat("body.created_at", body.CreatedAt, goa.FormatDateTime)) + err = goa.MergeErrors(err, goa.ValidateFormat("body.updated_at", body.UpdatedAt, goa.FormatDateTime)) + return +} + // ValidateDevBuildSpecRequestBody runs the validations defined on // DevBuildSpecRequestBody func ValidateDevBuildSpecRequestBody(body *DevBuildSpecRequestBody) (err error) { @@ -1576,7 +1631,7 @@ func ValidateDevBuildSpecRequestBody(body *DevBuildSpecRequestBody) (err error) err = goa.MergeErrors(err, goa.InvalidEnumValueError("body.edition", body.Edition, []any{"enterprise", "community"})) } if !(body.PipelineEngine == "jenkins" || body.PipelineEngine == "tekton") { - err = goa.MergeErrors(err, goa.InvalidEnumValueError("body.pipelineEngine", body.PipelineEngine, []any{"jenkins", "tekton"})) + err = goa.MergeErrors(err, goa.InvalidEnumValueError("body.pipeline_engine", body.PipelineEngine, []any{"jenkins", "tekton"})) } if !(body.Product == "tidb" || body.Product == "enterprise-plugin" || body.Product == "tikv" || body.Product == "pd" || body.Product == "tiflash" || body.Product == "br" || body.Product == "dumpling" || body.Product == "tidb-lightning" || body.Product == "ticdc" || body.Product == "ticdc-newarch" || body.Product == "dm" || body.Product == "tidb-binlog" || body.Product == "tidb-tools" || body.Product == "ng-monitoring" || body.Product == "tidb-dashboard" || body.Product == "drainer" || body.Product == "pump" || body.Product == "") { err = goa.MergeErrors(err, goa.InvalidEnumValueError("body.product", body.Product, []any{"tidb", "enterprise-plugin", "tikv", "pd", "tiflash", "br", "dumpling", "tidb-lightning", "ticdc", "ticdc-newarch", "dm", "tidb-binlog", "tidb-tools", "ng-monitoring", "tidb-dashboard", "drainer", "pump", ""})) diff --git a/experiments/tibuild-v2/gen/http/devbuild/server/encode_decode.go b/experiments/tibuild-v2/internal/service/gen/http/devbuild/server/encode_decode.go similarity index 95% rename from experiments/tibuild-v2/gen/http/devbuild/server/encode_decode.go rename to experiments/tibuild-v2/internal/service/gen/http/devbuild/server/encode_decode.go index e63d9b41..6373b890 100644 --- a/experiments/tibuild-v2/gen/http/devbuild/server/encode_decode.go +++ b/experiments/tibuild-v2/internal/service/gen/http/devbuild/server/encode_decode.go @@ -3,7 +3,8 @@ // devbuild HTTP server encoders and decoders // // Command: -// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/design +// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/internal/service/design -o +// ./service package server @@ -14,7 +15,7 @@ import ( "net/http" "strconv" - devbuild "github.com/PingCAP-QE/ee-apps/tibuild/gen/devbuild" + devbuild "github.com/PingCAP-QE/ee-apps/tibuild/internal/service/gen/devbuild" goahttp "goa.design/goa/v3/http" goa "goa.design/goa/v3/pkg" ) @@ -36,33 +37,55 @@ func EncodeListResponse(encoder func(context.Context, http.ResponseWriter) goaht func DecodeListRequest(mux goahttp.Muxer, decoder func(*http.Request) goahttp.Decoder) func(*http.Request) (any, error) { return func(r *http.Request) (any, error) { var ( - size int - offset int - hotfix *bool + body ListRequestBody + err error + ) + err = decoder(r).Decode(&body) + if err != nil { + if err == io.EOF { + return nil, goa.MissingPayloadError() + } + var gerr *goa.ServiceError + if errors.As(err, &gerr) { + return nil, gerr + } + return nil, goa.DecodePayloadError(err.Error()) + } + err = ValidateListRequestBody(&body) + if err != nil { + return nil, err + } + + var ( + page int + pageSize int + hotfix bool + sort string createdBy *string - err error ) qp := r.URL.Query() { - sizeRaw := qp.Get("size") - if sizeRaw == "" { - size = 10 + pageRaw := qp.Get("page") + if pageRaw == "" { + page = 1 } else { - v, err2 := strconv.ParseInt(sizeRaw, 10, strconv.IntSize) + v, err2 := strconv.ParseInt(pageRaw, 10, strconv.IntSize) if err2 != nil { - err = goa.MergeErrors(err, goa.InvalidFieldTypeError("size", sizeRaw, "integer")) + err = goa.MergeErrors(err, goa.InvalidFieldTypeError("page", pageRaw, "integer")) } - size = int(v) + page = int(v) } } { - offsetRaw := qp.Get("offset") - if offsetRaw != "" { - v, err2 := strconv.ParseInt(offsetRaw, 10, strconv.IntSize) + pageSizeRaw := qp.Get("page_size") + if pageSizeRaw == "" { + pageSize = 30 + } else { + v, err2 := strconv.ParseInt(pageSizeRaw, 10, strconv.IntSize) if err2 != nil { - err = goa.MergeErrors(err, goa.InvalidFieldTypeError("offset", offsetRaw, "integer")) + err = goa.MergeErrors(err, goa.InvalidFieldTypeError("page_size", pageSizeRaw, "integer")) } - offset = int(v) + pageSize = int(v) } } { @@ -72,17 +95,26 @@ func DecodeListRequest(mux goahttp.Muxer, decoder func(*http.Request) goahttp.De if err2 != nil { err = goa.MergeErrors(err, goa.InvalidFieldTypeError("hotfix", hotfixRaw, "boolean")) } - hotfix = &v + hotfix = v } } - createdByRaw := qp.Get("createdBy") + sortRaw := qp.Get("sort") + if sortRaw != "" { + sort = sortRaw + } else { + sort = "created_at" + } + if !(sort == "created_at" || sort == "updated_at") { + err = goa.MergeErrors(err, goa.InvalidEnumValueError("sort", sort, []any{"created_at", "updated_at"})) + } + createdByRaw := qp.Get("created_by") if createdByRaw != "" { createdBy = &createdByRaw } if err != nil { return nil, err } - payload := NewListPayload(size, offset, hotfix, createdBy) + payload := NewListPayload(&body, page, pageSize, hotfix, sort, createdBy) return payload, nil } @@ -535,8 +567,8 @@ func marshalDevbuildDevBuildToDevBuildResponse(v *devbuild.DevBuild) *DevBuildRe // *DevBuildMetaResponse from a value of type *devbuild.DevBuildMeta. func marshalDevbuildDevBuildMetaToDevBuildMetaResponse(v *devbuild.DevBuildMeta) *DevBuildMetaResponse { res := &DevBuildMetaResponse{ - CreatedAt: v.CreatedAt, CreatedBy: v.CreatedBy, + CreatedAt: v.CreatedAt, UpdatedAt: v.UpdatedAt, } @@ -555,7 +587,7 @@ func marshalDevbuildDevBuildSpecToDevBuildSpecResponse(v *devbuild.DevBuildSpec) GitRef: v.GitRef, GithubRepo: v.GithubRepo, IsHotfix: v.IsHotfix, - IsPushGCR: v.IsPushGCR, + IsPushGcr: v.IsPushGcr, PipelineEngine: string(v.PipelineEngine), PluginGitRef: v.PluginGitRef, Product: string(v.Product), @@ -746,7 +778,7 @@ func unmarshalDevBuildRequestRequestBodyToDevbuildDevBuildRequest(v *DevBuildReq GitRef: *v.GitRef, GithubRepo: v.GithubRepo, IsHotfix: v.IsHotfix, - IsPushGCR: v.IsPushGCR, + IsPushGcr: v.IsPushGcr, PluginGitRef: v.PluginGitRef, Product: devbuild.Product(*v.Product), ProductBaseImg: v.ProductBaseImg, @@ -766,8 +798,8 @@ func unmarshalDevBuildRequestRequestBodyToDevbuildDevBuildRequest(v *DevBuildReq // *DevBuildMetaResponseBody from a value of type *devbuild.DevBuildMeta. func marshalDevbuildDevBuildMetaToDevBuildMetaResponseBody(v *devbuild.DevBuildMeta) *DevBuildMetaResponseBody { res := &DevBuildMetaResponseBody{ - CreatedAt: v.CreatedAt, CreatedBy: v.CreatedBy, + CreatedAt: v.CreatedAt, UpdatedAt: v.UpdatedAt, } @@ -786,7 +818,7 @@ func marshalDevbuildDevBuildSpecToDevBuildSpecResponseBody(v *devbuild.DevBuildS GitRef: v.GitRef, GithubRepo: v.GithubRepo, IsHotfix: v.IsHotfix, - IsPushGCR: v.IsPushGCR, + IsPushGcr: v.IsPushGcr, PipelineEngine: string(v.PipelineEngine), PluginGitRef: v.PluginGitRef, Product: string(v.Product), @@ -984,8 +1016,8 @@ func unmarshalDevBuildRequestBodyToDevbuildDevBuild(v *DevBuildRequestBody) *dev // type *devbuild.DevBuildMeta from a value of type *DevBuildMetaRequestBody. func unmarshalDevBuildMetaRequestBodyToDevbuildDevBuildMeta(v *DevBuildMetaRequestBody) *devbuild.DevBuildMeta { res := &devbuild.DevBuildMeta{ - CreatedAt: *v.CreatedAt, CreatedBy: *v.CreatedBy, + CreatedAt: *v.CreatedAt, UpdatedAt: *v.UpdatedAt, } @@ -1004,7 +1036,7 @@ func unmarshalDevBuildSpecRequestBodyToDevbuildDevBuildSpec(v *DevBuildSpecReque GitRef: *v.GitRef, GithubRepo: *v.GithubRepo, IsHotfix: *v.IsHotfix, - IsPushGCR: *v.IsPushGCR, + IsPushGcr: *v.IsPushGcr, PipelineEngine: devbuild.PipelineEngine(*v.PipelineEngine), PluginGitRef: *v.PluginGitRef, Product: devbuild.Product(*v.Product), diff --git a/experiments/tibuild-v2/gen/http/devbuild/server/paths.go b/experiments/tibuild-v2/internal/service/gen/http/devbuild/server/paths.go similarity index 72% rename from experiments/tibuild-v2/gen/http/devbuild/server/paths.go rename to experiments/tibuild-v2/internal/service/gen/http/devbuild/server/paths.go index 0b1fe8c1..75195341 100644 --- a/experiments/tibuild-v2/gen/http/devbuild/server/paths.go +++ b/experiments/tibuild-v2/internal/service/gen/http/devbuild/server/paths.go @@ -3,7 +3,8 @@ // HTTP request path constructors for the devbuild service. // // Command: -// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/design +// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/internal/service/design -o +// ./service package server @@ -13,25 +14,25 @@ import ( // ListDevbuildPath returns the URL path to the devbuild service list HTTP endpoint. func ListDevbuildPath() string { - return "/api/devbuilds" + return "/api/v2/devbuilds" } // CreateDevbuildPath returns the URL path to the devbuild service create HTTP endpoint. func CreateDevbuildPath() string { - return "/api/devbuilds" + return "/api/v2/devbuilds" } // GetDevbuildPath returns the URL path to the devbuild service get HTTP endpoint. func GetDevbuildPath(id int) string { - return fmt.Sprintf("/api/devbuilds/%v", id) + return fmt.Sprintf("/api/v2/devbuilds/%v", id) } // UpdateDevbuildPath returns the URL path to the devbuild service update HTTP endpoint. func UpdateDevbuildPath(id int) string { - return fmt.Sprintf("/api/devbuilds/%v", id) + return fmt.Sprintf("/api/v2/devbuilds/%v", id) } // RerunDevbuildPath returns the URL path to the devbuild service rerun HTTP endpoint. func RerunDevbuildPath(id int) string { - return fmt.Sprintf("/api/devbuilds/%v/rerun", id) + return fmt.Sprintf("/api/v2/devbuilds/%v/rerun", id) } diff --git a/experiments/tibuild-v2/gen/http/devbuild/server/server.go b/experiments/tibuild-v2/internal/service/gen/http/devbuild/server/server.go similarity index 94% rename from experiments/tibuild-v2/gen/http/devbuild/server/server.go rename to experiments/tibuild-v2/internal/service/gen/http/devbuild/server/server.go index cb028e02..5d0d262d 100644 --- a/experiments/tibuild-v2/gen/http/devbuild/server/server.go +++ b/experiments/tibuild-v2/internal/service/gen/http/devbuild/server/server.go @@ -3,7 +3,8 @@ // devbuild HTTP server // // Command: -// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/design +// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/internal/service/design -o +// ./service package server @@ -11,7 +12,7 @@ import ( "context" "net/http" - devbuild "github.com/PingCAP-QE/ee-apps/tibuild/gen/devbuild" + devbuild "github.com/PingCAP-QE/ee-apps/tibuild/internal/service/gen/devbuild" goahttp "goa.design/goa/v3/http" goa "goa.design/goa/v3/pkg" ) @@ -53,11 +54,11 @@ func New( ) *Server { return &Server{ Mounts: []*MountPoint{ - {"List", "GET", "/api/devbuilds"}, - {"Create", "POST", "/api/devbuilds"}, - {"Get", "GET", "/api/devbuilds/{id}"}, - {"Update", "PUT", "/api/devbuilds/{id}"}, - {"Rerun", "POST", "/api/devbuilds/{id}/rerun"}, + {"List", "GET", "/api/v2/devbuilds"}, + {"Create", "POST", "/api/v2/devbuilds"}, + {"Get", "GET", "/api/v2/devbuilds/{id}"}, + {"Update", "PUT", "/api/v2/devbuilds/{id}"}, + {"Rerun", "POST", "/api/v2/devbuilds/{id}/rerun"}, }, List: NewListHandler(e.List, mux, decoder, encoder, errhandler, formatter), Create: NewCreateHandler(e.Create, mux, decoder, encoder, errhandler, formatter), @@ -105,7 +106,7 @@ func MountListHandler(mux goahttp.Muxer, h http.Handler) { h.ServeHTTP(w, r) } } - mux.Handle("GET", "/api/devbuilds", f) + mux.Handle("GET", "/api/v2/devbuilds", f) } // NewListHandler creates a HTTP handler which loads the HTTP request and calls @@ -156,7 +157,7 @@ func MountCreateHandler(mux goahttp.Muxer, h http.Handler) { h.ServeHTTP(w, r) } } - mux.Handle("POST", "/api/devbuilds", f) + mux.Handle("POST", "/api/v2/devbuilds", f) } // NewCreateHandler creates a HTTP handler which loads the HTTP request and @@ -207,7 +208,7 @@ func MountGetHandler(mux goahttp.Muxer, h http.Handler) { h.ServeHTTP(w, r) } } - mux.Handle("GET", "/api/devbuilds/{id}", f) + mux.Handle("GET", "/api/v2/devbuilds/{id}", f) } // NewGetHandler creates a HTTP handler which loads the HTTP request and calls @@ -258,7 +259,7 @@ func MountUpdateHandler(mux goahttp.Muxer, h http.Handler) { h.ServeHTTP(w, r) } } - mux.Handle("PUT", "/api/devbuilds/{id}", f) + mux.Handle("PUT", "/api/v2/devbuilds/{id}", f) } // NewUpdateHandler creates a HTTP handler which loads the HTTP request and @@ -309,7 +310,7 @@ func MountRerunHandler(mux goahttp.Muxer, h http.Handler) { h.ServeHTTP(w, r) } } - mux.Handle("POST", "/api/devbuilds/{id}/rerun", f) + mux.Handle("POST", "/api/v2/devbuilds/{id}/rerun", f) } // NewRerunHandler creates a HTTP handler which loads the HTTP request and diff --git a/experiments/tibuild-v2/gen/http/devbuild/server/types.go b/experiments/tibuild-v2/internal/service/gen/http/devbuild/server/types.go similarity index 88% rename from experiments/tibuild-v2/gen/http/devbuild/server/types.go rename to experiments/tibuild-v2/internal/service/gen/http/devbuild/server/types.go index c3927986..222fe9c0 100644 --- a/experiments/tibuild-v2/gen/http/devbuild/server/types.go +++ b/experiments/tibuild-v2/internal/service/gen/http/devbuild/server/types.go @@ -3,20 +3,28 @@ // devbuild HTTP server types // // Command: -// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/design +// $ goa gen github.com/PingCAP-QE/ee-apps/tibuild/internal/service/design -o +// ./service package server import ( - devbuild "github.com/PingCAP-QE/ee-apps/tibuild/gen/devbuild" + devbuild "github.com/PingCAP-QE/ee-apps/tibuild/internal/service/gen/devbuild" goa "goa.design/goa/v3/pkg" ) +// ListRequestBody is the type of the "devbuild" service "list" endpoint HTTP +// request body. +type ListRequestBody struct { + // The direction of the sort + Direction *string `form:"direction,omitempty" json:"direction,omitempty" xml:"direction,omitempty"` +} + // CreateRequestBody is the type of the "devbuild" service "create" endpoint // HTTP request body. type CreateRequestBody struct { // Creator of build - CreatedBy *string `form:"createdBy,omitempty" json:"createdBy,omitempty" xml:"createdBy,omitempty"` + CreatedBy *string `form:"created_by,omitempty" json:"created_by,omitempty" xml:"created_by,omitempty"` // Build to create, only spec field is required, others are ignored Request *DevBuildRequestRequestBody `form:"request,omitempty" json:"request,omitempty" xml:"request,omitempty"` } @@ -141,24 +149,24 @@ type DevBuildResponse struct { // DevBuildMetaResponse is used to define fields on response body types. type DevBuildMetaResponse struct { - CreatedAt string `form:"createdAt" json:"createdAt" xml:"createdAt"` - CreatedBy string `form:"createdBy" json:"createdBy" xml:"createdBy"` - UpdatedAt string `form:"updatedAt" json:"updatedAt" xml:"updatedAt"` + CreatedBy string `form:"created_by" json:"created_by" xml:"created_by"` + CreatedAt string `form:"created_at" json:"created_at" xml:"created_at"` + UpdatedAt string `form:"updated_at" json:"updated_at" xml:"updated_at"` } // DevBuildSpecResponse is used to define fields on response body types. type DevBuildSpecResponse struct { - BuildEnv string `form:"buildEnv" json:"buildEnv" xml:"buildEnv"` - BuilderImg string `form:"builderImg" json:"builderImg" xml:"builderImg"` + BuildEnv string `form:"build_env" json:"build_env" xml:"build_env"` + BuilderImg string `form:"builder_img" json:"builder_img" xml:"builder_img"` Edition string `form:"edition" json:"edition" xml:"edition"` Features string `form:"features" json:"features" xml:"features"` GitHash string `form:"gitHash" json:"gitHash" xml:"gitHash"` GitRef string `form:"gitRef" json:"gitRef" xml:"gitRef"` GithubRepo string `form:"githubRepo" json:"githubRepo" xml:"githubRepo"` - IsHotfix bool `form:"isHotfix" json:"isHotfix" xml:"isHotfix"` - IsPushGCR bool `form:"isPushGCR" json:"isPushGCR" xml:"isPushGCR"` - PipelineEngine string `form:"pipelineEngine" json:"pipelineEngine" xml:"pipelineEngine"` - PluginGitRef string `form:"pluginGitRef" json:"pluginGitRef" xml:"pluginGitRef"` + IsHotfix bool `form:"is_hotfix" json:"is_hotfix" xml:"is_hotfix"` + IsPushGcr bool `form:"is_push_gcr" json:"is_push_gcr" xml:"is_push_gcr"` + PipelineEngine string `form:"pipeline_engine" json:"pipeline_engine" xml:"pipeline_engine"` + PluginGitRef string `form:"plugin_git_ref" json:"plugin_git_ref" xml:"plugin_git_ref"` Product string `form:"product" json:"product" xml:"product"` ProductBaseImg string `form:"productBaseImg" json:"productBaseImg" xml:"productBaseImg"` ProductDockerfile string `form:"productDockerfile" json:"productDockerfile" xml:"productDockerfile"` @@ -238,24 +246,24 @@ type OciArtifactResponse struct { // DevBuildMetaResponseBody is used to define fields on response body types. type DevBuildMetaResponseBody struct { - CreatedAt string `form:"createdAt" json:"createdAt" xml:"createdAt"` - CreatedBy string `form:"createdBy" json:"createdBy" xml:"createdBy"` - UpdatedAt string `form:"updatedAt" json:"updatedAt" xml:"updatedAt"` + CreatedBy string `form:"created_by" json:"created_by" xml:"created_by"` + CreatedAt string `form:"created_at" json:"created_at" xml:"created_at"` + UpdatedAt string `form:"updated_at" json:"updated_at" xml:"updated_at"` } // DevBuildSpecResponseBody is used to define fields on response body types. type DevBuildSpecResponseBody struct { - BuildEnv string `form:"buildEnv" json:"buildEnv" xml:"buildEnv"` - BuilderImg string `form:"builderImg" json:"builderImg" xml:"builderImg"` + BuildEnv string `form:"build_env" json:"build_env" xml:"build_env"` + BuilderImg string `form:"builder_img" json:"builder_img" xml:"builder_img"` Edition string `form:"edition" json:"edition" xml:"edition"` Features string `form:"features" json:"features" xml:"features"` GitHash string `form:"gitHash" json:"gitHash" xml:"gitHash"` GitRef string `form:"gitRef" json:"gitRef" xml:"gitRef"` GithubRepo string `form:"githubRepo" json:"githubRepo" xml:"githubRepo"` - IsHotfix bool `form:"isHotfix" json:"isHotfix" xml:"isHotfix"` - IsPushGCR bool `form:"isPushGCR" json:"isPushGCR" xml:"isPushGCR"` - PipelineEngine string `form:"pipelineEngine" json:"pipelineEngine" xml:"pipelineEngine"` - PluginGitRef string `form:"pluginGitRef" json:"pluginGitRef" xml:"pluginGitRef"` + IsHotfix bool `form:"is_hotfix" json:"is_hotfix" xml:"is_hotfix"` + IsPushGcr bool `form:"is_push_gcr" json:"is_push_gcr" xml:"is_push_gcr"` + PipelineEngine string `form:"pipeline_engine" json:"pipeline_engine" xml:"pipeline_engine"` + PluginGitRef string `form:"plugin_git_ref" json:"plugin_git_ref" xml:"plugin_git_ref"` Product string `form:"product" json:"product" xml:"product"` ProductBaseImg string `form:"productBaseImg" json:"productBaseImg" xml:"productBaseImg"` ProductDockerfile string `form:"productDockerfile" json:"productDockerfile" xml:"productDockerfile"` @@ -335,16 +343,16 @@ type OciArtifactResponseBody struct { // DevBuildRequestRequestBody is used to define fields on request body types. type DevBuildRequestRequestBody struct { - BuildEnv *string `form:"buildEnv,omitempty" json:"buildEnv,omitempty" xml:"buildEnv,omitempty"` - BuilderImg *string `form:"builderImg,omitempty" json:"builderImg,omitempty" xml:"builderImg,omitempty"` + BuildEnv *string `form:"build_env,omitempty" json:"build_env,omitempty" xml:"build_env,omitempty"` + BuilderImg *string `form:"builder_img,omitempty" json:"builder_img,omitempty" xml:"builder_img,omitempty"` Edition *string `form:"edition,omitempty" json:"edition,omitempty" xml:"edition,omitempty"` Features *string `form:"features,omitempty" json:"features,omitempty" xml:"features,omitempty"` GitRef *string `form:"gitRef,omitempty" json:"gitRef,omitempty" xml:"gitRef,omitempty"` GithubRepo *string `form:"githubRepo,omitempty" json:"githubRepo,omitempty" xml:"githubRepo,omitempty"` - IsHotfix *bool `form:"isHotfix,omitempty" json:"isHotfix,omitempty" xml:"isHotfix,omitempty"` - IsPushGCR *bool `form:"isPushGCR,omitempty" json:"isPushGCR,omitempty" xml:"isPushGCR,omitempty"` - PipelineEngine *string `form:"pipelineEngine,omitempty" json:"pipelineEngine,omitempty" xml:"pipelineEngine,omitempty"` - PluginGitRef *string `form:"pluginGitRef,omitempty" json:"pluginGitRef,omitempty" xml:"pluginGitRef,omitempty"` + IsHotfix *bool `form:"is_hotfix,omitempty" json:"is_hotfix,omitempty" xml:"is_hotfix,omitempty"` + IsPushGcr *bool `form:"is_push_gcr,omitempty" json:"is_push_gcr,omitempty" xml:"is_push_gcr,omitempty"` + PipelineEngine *string `form:"pipeline_engine,omitempty" json:"pipeline_engine,omitempty" xml:"pipeline_engine,omitempty"` + PluginGitRef *string `form:"plugin_git_ref,omitempty" json:"plugin_git_ref,omitempty" xml:"plugin_git_ref,omitempty"` Product *string `form:"product,omitempty" json:"product,omitempty" xml:"product,omitempty"` ProductBaseImg *string `form:"productBaseImg,omitempty" json:"productBaseImg,omitempty" xml:"productBaseImg,omitempty"` ProductDockerfile *string `form:"productDockerfile,omitempty" json:"productDockerfile,omitempty" xml:"productDockerfile,omitempty"` @@ -362,24 +370,24 @@ type DevBuildRequestBody struct { // DevBuildMetaRequestBody is used to define fields on request body types. type DevBuildMetaRequestBody struct { - CreatedAt *string `form:"createdAt,omitempty" json:"createdAt,omitempty" xml:"createdAt,omitempty"` - CreatedBy *string `form:"createdBy,omitempty" json:"createdBy,omitempty" xml:"createdBy,omitempty"` - UpdatedAt *string `form:"updatedAt,omitempty" json:"updatedAt,omitempty" xml:"updatedAt,omitempty"` + CreatedBy *string `form:"created_by,omitempty" json:"created_by,omitempty" xml:"created_by,omitempty"` + CreatedAt *string `form:"created_at,omitempty" json:"created_at,omitempty" xml:"created_at,omitempty"` + UpdatedAt *string `form:"updated_at,omitempty" json:"updated_at,omitempty" xml:"updated_at,omitempty"` } // DevBuildSpecRequestBody is used to define fields on request body types. type DevBuildSpecRequestBody struct { - BuildEnv *string `form:"buildEnv,omitempty" json:"buildEnv,omitempty" xml:"buildEnv,omitempty"` - BuilderImg *string `form:"builderImg,omitempty" json:"builderImg,omitempty" xml:"builderImg,omitempty"` + BuildEnv *string `form:"build_env,omitempty" json:"build_env,omitempty" xml:"build_env,omitempty"` + BuilderImg *string `form:"builder_img,omitempty" json:"builder_img,omitempty" xml:"builder_img,omitempty"` Edition *string `form:"edition,omitempty" json:"edition,omitempty" xml:"edition,omitempty"` Features *string `form:"features,omitempty" json:"features,omitempty" xml:"features,omitempty"` GitHash *string `form:"gitHash,omitempty" json:"gitHash,omitempty" xml:"gitHash,omitempty"` GitRef *string `form:"gitRef,omitempty" json:"gitRef,omitempty" xml:"gitRef,omitempty"` GithubRepo *string `form:"githubRepo,omitempty" json:"githubRepo,omitempty" xml:"githubRepo,omitempty"` - IsHotfix *bool `form:"isHotfix,omitempty" json:"isHotfix,omitempty" xml:"isHotfix,omitempty"` - IsPushGCR *bool `form:"isPushGCR,omitempty" json:"isPushGCR,omitempty" xml:"isPushGCR,omitempty"` - PipelineEngine *string `form:"pipelineEngine,omitempty" json:"pipelineEngine,omitempty" xml:"pipelineEngine,omitempty"` - PluginGitRef *string `form:"pluginGitRef,omitempty" json:"pluginGitRef,omitempty" xml:"pluginGitRef,omitempty"` + IsHotfix *bool `form:"is_hotfix,omitempty" json:"is_hotfix,omitempty" xml:"is_hotfix,omitempty"` + IsPushGcr *bool `form:"is_push_gcr,omitempty" json:"is_push_gcr,omitempty" xml:"is_push_gcr,omitempty"` + PipelineEngine *string `form:"pipeline_engine,omitempty" json:"pipeline_engine,omitempty" xml:"pipeline_engine,omitempty"` + PluginGitRef *string `form:"plugin_git_ref,omitempty" json:"plugin_git_ref,omitempty" xml:"plugin_git_ref,omitempty"` Product *string `form:"product,omitempty" json:"product,omitempty" xml:"product,omitempty"` ProductBaseImg *string `form:"productBaseImg,omitempty" json:"productBaseImg,omitempty" xml:"productBaseImg,omitempty"` ProductDockerfile *string `form:"productDockerfile,omitempty" json:"productDockerfile,omitempty" xml:"productDockerfile,omitempty"` @@ -630,11 +638,18 @@ func NewRerunInternalServerErrorResponseBody(res *devbuild.HTTPError) *RerunInte } // NewListPayload builds a devbuild service list endpoint payload. -func NewListPayload(size int, offset int, hotfix *bool, createdBy *string) *devbuild.ListPayload { +func NewListPayload(body *ListRequestBody, page int, pageSize int, hotfix bool, sort string, createdBy *string) *devbuild.ListPayload { v := &devbuild.ListPayload{} - v.Size = size - v.Offset = offset + if body.Direction != nil { + v.Direction = *body.Direction + } + if body.Direction == nil { + v.Direction = "desc" + } + v.Page = page + v.PageSize = pageSize v.Hotfix = hotfix + v.Sort = sort v.CreatedBy = createdBy return v @@ -679,16 +694,26 @@ func NewRerunPayload(id int, dryrun bool) *devbuild.RerunPayload { return v } +// ValidateListRequestBody runs the validations defined on ListRequestBody +func ValidateListRequestBody(body *ListRequestBody) (err error) { + if body.Direction != nil { + if !(*body.Direction == "asc" || *body.Direction == "desc") { + err = goa.MergeErrors(err, goa.InvalidEnumValueError("body.direction", *body.Direction, []any{"asc", "desc"})) + } + } + return +} + // ValidateCreateRequestBody runs the validations defined on CreateRequestBody func ValidateCreateRequestBody(body *CreateRequestBody) (err error) { if body.CreatedBy == nil { - err = goa.MergeErrors(err, goa.MissingFieldError("createdBy", "body")) + err = goa.MergeErrors(err, goa.MissingFieldError("created_by", "body")) } if body.Request == nil { err = goa.MergeErrors(err, goa.MissingFieldError("request", "body")) } if body.CreatedBy != nil { - err = goa.MergeErrors(err, goa.ValidateFormat("body.createdBy", *body.CreatedBy, goa.FormatEmail)) + err = goa.MergeErrors(err, goa.ValidateFormat("body.created_by", *body.CreatedBy, goa.FormatEmail)) } if body.Request != nil { if err2 := ValidateDevBuildRequestRequestBody(body.Request); err2 != nil { @@ -733,7 +758,7 @@ func ValidateDevBuildRequestRequestBody(body *DevBuildRequestRequestBody) (err e } if body.PipelineEngine != nil { if !(*body.PipelineEngine == "jenkins" || *body.PipelineEngine == "tekton") { - err = goa.MergeErrors(err, goa.InvalidEnumValueError("body.pipelineEngine", *body.PipelineEngine, []any{"jenkins", "tekton"})) + err = goa.MergeErrors(err, goa.InvalidEnumValueError("body.pipeline_engine", *body.PipelineEngine, []any{"jenkins", "tekton"})) } } if body.Product != nil { @@ -781,13 +806,22 @@ func ValidateDevBuildRequestBody(body *DevBuildRequestBody) (err error) { // DevBuildMetaRequestBody func ValidateDevBuildMetaRequestBody(body *DevBuildMetaRequestBody) (err error) { if body.CreatedAt == nil { - err = goa.MergeErrors(err, goa.MissingFieldError("createdAt", "body")) + err = goa.MergeErrors(err, goa.MissingFieldError("created_at", "body")) } if body.CreatedBy == nil { - err = goa.MergeErrors(err, goa.MissingFieldError("createdBy", "body")) + err = goa.MergeErrors(err, goa.MissingFieldError("created_by", "body")) } if body.UpdatedAt == nil { - err = goa.MergeErrors(err, goa.MissingFieldError("updatedAt", "body")) + err = goa.MergeErrors(err, goa.MissingFieldError("updated_at", "body")) + } + if body.CreatedBy != nil { + err = goa.MergeErrors(err, goa.ValidateFormat("body.created_by", *body.CreatedBy, goa.FormatEmail)) + } + if body.CreatedAt != nil { + err = goa.MergeErrors(err, goa.ValidateFormat("body.created_at", *body.CreatedAt, goa.FormatDateTime)) + } + if body.UpdatedAt != nil { + err = goa.MergeErrors(err, goa.ValidateFormat("body.updated_at", *body.UpdatedAt, goa.FormatDateTime)) } return } @@ -796,10 +830,10 @@ func ValidateDevBuildMetaRequestBody(body *DevBuildMetaRequestBody) (err error) // DevBuildSpecRequestBody func ValidateDevBuildSpecRequestBody(body *DevBuildSpecRequestBody) (err error) { if body.BuildEnv == nil { - err = goa.MergeErrors(err, goa.MissingFieldError("buildEnv", "body")) + err = goa.MergeErrors(err, goa.MissingFieldError("build_env", "body")) } if body.BuilderImg == nil { - err = goa.MergeErrors(err, goa.MissingFieldError("builderImg", "body")) + err = goa.MergeErrors(err, goa.MissingFieldError("builder_img", "body")) } if body.Edition == nil { err = goa.MergeErrors(err, goa.MissingFieldError("edition", "body")) @@ -817,16 +851,16 @@ func ValidateDevBuildSpecRequestBody(body *DevBuildSpecRequestBody) (err error) err = goa.MergeErrors(err, goa.MissingFieldError("githubRepo", "body")) } if body.IsHotfix == nil { - err = goa.MergeErrors(err, goa.MissingFieldError("isHotfix", "body")) + err = goa.MergeErrors(err, goa.MissingFieldError("is_hotfix", "body")) } - if body.IsPushGCR == nil { - err = goa.MergeErrors(err, goa.MissingFieldError("isPushGCR", "body")) + if body.IsPushGcr == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("is_push_gcr", "body")) } if body.PipelineEngine == nil { - err = goa.MergeErrors(err, goa.MissingFieldError("pipelineEngine", "body")) + err = goa.MergeErrors(err, goa.MissingFieldError("pipeline_engine", "body")) } if body.PluginGitRef == nil { - err = goa.MergeErrors(err, goa.MissingFieldError("pluginGitRef", "body")) + err = goa.MergeErrors(err, goa.MissingFieldError("plugin_git_ref", "body")) } if body.Product == nil { err = goa.MergeErrors(err, goa.MissingFieldError("product", "body")) @@ -850,7 +884,7 @@ func ValidateDevBuildSpecRequestBody(body *DevBuildSpecRequestBody) (err error) } if body.PipelineEngine != nil { if !(*body.PipelineEngine == "jenkins" || *body.PipelineEngine == "tekton") { - err = goa.MergeErrors(err, goa.InvalidEnumValueError("body.pipelineEngine", *body.PipelineEngine, []any{"jenkins", "tekton"})) + err = goa.MergeErrors(err, goa.InvalidEnumValueError("body.pipeline_engine", *body.PipelineEngine, []any{"jenkins", "tekton"})) } } if body.Product != nil { diff --git a/experiments/tibuild-v2/internal/service/gen/http/openapi.json b/experiments/tibuild-v2/internal/service/gen/http/openapi.json new file mode 100644 index 00000000..6b771323 --- /dev/null +++ b/experiments/tibuild-v2/internal/service/gen/http/openapi.json @@ -0,0 +1 @@ +{"swagger":"2.0","info":{"title":"TiBuild API","description":"TiBuild API","contact":{"name":"Flare Zuo","email":"wuhui.zuo@pingcap.com","url":"https://github.com/wuhuizuo"},"version":"2.0.0"},"host":"localhost:8080","basePath":"/api/v2","consumes":["application/json","application/xml","application/gob"],"produces":["application/json","application/xml","application/gob"],"paths":{"/artifact/sync-image":{"post":{"tags":["artifact"],"summary":"syncImage artifact","description":"Sync hotfix image to dockerhub","operationId":"artifact#syncImage","parameters":[{"name":"SyncImageRequestBody","in":"body","required":true,"schema":{"$ref":"#/definitions/ImageSyncRequest","required":["source","target"]}}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/ImageSyncRequest","required":["source","target"]}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/HTTPError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/HTTPError","required":["code","message"]}}},"schemes":["http"]}},"/devbuilds":{"get":{"tags":["devbuild"],"summary":"list devbuild","description":"List devbuild with pagination support","operationId":"devbuild#list","parameters":[{"name":"page","in":"query","description":"The page number of items","required":false,"type":"integer","default":1},{"name":"page_size","in":"query","description":"Page size","required":false,"type":"integer","default":30},{"name":"hotfix","in":"query","description":"Filter hotfix","required":false,"type":"boolean","default":false},{"name":"sort","in":"query","description":"What to sort results by","required":false,"type":"string","default":"created_at","enum":["created_at","updated_at"]},{"name":"created_by","in":"query","description":"Filter created by","required":false,"type":"string"},{"name":"ListRequestBody","in":"body","required":true,"schema":{"$ref":"#/definitions/DevbuildListRequestBody"}}],"responses":{"200":{"description":"OK response.","schema":{"type":"array","items":{"$ref":"#/definitions/DevBuild"}}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/HTTPError","required":["code","message"]}}},"schemes":["http"]},"post":{"tags":["devbuild"],"summary":"create devbuild","description":"Create and trigger devbuild","operationId":"devbuild#create","parameters":[{"name":"dryrun","in":"query","description":"Dry run","required":false,"type":"boolean","default":false},{"name":"CreateRequestBody","in":"body","required":true,"schema":{"$ref":"#/definitions/DevbuildCreateRequestBody","required":["created_by","request"]}}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/DevBuild","required":["id","meta","spec","status"]}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/HTTPError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/HTTPError","required":["code","message"]}}},"schemes":["http"]}},"/devbuilds/{id}":{"get":{"tags":["devbuild"],"summary":"get devbuild","description":"Get devbuild","operationId":"devbuild#get","parameters":[{"name":"sync","in":"query","description":"Whether sync with jenkins","required":false,"type":"boolean","default":false},{"name":"id","in":"path","description":"ID of build","required":true,"type":"integer"}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/DevBuild","required":["id","meta","spec","status"]}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/HTTPError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/HTTPError","required":["code","message"]}}},"schemes":["http"]},"put":{"tags":["devbuild"],"summary":"update devbuild","description":"Update devbuild status","operationId":"devbuild#update","parameters":[{"name":"dryrun","in":"query","description":"Dry run","required":false,"type":"boolean","default":false},{"name":"id","in":"path","description":"ID of build","required":true,"type":"integer"},{"name":"UpdateRequestBody","in":"body","required":true,"schema":{"$ref":"#/definitions/DevbuildUpdateRequestBody","required":["DevBuild"]}}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/DevBuild","required":["id","meta","spec","status"]}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/HTTPError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/HTTPError","required":["code","message"]}}},"schemes":["http"]}},"/devbuilds/{id}/rerun":{"post":{"tags":["devbuild"],"summary":"rerun devbuild","description":"Rerun devbuild","operationId":"devbuild#rerun","parameters":[{"name":"dryrun","in":"query","description":"Dry run","required":false,"type":"boolean","default":false},{"name":"id","in":"path","description":"ID of build","required":true,"type":"integer"}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/DevBuild","required":["id","meta","spec","status"]}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/HTTPError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/HTTPError","required":["code","message"]}}},"schemes":["http"]}}},"definitions":{"BinArtifact":{"title":"BinArtifact","type":"object","properties":{"component":{"type":"string","example":"Sed cupiditate possimus qui."},"ociFile":{"$ref":"#/definitions/OciFile"},"platform":{"type":"string","example":"Animi nobis."},"sha256OciFile":{"$ref":"#/definitions/OciFile"},"sha256URL":{"type":"string","example":"Esse consequatur eaque corrupti qui consequatur quos."},"url":{"type":"string","example":"Aliquid non earum."}},"example":{"component":"Molestiae dolorum aut magnam ipsam maiores et.","ociFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"platform":"Adipisci ducimus aut harum quia ipsa perferendis.","sha256OciFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"sha256URL":"Pariatur enim voluptate autem provident magnam.","url":"Voluptas ut fugiat illo voluptas."},"required":["component","ociFile","platform","sha256OciFile","sha256URL","url"]},"BuildReport":{"title":"BuildReport","type":"object","properties":{"binaries":{"type":"array","items":{"$ref":"#/definitions/BinArtifact"},"example":[{"component":"Consequatur dolores provident unde non est quo.","ociFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"platform":"Quia iure aut rerum velit fugit.","sha256OciFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"sha256URL":"Et quia.","url":"Perspiciatis similique quis."},{"component":"Consequatur dolores provident unde non est quo.","ociFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"platform":"Quia iure aut rerum velit fugit.","sha256OciFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"sha256URL":"Et quia.","url":"Perspiciatis similique quis."},{"component":"Consequatur dolores provident unde non est quo.","ociFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"platform":"Quia iure aut rerum velit fugit.","sha256OciFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"sha256URL":"Et quia.","url":"Perspiciatis similique quis."}]},"gitHash":{"type":"string","example":"Veniam quis itaque in dignissimos et."},"images":{"type":"array","items":{"$ref":"#/definitions/ImageArtifact"},"example":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}]},"pluginGitHash":{"type":"string","example":"Asperiores neque aut velit."},"printedVersion":{"type":"string","example":"Ullam quis."}},"example":{"binaries":[{"component":"Consequatur dolores provident unde non est quo.","ociFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"platform":"Quia iure aut rerum velit fugit.","sha256OciFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"sha256URL":"Et quia.","url":"Perspiciatis similique quis."},{"component":"Consequatur dolores provident unde non est quo.","ociFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"platform":"Quia iure aut rerum velit fugit.","sha256OciFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"sha256URL":"Et quia.","url":"Perspiciatis similique quis."},{"component":"Consequatur dolores provident unde non est quo.","ociFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"platform":"Quia iure aut rerum velit fugit.","sha256OciFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"sha256URL":"Et quia.","url":"Perspiciatis similique quis."}],"gitHash":"At ut quia placeat.","images":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}],"pluginGitHash":"Minima qui modi.","printedVersion":"Impedit ut et vel natus et quidem."},"required":["binaries","gitHash","images","pluginGitHash","printedVersion"]},"DevBuild":{"title":"DevBuild","type":"object","properties":{"id":{"type":"integer","example":7476388818621186205,"format":"int64"},"meta":{"$ref":"#/definitions/DevBuildMeta"},"spec":{"$ref":"#/definitions/DevBuildSpec"},"status":{"$ref":"#/definitions/DevBuildStatus"}},"example":{"id":4085216939080665207,"meta":{"created_at":"1992-07-10T12:26:40Z","created_by":"maurine_nikolaus@nitzsche.biz","updated_at":"2009-08-03T00:19:43Z"},"spec":{"build_env":"Quia numquam suscipit corrupti qui.","builder_img":"Sint ut blanditiis.","edition":"enterprise","features":"Aperiam natus in ut quae accusantium.","gitHash":"Numquam possimus possimus ipsum rerum unde.","gitRef":"Numquam neque reiciendis quaerat.","githubRepo":"Cumque ea est laboriosam esse dicta architecto.","is_hotfix":true,"is_push_gcr":false,"pipeline_engine":"jenkins","plugin_git_ref":"Minima iusto.","product":"tidb-dashboard","productBaseImg":"Et aut error doloremque non itaque.","productDockerfile":"Voluptas quia reprehenderit fugit quo debitis numquam.","targetImg":"Qui a voluptatem pariatur aspernatur sed.","version":"Nostrum autem."},"status":{"buildReport":{"binaries":[{"component":"Consequatur dolores provident unde non est quo.","ociFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"platform":"Quia iure aut rerum velit fugit.","sha256OciFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"sha256URL":"Et quia.","url":"Perspiciatis similique quis."},{"component":"Consequatur dolores provident unde non est quo.","ociFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"platform":"Quia iure aut rerum velit fugit.","sha256OciFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"sha256URL":"Et quia.","url":"Perspiciatis similique quis."},{"component":"Consequatur dolores provident unde non est quo.","ociFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"platform":"Quia iure aut rerum velit fugit.","sha256OciFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"sha256URL":"Et quia.","url":"Perspiciatis similique quis."}],"gitHash":"Possimus maxime et qui eius unde eos.","images":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}],"pluginGitHash":"Id molestiae ea.","printedVersion":"Assumenda ducimus ut architecto architecto quos."},"errMsg":"Non ut vel deserunt officiis quia et.","pipelineBuildID":7552297125772394623,"pipelineEndAt":"Blanditiis aperiam eaque eos nostrum dolore nulla.","pipelineStartAt":"Eos molestiae provident omnis neque.","pipelineViewURL":"Illum possimus provident quisquam illum sed ea.","pipelineViewURLs":["Velit explicabo a qui pariatur.","Dolorem velit dolor.","Qui earum omnis."],"status":"SUCCESS","tektonStatus":{"pipelines":[{"endAt":"Nesciunt suscipit aperiam dignissimos illo.","gitHash":"Asperiores aperiam consequatur perferendis delectus.","images":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}],"name":"Nulla ratione ex.","ociArtifacts":[{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."}],"platform":"Quia quia.","startAt":"Sed ut.","status":"FAILURE","url":"Quibusdam possimus officiis et qui suscipit."},{"endAt":"Nesciunt suscipit aperiam dignissimos illo.","gitHash":"Asperiores aperiam consequatur perferendis delectus.","images":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}],"name":"Nulla ratione ex.","ociArtifacts":[{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."}],"platform":"Quia quia.","startAt":"Sed ut.","status":"FAILURE","url":"Quibusdam possimus officiis et qui suscipit."}]}}},"required":["id","meta","spec","status"]},"DevBuildMeta":{"title":"DevBuildMeta","type":"object","properties":{"created_at":{"type":"string","example":"1999-09-05T19:26:09Z","format":"date-time"},"created_by":{"type":"string","example":"lane@pouros.com","format":"email"},"updated_at":{"type":"string","example":"2008-08-30T10:49:02Z","format":"date-time"}},"example":{"created_at":"1978-01-05T03:36:29Z","created_by":"patricia.dach@reynoldsyundt.biz","updated_at":"1999-03-11T03:51:40Z"},"required":["created_at","created_by","updated_at"]},"DevBuildRequest":{"title":"DevBuildRequest","type":"object","properties":{"build_env":{"type":"string","example":"Vel suscipit aut aut aut aliquid."},"builder_img":{"type":"string","example":"Sequi minima eos sed ut."},"edition":{"type":"string","example":"enterprise","enum":["enterprise","community"]},"features":{"type":"string","example":"Quos odio fuga culpa voluptatem tempora explicabo."},"gitRef":{"type":"string","example":"A quis autem."},"githubRepo":{"type":"string","example":"Sint nesciunt nemo reiciendis."},"is_hotfix":{"type":"boolean","example":false},"is_push_gcr":{"type":"boolean","example":false},"pipeline_engine":{"type":"string","example":"tekton","enum":["jenkins","tekton"]},"plugin_git_ref":{"type":"string","example":"Natus voluptas fuga ut ut distinctio."},"product":{"type":"string","example":"dumpling","enum":["tidb","enterprise-plugin","tikv","pd","tiflash","br","dumpling","tidb-lightning","ticdc","ticdc-newarch","dm","tidb-binlog","tidb-tools","ng-monitoring","tidb-dashboard","drainer","pump",""]},"productBaseImg":{"type":"string","example":"Vel et."},"productDockerfile":{"type":"string","example":"Est beatae ad itaque possimus impedit rerum."},"targetImg":{"type":"string","example":"Sunt ut voluptates."},"version":{"type":"string","example":"Eveniet ratione quia delectus voluptas nam."}},"example":{"build_env":"Consequatur atque ut fugit consectetur explicabo.","builder_img":"Cumque fugiat minus quas ut voluptatibus.","edition":"community","features":"Aut facere accusantium nobis distinctio.","gitRef":"Non ut et asperiores non accusantium ex.","githubRepo":"Quod nihil sint unde sint veniam sequi.","is_hotfix":false,"is_push_gcr":false,"pipeline_engine":"tekton","plugin_git_ref":"Delectus provident omnis.","product":"tidb-dashboard","productBaseImg":"Sunt ut est illum laudantium qui.","productDockerfile":"Commodi nisi id qui voluptates et rem.","targetImg":"Voluptas nisi esse accusantium molestiae nihil.","version":"Vitae ipsa."},"required":["edition","gitRef","product","version"]},"DevBuildSpec":{"title":"DevBuildSpec","type":"object","properties":{"build_env":{"type":"string","example":"Sunt esse et impedit voluptatem."},"builder_img":{"type":"string","example":"Recusandae ullam neque autem."},"edition":{"type":"string","example":"community","enum":["enterprise","community"]},"features":{"type":"string","example":"Totam vel sint explicabo."},"gitHash":{"type":"string","example":"Dolor dolor accusantium explicabo."},"gitRef":{"type":"string","example":"Praesentium et dicta."},"githubRepo":{"type":"string","example":"Sed qui."},"is_hotfix":{"type":"boolean","example":true},"is_push_gcr":{"type":"boolean","example":true},"pipeline_engine":{"type":"string","example":"tekton","enum":["jenkins","tekton"]},"plugin_git_ref":{"type":"string","example":"Dolores fuga quae."},"product":{"type":"string","example":"tidb-dashboard","enum":["tidb","enterprise-plugin","tikv","pd","tiflash","br","dumpling","tidb-lightning","ticdc","ticdc-newarch","dm","tidb-binlog","tidb-tools","ng-monitoring","tidb-dashboard","drainer","pump",""]},"productBaseImg":{"type":"string","example":"Eius enim quia."},"productDockerfile":{"type":"string","example":"Delectus voluptas accusantium quis."},"targetImg":{"type":"string","example":"Perferendis eveniet."},"version":{"type":"string","example":"Accusantium voluptatem."}},"example":{"build_env":"Consectetur omnis at doloribus non eos unde.","builder_img":"Quibusdam sunt voluptatem eveniet impedit enim.","edition":"enterprise","features":"Vero eligendi ex quibusdam aut voluptas.","gitHash":"Asperiores repellendus omnis itaque dicta.","gitRef":"Sit deleniti illo.","githubRepo":"Optio ut cum minima labore omnis.","is_hotfix":false,"is_push_gcr":false,"pipeline_engine":"jenkins","plugin_git_ref":"Eaque quia et.","product":"tiflash","productBaseImg":"Reiciendis doloribus velit distinctio.","productDockerfile":"Illum in maxime nisi et fugit inventore.","targetImg":"Dolores qui assumenda amet est distinctio.","version":"Placeat consequatur repellendus voluptatibus."},"required":["build_env","builder_img","edition","features","gitHash","gitRef","githubRepo","is_hotfix","is_push_gcr","pipeline_engine","plugin_git_ref","product","productBaseImg","productDockerfile","targetImg","version"]},"DevBuildStatus":{"title":"DevBuildStatus","type":"object","properties":{"buildReport":{"$ref":"#/definitions/BuildReport"},"errMsg":{"type":"string","example":"Non quas et ex reprehenderit ipsum."},"pipelineBuildID":{"type":"integer","example":7153683753120193758,"format":"int64"},"pipelineEndAt":{"type":"string","example":"Sit fuga magnam rerum architecto."},"pipelineStartAt":{"type":"string","example":"Qui unde."},"pipelineViewURL":{"type":"string","example":"Autem praesentium reprehenderit quisquam et velit."},"pipelineViewURLs":{"type":"array","items":{"type":"string","example":"Sequi ea incidunt magni ut laborum nihil."},"example":["Impedit et quibusdam et consectetur nihil.","Nihil ad aspernatur."]},"status":{"type":"string","example":"FAILURE","enum":["PENDING","PROCESSING","ABORTED","SUCCESS","FAILURE","ERROR"]},"tektonStatus":{"$ref":"#/definitions/TektonStatus"}},"example":{"buildReport":{"binaries":[{"component":"Consequatur dolores provident unde non est quo.","ociFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"platform":"Quia iure aut rerum velit fugit.","sha256OciFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"sha256URL":"Et quia.","url":"Perspiciatis similique quis."},{"component":"Consequatur dolores provident unde non est quo.","ociFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"platform":"Quia iure aut rerum velit fugit.","sha256OciFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"sha256URL":"Et quia.","url":"Perspiciatis similique quis."},{"component":"Consequatur dolores provident unde non est quo.","ociFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"platform":"Quia iure aut rerum velit fugit.","sha256OciFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"sha256URL":"Et quia.","url":"Perspiciatis similique quis."}],"gitHash":"Possimus maxime et qui eius unde eos.","images":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}],"pluginGitHash":"Id molestiae ea.","printedVersion":"Assumenda ducimus ut architecto architecto quos."},"errMsg":"Rerum aperiam vel quae recusandae neque dolorum.","pipelineBuildID":3764516161818136705,"pipelineEndAt":"Ea repellat quasi sequi vitae.","pipelineStartAt":"Non velit fugit nihil temporibus.","pipelineViewURL":"Optio mollitia minus quos est.","pipelineViewURLs":["Aut et.","Id assumenda.","Officiis sit delectus commodi voluptatem enim.","Quo quo vel."],"status":"ABORTED","tektonStatus":{"pipelines":[{"endAt":"Nesciunt suscipit aperiam dignissimos illo.","gitHash":"Asperiores aperiam consequatur perferendis delectus.","images":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}],"name":"Nulla ratione ex.","ociArtifacts":[{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."}],"platform":"Quia quia.","startAt":"Sed ut.","status":"FAILURE","url":"Quibusdam possimus officiis et qui suscipit."},{"endAt":"Nesciunt suscipit aperiam dignissimos illo.","gitHash":"Asperiores aperiam consequatur perferendis delectus.","images":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}],"name":"Nulla ratione ex.","ociArtifacts":[{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."}],"platform":"Quia quia.","startAt":"Sed ut.","status":"FAILURE","url":"Quibusdam possimus officiis et qui suscipit."}]}},"required":["buildReport","errMsg","pipelineBuildID","pipelineEndAt","pipelineStartAt","pipelineViewURL","pipelineViewURLs","status","tektonStatus"]},"DevbuildCreateRequestBody":{"title":"DevbuildCreateRequestBody","type":"object","properties":{"created_by":{"type":"string","description":"Creator of build","example":"litzy@howe.net","format":"email"},"request":{"$ref":"#/definitions/DevBuildRequest"}},"example":{"created_by":"mark@koss.name","request":{"build_env":"Voluptate doloribus architecto numquam est.","builder_img":"Neque doloremque.","edition":"enterprise","features":"Commodi dolorum.","gitRef":"Et facere magnam velit optio est.","githubRepo":"Doloribus nisi corporis nihil soluta.","is_hotfix":true,"is_push_gcr":false,"pipeline_engine":"tekton","plugin_git_ref":"Qui necessitatibus possimus ab quos facere.","product":"tidb","productBaseImg":"Voluptatem rem earum aut.","productDockerfile":"Nulla aut natus totam esse maxime aliquid.","targetImg":"Numquam at illo voluptas dolor atque.","version":"Beatae sunt nesciunt amet autem."}},"required":["created_by","request"]},"DevbuildListRequestBody":{"title":"DevbuildListRequestBody","type":"object","properties":{"direction":{"type":"string","description":"The direction of the sort","default":"desc","example":"desc","enum":["asc","desc"]}},"example":{"direction":"desc"}},"DevbuildUpdateRequestBody":{"title":"DevbuildUpdateRequestBody","type":"object","properties":{"DevBuild":{"$ref":"#/definitions/DevBuild"}},"example":{"DevBuild":{"id":8425332152695240675,"meta":{"created_at":"1982-06-14T15:45:52Z","created_by":"khalil_steuber@rippin.org","updated_at":"1994-05-27T04:49:34Z"},"spec":{"build_env":"Eum sit.","builder_img":"Suscipit et.","edition":"enterprise","features":"Magni suscipit eum vel officiis quasi sit.","gitHash":"Ex amet est nemo harum voluptas.","gitRef":"Eaque exercitationem et.","githubRepo":"Blanditiis velit voluptatem exercitationem.","is_hotfix":true,"is_push_gcr":true,"pipeline_engine":"tekton","plugin_git_ref":"Error officiis impedit quaerat consectetur voluptas ea.","product":"br","productBaseImg":"Numquam explicabo quod quidem perspiciatis.","productDockerfile":"Dolor laudantium dolores saepe nihil voluptas id.","targetImg":"Quasi quasi error laboriosam qui.","version":"Dolorum est nisi voluptatem et harum quae."},"status":{"buildReport":{"binaries":[{"component":"Qui tempora quos quae velit sint quia.","ociFile":{"file":"Commodi eius et ad ut.","repo":"Dolor deserunt atque exercitationem non placeat.","tag":"Possimus libero."},"platform":"Ab quos esse delectus ea rem.","sha256OciFile":{"file":"Commodi eius et ad ut.","repo":"Dolor deserunt atque exercitationem non placeat.","tag":"Possimus libero."},"sha256URL":"Voluptatem ratione hic quae tempora ratione.","url":"Quos eaque rerum expedita perspiciatis."},{"component":"Qui tempora quos quae velit sint quia.","ociFile":{"file":"Commodi eius et ad ut.","repo":"Dolor deserunt atque exercitationem non placeat.","tag":"Possimus libero."},"platform":"Ab quos esse delectus ea rem.","sha256OciFile":{"file":"Commodi eius et ad ut.","repo":"Dolor deserunt atque exercitationem non placeat.","tag":"Possimus libero."},"sha256URL":"Voluptatem ratione hic quae tempora ratione.","url":"Quos eaque rerum expedita perspiciatis."},{"component":"Qui tempora quos quae velit sint quia.","ociFile":{"file":"Commodi eius et ad ut.","repo":"Dolor deserunt atque exercitationem non placeat.","tag":"Possimus libero."},"platform":"Ab quos esse delectus ea rem.","sha256OciFile":{"file":"Commodi eius et ad ut.","repo":"Dolor deserunt atque exercitationem non placeat.","tag":"Possimus libero."},"sha256URL":"Voluptatem ratione hic quae tempora ratione.","url":"Quos eaque rerum expedita perspiciatis."}],"gitHash":"Dolore ipsam non.","images":[{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."},{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."}],"pluginGitHash":"Non eligendi eum.","printedVersion":"Asperiores sit consequatur repudiandae voluptas sit."},"errMsg":"Illum perferendis.","pipelineBuildID":7878572798948134575,"pipelineEndAt":"Distinctio minima molestiae quis.","pipelineStartAt":"Tempora earum quam est architecto.","pipelineViewURL":"Quia delectus qui minima.","pipelineViewURLs":["Aut modi voluptas aut eveniet.","Esse aut.","Delectus dolore libero aut.","Corrupti autem iste."],"status":"FAILURE","tektonStatus":{"pipelines":[{"endAt":"Animi at sequi error.","gitHash":"Aut molestiae.","images":[{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."},{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."},{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."}],"name":"Occaecati omnis sunt a perspiciatis ratione.","ociArtifacts":[{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."}],"platform":"Explicabo id eum quae illum vitae necessitatibus.","startAt":"Accusantium nostrum quaerat necessitatibus distinctio nobis.","status":"PROCESSING","url":"Vero sunt culpa molestiae sint ut."},{"endAt":"Animi at sequi error.","gitHash":"Aut molestiae.","images":[{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."},{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."},{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."}],"name":"Occaecati omnis sunt a perspiciatis ratione.","ociArtifacts":[{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."}],"platform":"Explicabo id eum quae illum vitae necessitatibus.","startAt":"Accusantium nostrum quaerat necessitatibus distinctio nobis.","status":"PROCESSING","url":"Vero sunt culpa molestiae sint ut."},{"endAt":"Animi at sequi error.","gitHash":"Aut molestiae.","images":[{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."},{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."},{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."}],"name":"Occaecati omnis sunt a perspiciatis ratione.","ociArtifacts":[{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."}],"platform":"Explicabo id eum quae illum vitae necessitatibus.","startAt":"Accusantium nostrum quaerat necessitatibus distinctio nobis.","status":"PROCESSING","url":"Vero sunt culpa molestiae sint ut."},{"endAt":"Animi at sequi error.","gitHash":"Aut molestiae.","images":[{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."},{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."},{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."}],"name":"Occaecati omnis sunt a perspiciatis ratione.","ociArtifacts":[{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."}],"platform":"Explicabo id eum quae illum vitae necessitatibus.","startAt":"Accusantium nostrum quaerat necessitatibus distinctio nobis.","status":"PROCESSING","url":"Vero sunt culpa molestiae sint ut."}]}}}},"required":["DevBuild"]},"HTTPError":{"title":"HTTPError","type":"object","properties":{"code":{"type":"integer","example":8243505271085084803,"format":"int64"},"message":{"type":"string","example":"Accusamus a a exercitationem."}},"description":"Bad Request","example":{"code":6397685005227921493,"message":"Modi aut beatae quasi fuga qui."},"required":["code","message"]},"ImageArtifact":{"title":"ImageArtifact","type":"object","properties":{"platform":{"type":"string","example":"Molestiae id magni esse consectetur saepe recusandae."},"url":{"type":"string","example":"Impedit occaecati."}},"example":{"platform":"Et ad earum possimus accusamus.","url":"Et dolorum natus."},"required":["platform","url"]},"ImageSyncRequest":{"title":"ImageSyncRequest","type":"object","properties":{"source":{"type":"string","example":"Laudantium itaque dolor recusandae."},"target":{"type":"string","example":"Deleniti eum."}},"example":{"source":"Eligendi dolorem autem ullam.","target":"Quaerat repellendus similique expedita quia."},"required":["source","target"]},"OciArtifact":{"title":"OciArtifact","type":"object","properties":{"files":{"type":"array","items":{"type":"string","example":"Doloribus dolor officiis nihil rerum."},"example":["Veniam voluptates nisi ex repellat.","Nihil eos et ab."]},"repo":{"type":"string","example":"Sed pariatur."},"tag":{"type":"string","example":"Quo nulla."}},"example":{"files":["Quas non omnis.","Quo laboriosam reprehenderit et repellendus qui."],"repo":"Nostrum et officiis incidunt et.","tag":"Consequatur recusandae voluptatibus qui."},"required":["files","repo","tag"]},"OciFile":{"title":"OciFile","type":"object","properties":{"file":{"type":"string","example":"Asperiores alias sapiente ratione dolor eum."},"repo":{"type":"string","example":"Rem enim."},"tag":{"type":"string","example":"Cum rerum aut aut blanditiis."}},"example":{"file":"Rem beatae recusandae in et.","repo":"Iusto laudantium similique occaecati dignissimos accusantium.","tag":"Quia aut tempore dolores."},"required":["file","repo","tag"]},"TektonPipeline":{"title":"TektonPipeline","type":"object","properties":{"endAt":{"type":"string","example":"Explicabo nemo consequatur est inventore rerum veniam."},"gitHash":{"type":"string","example":"Est quod."},"images":{"type":"array","items":{"$ref":"#/definitions/ImageArtifact"},"example":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}]},"name":{"type":"string","example":"Dicta officiis magni enim qui."},"ociArtifacts":{"type":"array","items":{"$ref":"#/definitions/OciArtifact"},"example":[{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."}]},"platform":{"type":"string","example":"Autem omnis qui autem aliquid voluptas magni."},"startAt":{"type":"string","example":"Voluptates sed minima maiores rem aliquid aut."},"status":{"type":"string","example":"FAILURE","enum":["PENDING","PROCESSING","ABORTED","SUCCESS","FAILURE","ERROR"]},"url":{"type":"string","example":"Quisquam voluptatem doloribus necessitatibus."}},"example":{"endAt":"Quo voluptatem.","gitHash":"Itaque et.","images":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}],"name":"Quas earum qui ea commodi.","ociArtifacts":[{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."}],"platform":"Et assumenda.","startAt":"Qui saepe quas in.","status":"PENDING","url":"Mollitia qui ex fuga sit harum."},"required":["endAt","gitHash","images","name","ociArtifacts","platform","startAt","status","url"]},"TektonStatus":{"title":"TektonStatus","type":"object","properties":{"pipelines":{"type":"array","items":{"$ref":"#/definitions/TektonPipeline"},"example":[{"endAt":"Nesciunt suscipit aperiam dignissimos illo.","gitHash":"Asperiores aperiam consequatur perferendis delectus.","images":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}],"name":"Nulla ratione ex.","ociArtifacts":[{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."}],"platform":"Quia quia.","startAt":"Sed ut.","status":"FAILURE","url":"Quibusdam possimus officiis et qui suscipit."},{"endAt":"Nesciunt suscipit aperiam dignissimos illo.","gitHash":"Asperiores aperiam consequatur perferendis delectus.","images":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}],"name":"Nulla ratione ex.","ociArtifacts":[{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."}],"platform":"Quia quia.","startAt":"Sed ut.","status":"FAILURE","url":"Quibusdam possimus officiis et qui suscipit."}]}},"example":{"pipelines":[{"endAt":"Nesciunt suscipit aperiam dignissimos illo.","gitHash":"Asperiores aperiam consequatur perferendis delectus.","images":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}],"name":"Nulla ratione ex.","ociArtifacts":[{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."}],"platform":"Quia quia.","startAt":"Sed ut.","status":"FAILURE","url":"Quibusdam possimus officiis et qui suscipit."},{"endAt":"Nesciunt suscipit aperiam dignissimos illo.","gitHash":"Asperiores aperiam consequatur perferendis delectus.","images":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}],"name":"Nulla ratione ex.","ociArtifacts":[{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."}],"platform":"Quia quia.","startAt":"Sed ut.","status":"FAILURE","url":"Quibusdam possimus officiis et qui suscipit."},{"endAt":"Nesciunt suscipit aperiam dignissimos illo.","gitHash":"Asperiores aperiam consequatur perferendis delectus.","images":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}],"name":"Nulla ratione ex.","ociArtifacts":[{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."}],"platform":"Quia quia.","startAt":"Sed ut.","status":"FAILURE","url":"Quibusdam possimus officiis et qui suscipit."}]},"required":["pipelines"]}}} \ No newline at end of file diff --git a/experiments/tibuild-v2/internal/service/gen/http/openapi.yaml b/experiments/tibuild-v2/internal/service/gen/http/openapi.yaml new file mode 100644 index 00000000..37dfc1e2 --- /dev/null +++ b/experiments/tibuild-v2/internal/service/gen/http/openapi.yaml @@ -0,0 +1,1788 @@ +swagger: "2.0" +info: + title: TiBuild API + description: TiBuild API + contact: + name: Flare Zuo + email: wuhui.zuo@pingcap.com + url: https://github.com/wuhuizuo + version: 2.0.0 +host: localhost:8080 +basePath: /api/v2 +consumes: + - application/json + - application/xml + - application/gob +produces: + - application/json + - application/xml + - application/gob +paths: + /artifact/sync-image: + post: + tags: + - artifact + summary: syncImage artifact + description: Sync hotfix image to dockerhub + operationId: artifact#syncImage + parameters: + - name: SyncImageRequestBody + in: body + required: true + schema: + $ref: '#/definitions/ImageSyncRequest' + required: + - source + - target + responses: + "200": + description: OK response. + schema: + $ref: '#/definitions/ImageSyncRequest' + required: + - source + - target + "400": + description: Bad Request response. + schema: + $ref: '#/definitions/HTTPError' + required: + - code + - message + "500": + description: Internal Server Error response. + schema: + $ref: '#/definitions/HTTPError' + required: + - code + - message + schemes: + - http + /devbuilds: + get: + tags: + - devbuild + summary: list devbuild + description: List devbuild with pagination support + operationId: devbuild#list + parameters: + - name: page + in: query + description: The page number of items + required: false + type: integer + default: 1 + - name: page_size + in: query + description: Page size + required: false + type: integer + default: 30 + - name: hotfix + in: query + description: Filter hotfix + required: false + type: boolean + default: false + - name: sort + in: query + description: What to sort results by + required: false + type: string + default: created_at + enum: + - created_at + - updated_at + - name: created_by + in: query + description: Filter created by + required: false + type: string + - name: ListRequestBody + in: body + required: true + schema: + $ref: '#/definitions/DevbuildListRequestBody' + responses: + "200": + description: OK response. + schema: + type: array + items: + $ref: '#/definitions/DevBuild' + "400": + description: Bad Request response. + schema: + $ref: '#/definitions/HTTPError' + required: + - code + - message + schemes: + - http + post: + tags: + - devbuild + summary: create devbuild + description: Create and trigger devbuild + operationId: devbuild#create + parameters: + - name: dryrun + in: query + description: Dry run + required: false + type: boolean + default: false + - name: CreateRequestBody + in: body + required: true + schema: + $ref: '#/definitions/DevbuildCreateRequestBody' + required: + - created_by + - request + responses: + "200": + description: OK response. + schema: + $ref: '#/definitions/DevBuild' + required: + - id + - meta + - spec + - status + "400": + description: Bad Request response. + schema: + $ref: '#/definitions/HTTPError' + required: + - code + - message + "500": + description: Internal Server Error response. + schema: + $ref: '#/definitions/HTTPError' + required: + - code + - message + schemes: + - http + /devbuilds/{id}: + get: + tags: + - devbuild + summary: get devbuild + description: Get devbuild + operationId: devbuild#get + parameters: + - name: sync + in: query + description: Whether sync with jenkins + required: false + type: boolean + default: false + - name: id + in: path + description: ID of build + required: true + type: integer + responses: + "200": + description: OK response. + schema: + $ref: '#/definitions/DevBuild' + required: + - id + - meta + - spec + - status + "400": + description: Bad Request response. + schema: + $ref: '#/definitions/HTTPError' + required: + - code + - message + "500": + description: Internal Server Error response. + schema: + $ref: '#/definitions/HTTPError' + required: + - code + - message + schemes: + - http + put: + tags: + - devbuild + summary: update devbuild + description: Update devbuild status + operationId: devbuild#update + parameters: + - name: dryrun + in: query + description: Dry run + required: false + type: boolean + default: false + - name: id + in: path + description: ID of build + required: true + type: integer + - name: UpdateRequestBody + in: body + required: true + schema: + $ref: '#/definitions/DevbuildUpdateRequestBody' + required: + - DevBuild + responses: + "200": + description: OK response. + schema: + $ref: '#/definitions/DevBuild' + required: + - id + - meta + - spec + - status + "400": + description: Bad Request response. + schema: + $ref: '#/definitions/HTTPError' + required: + - code + - message + "500": + description: Internal Server Error response. + schema: + $ref: '#/definitions/HTTPError' + required: + - code + - message + schemes: + - http + /devbuilds/{id}/rerun: + post: + tags: + - devbuild + summary: rerun devbuild + description: Rerun devbuild + operationId: devbuild#rerun + parameters: + - name: dryrun + in: query + description: Dry run + required: false + type: boolean + default: false + - name: id + in: path + description: ID of build + required: true + type: integer + responses: + "200": + description: OK response. + schema: + $ref: '#/definitions/DevBuild' + required: + - id + - meta + - spec + - status + "400": + description: Bad Request response. + schema: + $ref: '#/definitions/HTTPError' + required: + - code + - message + "500": + description: Internal Server Error response. + schema: + $ref: '#/definitions/HTTPError' + required: + - code + - message + schemes: + - http +definitions: + BinArtifact: + title: BinArtifact + type: object + properties: + component: + type: string + example: Sed cupiditate possimus qui. + ociFile: + $ref: '#/definitions/OciFile' + platform: + type: string + example: Animi nobis. + sha256OciFile: + $ref: '#/definitions/OciFile' + sha256URL: + type: string + example: Esse consequatur eaque corrupti qui consequatur quos. + url: + type: string + example: Aliquid non earum. + example: + component: Molestiae dolorum aut magnam ipsam maiores et. + ociFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + platform: Adipisci ducimus aut harum quia ipsa perferendis. + sha256OciFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + sha256URL: Pariatur enim voluptate autem provident magnam. + url: Voluptas ut fugiat illo voluptas. + required: + - component + - ociFile + - platform + - sha256OciFile + - sha256URL + - url + BuildReport: + title: BuildReport + type: object + properties: + binaries: + type: array + items: + $ref: '#/definitions/BinArtifact' + example: + - component: Consequatur dolores provident unde non est quo. + ociFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + platform: Quia iure aut rerum velit fugit. + sha256OciFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + sha256URL: Et quia. + url: Perspiciatis similique quis. + - component: Consequatur dolores provident unde non est quo. + ociFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + platform: Quia iure aut rerum velit fugit. + sha256OciFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + sha256URL: Et quia. + url: Perspiciatis similique quis. + - component: Consequatur dolores provident unde non est quo. + ociFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + platform: Quia iure aut rerum velit fugit. + sha256OciFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + sha256URL: Et quia. + url: Perspiciatis similique quis. + gitHash: + type: string + example: Veniam quis itaque in dignissimos et. + images: + type: array + items: + $ref: '#/definitions/ImageArtifact' + example: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + pluginGitHash: + type: string + example: Asperiores neque aut velit. + printedVersion: + type: string + example: Ullam quis. + example: + binaries: + - component: Consequatur dolores provident unde non est quo. + ociFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + platform: Quia iure aut rerum velit fugit. + sha256OciFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + sha256URL: Et quia. + url: Perspiciatis similique quis. + - component: Consequatur dolores provident unde non est quo. + ociFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + platform: Quia iure aut rerum velit fugit. + sha256OciFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + sha256URL: Et quia. + url: Perspiciatis similique quis. + - component: Consequatur dolores provident unde non est quo. + ociFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + platform: Quia iure aut rerum velit fugit. + sha256OciFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + sha256URL: Et quia. + url: Perspiciatis similique quis. + gitHash: At ut quia placeat. + images: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + pluginGitHash: Minima qui modi. + printedVersion: Impedit ut et vel natus et quidem. + required: + - binaries + - gitHash + - images + - pluginGitHash + - printedVersion + DevBuild: + title: DevBuild + type: object + properties: + id: + type: integer + example: 7476388818621186205 + format: int64 + meta: + $ref: '#/definitions/DevBuildMeta' + spec: + $ref: '#/definitions/DevBuildSpec' + status: + $ref: '#/definitions/DevBuildStatus' + example: + id: 4085216939080665207 + meta: + created_at: "1992-07-10T12:26:40Z" + created_by: maurine_nikolaus@nitzsche.biz + updated_at: "2009-08-03T00:19:43Z" + spec: + build_env: Quia numquam suscipit corrupti qui. + builder_img: Sint ut blanditiis. + edition: enterprise + features: Aperiam natus in ut quae accusantium. + gitHash: Numquam possimus possimus ipsum rerum unde. + gitRef: Numquam neque reiciendis quaerat. + githubRepo: Cumque ea est laboriosam esse dicta architecto. + is_hotfix: true + is_push_gcr: false + pipeline_engine: jenkins + plugin_git_ref: Minima iusto. + product: tidb-dashboard + productBaseImg: Et aut error doloremque non itaque. + productDockerfile: Voluptas quia reprehenderit fugit quo debitis numquam. + targetImg: Qui a voluptatem pariatur aspernatur sed. + version: Nostrum autem. + status: + buildReport: + binaries: + - component: Consequatur dolores provident unde non est quo. + ociFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + platform: Quia iure aut rerum velit fugit. + sha256OciFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + sha256URL: Et quia. + url: Perspiciatis similique quis. + - component: Consequatur dolores provident unde non est quo. + ociFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + platform: Quia iure aut rerum velit fugit. + sha256OciFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + sha256URL: Et quia. + url: Perspiciatis similique quis. + - component: Consequatur dolores provident unde non est quo. + ociFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + platform: Quia iure aut rerum velit fugit. + sha256OciFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + sha256URL: Et quia. + url: Perspiciatis similique quis. + gitHash: Possimus maxime et qui eius unde eos. + images: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + pluginGitHash: Id molestiae ea. + printedVersion: Assumenda ducimus ut architecto architecto quos. + errMsg: Non ut vel deserunt officiis quia et. + pipelineBuildID: 7552297125772394623 + pipelineEndAt: Blanditiis aperiam eaque eos nostrum dolore nulla. + pipelineStartAt: Eos molestiae provident omnis neque. + pipelineViewURL: Illum possimus provident quisquam illum sed ea. + pipelineViewURLs: + - Velit explicabo a qui pariatur. + - Dolorem velit dolor. + - Qui earum omnis. + status: SUCCESS + tektonStatus: + pipelines: + - endAt: Nesciunt suscipit aperiam dignissimos illo. + gitHash: Asperiores aperiam consequatur perferendis delectus. + images: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + name: Nulla ratione ex. + ociArtifacts: + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + platform: Quia quia. + startAt: Sed ut. + status: FAILURE + url: Quibusdam possimus officiis et qui suscipit. + - endAt: Nesciunt suscipit aperiam dignissimos illo. + gitHash: Asperiores aperiam consequatur perferendis delectus. + images: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + name: Nulla ratione ex. + ociArtifacts: + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + platform: Quia quia. + startAt: Sed ut. + status: FAILURE + url: Quibusdam possimus officiis et qui suscipit. + required: + - id + - meta + - spec + - status + DevBuildMeta: + title: DevBuildMeta + type: object + properties: + created_at: + type: string + example: "1999-09-05T19:26:09Z" + format: date-time + created_by: + type: string + example: lane@pouros.com + format: email + updated_at: + type: string + example: "2008-08-30T10:49:02Z" + format: date-time + example: + created_at: "1978-01-05T03:36:29Z" + created_by: patricia.dach@reynoldsyundt.biz + updated_at: "1999-03-11T03:51:40Z" + required: + - created_at + - created_by + - updated_at + DevBuildRequest: + title: DevBuildRequest + type: object + properties: + build_env: + type: string + example: Vel suscipit aut aut aut aliquid. + builder_img: + type: string + example: Sequi minima eos sed ut. + edition: + type: string + example: enterprise + enum: + - enterprise + - community + features: + type: string + example: Quos odio fuga culpa voluptatem tempora explicabo. + gitRef: + type: string + example: A quis autem. + githubRepo: + type: string + example: Sint nesciunt nemo reiciendis. + is_hotfix: + type: boolean + example: false + is_push_gcr: + type: boolean + example: false + pipeline_engine: + type: string + example: tekton + enum: + - jenkins + - tekton + plugin_git_ref: + type: string + example: Natus voluptas fuga ut ut distinctio. + product: + type: string + example: dumpling + enum: + - tidb + - enterprise-plugin + - tikv + - pd + - tiflash + - br + - dumpling + - tidb-lightning + - ticdc + - ticdc-newarch + - dm + - tidb-binlog + - tidb-tools + - ng-monitoring + - tidb-dashboard + - drainer + - pump + - "" + productBaseImg: + type: string + example: Vel et. + productDockerfile: + type: string + example: Est beatae ad itaque possimus impedit rerum. + targetImg: + type: string + example: Sunt ut voluptates. + version: + type: string + example: Eveniet ratione quia delectus voluptas nam. + example: + build_env: Consequatur atque ut fugit consectetur explicabo. + builder_img: Cumque fugiat minus quas ut voluptatibus. + edition: community + features: Aut facere accusantium nobis distinctio. + gitRef: Non ut et asperiores non accusantium ex. + githubRepo: Quod nihil sint unde sint veniam sequi. + is_hotfix: false + is_push_gcr: false + pipeline_engine: tekton + plugin_git_ref: Delectus provident omnis. + product: tidb-dashboard + productBaseImg: Sunt ut est illum laudantium qui. + productDockerfile: Commodi nisi id qui voluptates et rem. + targetImg: Voluptas nisi esse accusantium molestiae nihil. + version: Vitae ipsa. + required: + - edition + - gitRef + - product + - version + DevBuildSpec: + title: DevBuildSpec + type: object + properties: + build_env: + type: string + example: Sunt esse et impedit voluptatem. + builder_img: + type: string + example: Recusandae ullam neque autem. + edition: + type: string + example: community + enum: + - enterprise + - community + features: + type: string + example: Totam vel sint explicabo. + gitHash: + type: string + example: Dolor dolor accusantium explicabo. + gitRef: + type: string + example: Praesentium et dicta. + githubRepo: + type: string + example: Sed qui. + is_hotfix: + type: boolean + example: true + is_push_gcr: + type: boolean + example: true + pipeline_engine: + type: string + example: tekton + enum: + - jenkins + - tekton + plugin_git_ref: + type: string + example: Dolores fuga quae. + product: + type: string + example: tidb-dashboard + enum: + - tidb + - enterprise-plugin + - tikv + - pd + - tiflash + - br + - dumpling + - tidb-lightning + - ticdc + - ticdc-newarch + - dm + - tidb-binlog + - tidb-tools + - ng-monitoring + - tidb-dashboard + - drainer + - pump + - "" + productBaseImg: + type: string + example: Eius enim quia. + productDockerfile: + type: string + example: Delectus voluptas accusantium quis. + targetImg: + type: string + example: Perferendis eveniet. + version: + type: string + example: Accusantium voluptatem. + example: + build_env: Consectetur omnis at doloribus non eos unde. + builder_img: Quibusdam sunt voluptatem eveniet impedit enim. + edition: enterprise + features: Vero eligendi ex quibusdam aut voluptas. + gitHash: Asperiores repellendus omnis itaque dicta. + gitRef: Sit deleniti illo. + githubRepo: Optio ut cum minima labore omnis. + is_hotfix: false + is_push_gcr: false + pipeline_engine: jenkins + plugin_git_ref: Eaque quia et. + product: tiflash + productBaseImg: Reiciendis doloribus velit distinctio. + productDockerfile: Illum in maxime nisi et fugit inventore. + targetImg: Dolores qui assumenda amet est distinctio. + version: Placeat consequatur repellendus voluptatibus. + required: + - build_env + - builder_img + - edition + - features + - gitHash + - gitRef + - githubRepo + - is_hotfix + - is_push_gcr + - pipeline_engine + - plugin_git_ref + - product + - productBaseImg + - productDockerfile + - targetImg + - version + DevBuildStatus: + title: DevBuildStatus + type: object + properties: + buildReport: + $ref: '#/definitions/BuildReport' + errMsg: + type: string + example: Non quas et ex reprehenderit ipsum. + pipelineBuildID: + type: integer + example: 7153683753120193758 + format: int64 + pipelineEndAt: + type: string + example: Sit fuga magnam rerum architecto. + pipelineStartAt: + type: string + example: Qui unde. + pipelineViewURL: + type: string + example: Autem praesentium reprehenderit quisquam et velit. + pipelineViewURLs: + type: array + items: + type: string + example: Sequi ea incidunt magni ut laborum nihil. + example: + - Impedit et quibusdam et consectetur nihil. + - Nihil ad aspernatur. + status: + type: string + example: FAILURE + enum: + - PENDING + - PROCESSING + - ABORTED + - SUCCESS + - FAILURE + - ERROR + tektonStatus: + $ref: '#/definitions/TektonStatus' + example: + buildReport: + binaries: + - component: Consequatur dolores provident unde non est quo. + ociFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + platform: Quia iure aut rerum velit fugit. + sha256OciFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + sha256URL: Et quia. + url: Perspiciatis similique quis. + - component: Consequatur dolores provident unde non est quo. + ociFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + platform: Quia iure aut rerum velit fugit. + sha256OciFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + sha256URL: Et quia. + url: Perspiciatis similique quis. + - component: Consequatur dolores provident unde non est quo. + ociFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + platform: Quia iure aut rerum velit fugit. + sha256OciFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + sha256URL: Et quia. + url: Perspiciatis similique quis. + gitHash: Possimus maxime et qui eius unde eos. + images: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + pluginGitHash: Id molestiae ea. + printedVersion: Assumenda ducimus ut architecto architecto quos. + errMsg: Rerum aperiam vel quae recusandae neque dolorum. + pipelineBuildID: 3764516161818136705 + pipelineEndAt: Ea repellat quasi sequi vitae. + pipelineStartAt: Non velit fugit nihil temporibus. + pipelineViewURL: Optio mollitia minus quos est. + pipelineViewURLs: + - Aut et. + - Id assumenda. + - Officiis sit delectus commodi voluptatem enim. + - Quo quo vel. + status: ABORTED + tektonStatus: + pipelines: + - endAt: Nesciunt suscipit aperiam dignissimos illo. + gitHash: Asperiores aperiam consequatur perferendis delectus. + images: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + name: Nulla ratione ex. + ociArtifacts: + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + platform: Quia quia. + startAt: Sed ut. + status: FAILURE + url: Quibusdam possimus officiis et qui suscipit. + - endAt: Nesciunt suscipit aperiam dignissimos illo. + gitHash: Asperiores aperiam consequatur perferendis delectus. + images: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + name: Nulla ratione ex. + ociArtifacts: + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + platform: Quia quia. + startAt: Sed ut. + status: FAILURE + url: Quibusdam possimus officiis et qui suscipit. + required: + - buildReport + - errMsg + - pipelineBuildID + - pipelineEndAt + - pipelineStartAt + - pipelineViewURL + - pipelineViewURLs + - status + - tektonStatus + DevbuildCreateRequestBody: + title: DevbuildCreateRequestBody + type: object + properties: + created_by: + type: string + description: Creator of build + example: litzy@howe.net + format: email + request: + $ref: '#/definitions/DevBuildRequest' + example: + created_by: mark@koss.name + request: + build_env: Voluptate doloribus architecto numquam est. + builder_img: Neque doloremque. + edition: enterprise + features: Commodi dolorum. + gitRef: Et facere magnam velit optio est. + githubRepo: Doloribus nisi corporis nihil soluta. + is_hotfix: true + is_push_gcr: false + pipeline_engine: tekton + plugin_git_ref: Qui necessitatibus possimus ab quos facere. + product: tidb + productBaseImg: Voluptatem rem earum aut. + productDockerfile: Nulla aut natus totam esse maxime aliquid. + targetImg: Numquam at illo voluptas dolor atque. + version: Beatae sunt nesciunt amet autem. + required: + - created_by + - request + DevbuildListRequestBody: + title: DevbuildListRequestBody + type: object + properties: + direction: + type: string + description: The direction of the sort + default: desc + example: desc + enum: + - asc + - desc + example: + direction: desc + DevbuildUpdateRequestBody: + title: DevbuildUpdateRequestBody + type: object + properties: + DevBuild: + $ref: '#/definitions/DevBuild' + example: + DevBuild: + id: 8425332152695240675 + meta: + created_at: "1982-06-14T15:45:52Z" + created_by: khalil_steuber@rippin.org + updated_at: "1994-05-27T04:49:34Z" + spec: + build_env: Eum sit. + builder_img: Suscipit et. + edition: enterprise + features: Magni suscipit eum vel officiis quasi sit. + gitHash: Ex amet est nemo harum voluptas. + gitRef: Eaque exercitationem et. + githubRepo: Blanditiis velit voluptatem exercitationem. + is_hotfix: true + is_push_gcr: true + pipeline_engine: tekton + plugin_git_ref: Error officiis impedit quaerat consectetur voluptas ea. + product: br + productBaseImg: Numquam explicabo quod quidem perspiciatis. + productDockerfile: Dolor laudantium dolores saepe nihil voluptas id. + targetImg: Quasi quasi error laboriosam qui. + version: Dolorum est nisi voluptatem et harum quae. + status: + buildReport: + binaries: + - component: Qui tempora quos quae velit sint quia. + ociFile: + file: Commodi eius et ad ut. + repo: Dolor deserunt atque exercitationem non placeat. + tag: Possimus libero. + platform: Ab quos esse delectus ea rem. + sha256OciFile: + file: Commodi eius et ad ut. + repo: Dolor deserunt atque exercitationem non placeat. + tag: Possimus libero. + sha256URL: Voluptatem ratione hic quae tempora ratione. + url: Quos eaque rerum expedita perspiciatis. + - component: Qui tempora quos quae velit sint quia. + ociFile: + file: Commodi eius et ad ut. + repo: Dolor deserunt atque exercitationem non placeat. + tag: Possimus libero. + platform: Ab quos esse delectus ea rem. + sha256OciFile: + file: Commodi eius et ad ut. + repo: Dolor deserunt atque exercitationem non placeat. + tag: Possimus libero. + sha256URL: Voluptatem ratione hic quae tempora ratione. + url: Quos eaque rerum expedita perspiciatis. + - component: Qui tempora quos quae velit sint quia. + ociFile: + file: Commodi eius et ad ut. + repo: Dolor deserunt atque exercitationem non placeat. + tag: Possimus libero. + platform: Ab quos esse delectus ea rem. + sha256OciFile: + file: Commodi eius et ad ut. + repo: Dolor deserunt atque exercitationem non placeat. + tag: Possimus libero. + sha256URL: Voluptatem ratione hic quae tempora ratione. + url: Quos eaque rerum expedita perspiciatis. + gitHash: Dolore ipsam non. + images: + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + pluginGitHash: Non eligendi eum. + printedVersion: Asperiores sit consequatur repudiandae voluptas sit. + errMsg: Illum perferendis. + pipelineBuildID: 7878572798948134575 + pipelineEndAt: Distinctio minima molestiae quis. + pipelineStartAt: Tempora earum quam est architecto. + pipelineViewURL: Quia delectus qui minima. + pipelineViewURLs: + - Aut modi voluptas aut eveniet. + - Esse aut. + - Delectus dolore libero aut. + - Corrupti autem iste. + status: FAILURE + tektonStatus: + pipelines: + - endAt: Animi at sequi error. + gitHash: Aut molestiae. + images: + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + name: Occaecati omnis sunt a perspiciatis ratione. + ociArtifacts: + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + platform: Explicabo id eum quae illum vitae necessitatibus. + startAt: Accusantium nostrum quaerat necessitatibus distinctio nobis. + status: PROCESSING + url: Vero sunt culpa molestiae sint ut. + - endAt: Animi at sequi error. + gitHash: Aut molestiae. + images: + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + name: Occaecati omnis sunt a perspiciatis ratione. + ociArtifacts: + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + platform: Explicabo id eum quae illum vitae necessitatibus. + startAt: Accusantium nostrum quaerat necessitatibus distinctio nobis. + status: PROCESSING + url: Vero sunt culpa molestiae sint ut. + - endAt: Animi at sequi error. + gitHash: Aut molestiae. + images: + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + name: Occaecati omnis sunt a perspiciatis ratione. + ociArtifacts: + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + platform: Explicabo id eum quae illum vitae necessitatibus. + startAt: Accusantium nostrum quaerat necessitatibus distinctio nobis. + status: PROCESSING + url: Vero sunt culpa molestiae sint ut. + - endAt: Animi at sequi error. + gitHash: Aut molestiae. + images: + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + name: Occaecati omnis sunt a perspiciatis ratione. + ociArtifacts: + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + platform: Explicabo id eum quae illum vitae necessitatibus. + startAt: Accusantium nostrum quaerat necessitatibus distinctio nobis. + status: PROCESSING + url: Vero sunt culpa molestiae sint ut. + required: + - DevBuild + HTTPError: + title: HTTPError + type: object + properties: + code: + type: integer + example: 8243505271085084803 + format: int64 + message: + type: string + example: Accusamus a a exercitationem. + description: Bad Request + example: + code: 6397685005227921493 + message: Modi aut beatae quasi fuga qui. + required: + - code + - message + ImageArtifact: + title: ImageArtifact + type: object + properties: + platform: + type: string + example: Molestiae id magni esse consectetur saepe recusandae. + url: + type: string + example: Impedit occaecati. + example: + platform: Et ad earum possimus accusamus. + url: Et dolorum natus. + required: + - platform + - url + ImageSyncRequest: + title: ImageSyncRequest + type: object + properties: + source: + type: string + example: Laudantium itaque dolor recusandae. + target: + type: string + example: Deleniti eum. + example: + source: Eligendi dolorem autem ullam. + target: Quaerat repellendus similique expedita quia. + required: + - source + - target + OciArtifact: + title: OciArtifact + type: object + properties: + files: + type: array + items: + type: string + example: Doloribus dolor officiis nihil rerum. + example: + - Veniam voluptates nisi ex repellat. + - Nihil eos et ab. + repo: + type: string + example: Sed pariatur. + tag: + type: string + example: Quo nulla. + example: + files: + - Quas non omnis. + - Quo laboriosam reprehenderit et repellendus qui. + repo: Nostrum et officiis incidunt et. + tag: Consequatur recusandae voluptatibus qui. + required: + - files + - repo + - tag + OciFile: + title: OciFile + type: object + properties: + file: + type: string + example: Asperiores alias sapiente ratione dolor eum. + repo: + type: string + example: Rem enim. + tag: + type: string + example: Cum rerum aut aut blanditiis. + example: + file: Rem beatae recusandae in et. + repo: Iusto laudantium similique occaecati dignissimos accusantium. + tag: Quia aut tempore dolores. + required: + - file + - repo + - tag + TektonPipeline: + title: TektonPipeline + type: object + properties: + endAt: + type: string + example: Explicabo nemo consequatur est inventore rerum veniam. + gitHash: + type: string + example: Est quod. + images: + type: array + items: + $ref: '#/definitions/ImageArtifact' + example: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + name: + type: string + example: Dicta officiis magni enim qui. + ociArtifacts: + type: array + items: + $ref: '#/definitions/OciArtifact' + example: + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + platform: + type: string + example: Autem omnis qui autem aliquid voluptas magni. + startAt: + type: string + example: Voluptates sed minima maiores rem aliquid aut. + status: + type: string + example: FAILURE + enum: + - PENDING + - PROCESSING + - ABORTED + - SUCCESS + - FAILURE + - ERROR + url: + type: string + example: Quisquam voluptatem doloribus necessitatibus. + example: + endAt: Quo voluptatem. + gitHash: Itaque et. + images: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + name: Quas earum qui ea commodi. + ociArtifacts: + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + platform: Et assumenda. + startAt: Qui saepe quas in. + status: PENDING + url: Mollitia qui ex fuga sit harum. + required: + - endAt + - gitHash + - images + - name + - ociArtifacts + - platform + - startAt + - status + - url + TektonStatus: + title: TektonStatus + type: object + properties: + pipelines: + type: array + items: + $ref: '#/definitions/TektonPipeline' + example: + - endAt: Nesciunt suscipit aperiam dignissimos illo. + gitHash: Asperiores aperiam consequatur perferendis delectus. + images: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + name: Nulla ratione ex. + ociArtifacts: + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + platform: Quia quia. + startAt: Sed ut. + status: FAILURE + url: Quibusdam possimus officiis et qui suscipit. + - endAt: Nesciunt suscipit aperiam dignissimos illo. + gitHash: Asperiores aperiam consequatur perferendis delectus. + images: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + name: Nulla ratione ex. + ociArtifacts: + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + platform: Quia quia. + startAt: Sed ut. + status: FAILURE + url: Quibusdam possimus officiis et qui suscipit. + example: + pipelines: + - endAt: Nesciunt suscipit aperiam dignissimos illo. + gitHash: Asperiores aperiam consequatur perferendis delectus. + images: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + name: Nulla ratione ex. + ociArtifacts: + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + platform: Quia quia. + startAt: Sed ut. + status: FAILURE + url: Quibusdam possimus officiis et qui suscipit. + - endAt: Nesciunt suscipit aperiam dignissimos illo. + gitHash: Asperiores aperiam consequatur perferendis delectus. + images: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + name: Nulla ratione ex. + ociArtifacts: + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + platform: Quia quia. + startAt: Sed ut. + status: FAILURE + url: Quibusdam possimus officiis et qui suscipit. + - endAt: Nesciunt suscipit aperiam dignissimos illo. + gitHash: Asperiores aperiam consequatur perferendis delectus. + images: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + name: Nulla ratione ex. + ociArtifacts: + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + platform: Quia quia. + startAt: Sed ut. + status: FAILURE + url: Quibusdam possimus officiis et qui suscipit. + required: + - pipelines diff --git a/experiments/tibuild-v2/internal/service/gen/http/openapi3.json b/experiments/tibuild-v2/internal/service/gen/http/openapi3.json new file mode 100644 index 00000000..bca272f2 --- /dev/null +++ b/experiments/tibuild-v2/internal/service/gen/http/openapi3.json @@ -0,0 +1 @@ +{"openapi":"3.0.3","info":{"title":"TiBuild API","description":"TiBuild API","contact":{"name":"Flare Zuo","url":"https://github.com/wuhuizuo","email":"wuhui.zuo@pingcap.com"},"version":"2.0.0"},"servers":[{"url":"http://localhost:8080"},{"url":"http://0.0.0.0:8080"}],"paths":{"/api/v2/artifact/sync-image":{"post":{"tags":["artifact"],"summary":"syncImage artifact","description":"Sync hotfix image to dockerhub","operationId":"artifact#syncImage","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageSyncRequest"},"example":{"source":"Ut alias adipisci est consequatur quo.","target":"Dolore et et quis."}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageSyncRequest"},"example":{"source":"Libero et.","target":"Autem voluptatem temporibus."}}}},"400":{"description":"BadRequest: Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPError"},"example":{"code":7977093190738419157,"message":"Harum corporis non est enim sit provident."}}}},"500":{"description":"InternalServerError: Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPError"},"example":{"code":211829341293739755,"message":"Rerum omnis."}}}}}}},"/api/v2/devbuilds":{"get":{"tags":["devbuild"],"summary":"list devbuild","description":"List devbuild with pagination support","operationId":"devbuild#list","parameters":[{"name":"page","in":"query","description":"The page number of items","allowEmptyValue":true,"schema":{"type":"integer","description":"The page number of items","default":1,"example":343452030595580532,"format":"int64"},"example":8867155028036990975},{"name":"page_size","in":"query","description":"Page size","allowEmptyValue":true,"schema":{"type":"integer","description":"Page size","default":30,"example":4228068306044731778,"format":"int64"},"example":3096554597964756742},{"name":"hotfix","in":"query","description":"Filter hotfix","allowEmptyValue":true,"schema":{"type":"boolean","description":"Filter hotfix","default":false,"example":false},"example":false},{"name":"sort","in":"query","description":"What to sort results by","allowEmptyValue":true,"schema":{"type":"string","description":"What to sort results by","default":"created_at","example":"created_at","enum":["created_at","updated_at"]},"example":"created_at"},{"name":"created_by","in":"query","description":"Filter created by","allowEmptyValue":true,"schema":{"type":"string","description":"Filter created by","example":"Non repudiandae qui dolor non."},"example":"Nobis sint impedit doloremque expedita quo."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRequestBody"},"example":{"direction":"asc"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DevBuild"},"description":"List of dev builds","example":[{"id":1203420180395902150,"meta":{"created_at":"1992-07-10T12:26:40Z","created_by":"maurine_nikolaus@nitzsche.biz","updated_at":"2009-08-03T00:19:43Z"},"spec":{"build_env":"Quia numquam suscipit corrupti qui.","builder_img":"Sint ut blanditiis.","edition":"enterprise","features":"Aperiam natus in ut quae accusantium.","gitHash":"Numquam possimus possimus ipsum rerum unde.","gitRef":"Numquam neque reiciendis quaerat.","githubRepo":"Cumque ea est laboriosam esse dicta architecto.","is_hotfix":true,"is_push_gcr":false,"pipeline_engine":"jenkins","plugin_git_ref":"Minima iusto.","product":"tidb-dashboard","productBaseImg":"Et aut error doloremque non itaque.","productDockerfile":"Voluptas quia reprehenderit fugit quo debitis numquam.","targetImg":"Qui a voluptatem pariatur aspernatur sed.","version":"Nostrum autem."},"status":{"buildReport":{"binaries":[{"component":"Consequatur dolores provident unde non est quo.","ociFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"platform":"Quia iure aut rerum velit fugit.","sha256OciFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"sha256URL":"Et quia.","url":"Perspiciatis similique quis."},{"component":"Consequatur dolores provident unde non est quo.","ociFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"platform":"Quia iure aut rerum velit fugit.","sha256OciFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"sha256URL":"Et quia.","url":"Perspiciatis similique quis."},{"component":"Consequatur dolores provident unde non est quo.","ociFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"platform":"Quia iure aut rerum velit fugit.","sha256OciFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"sha256URL":"Et quia.","url":"Perspiciatis similique quis."}],"gitHash":"Possimus maxime et qui eius unde eos.","images":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}],"pluginGitHash":"Id molestiae ea.","printedVersion":"Assumenda ducimus ut architecto architecto quos."},"errMsg":"Non ut vel deserunt officiis quia et.","pipelineBuildID":7552297125772394623,"pipelineEndAt":"Blanditiis aperiam eaque eos nostrum dolore nulla.","pipelineStartAt":"Eos molestiae provident omnis neque.","pipelineViewURL":"Illum possimus provident quisquam illum sed ea.","pipelineViewURLs":["Velit explicabo a qui pariatur.","Dolorem velit dolor.","Qui earum omnis."],"status":"SUCCESS","tektonStatus":{"pipelines":[{"endAt":"Nesciunt suscipit aperiam dignissimos illo.","gitHash":"Asperiores aperiam consequatur perferendis delectus.","images":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}],"name":"Nulla ratione ex.","ociArtifacts":[{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."}],"platform":"Quia quia.","startAt":"Sed ut.","status":"FAILURE","url":"Quibusdam possimus officiis et qui suscipit."},{"endAt":"Nesciunt suscipit aperiam dignissimos illo.","gitHash":"Asperiores aperiam consequatur perferendis delectus.","images":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}],"name":"Nulla ratione ex.","ociArtifacts":[{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."}],"platform":"Quia quia.","startAt":"Sed ut.","status":"FAILURE","url":"Quibusdam possimus officiis et qui suscipit."}]}}},{"id":1203420180395902150,"meta":{"created_at":"1992-07-10T12:26:40Z","created_by":"maurine_nikolaus@nitzsche.biz","updated_at":"2009-08-03T00:19:43Z"},"spec":{"build_env":"Quia numquam suscipit corrupti qui.","builder_img":"Sint ut blanditiis.","edition":"enterprise","features":"Aperiam natus in ut quae accusantium.","gitHash":"Numquam possimus possimus ipsum rerum unde.","gitRef":"Numquam neque reiciendis quaerat.","githubRepo":"Cumque ea est laboriosam esse dicta architecto.","is_hotfix":true,"is_push_gcr":false,"pipeline_engine":"jenkins","plugin_git_ref":"Minima iusto.","product":"tidb-dashboard","productBaseImg":"Et aut error doloremque non itaque.","productDockerfile":"Voluptas quia reprehenderit fugit quo debitis numquam.","targetImg":"Qui a voluptatem pariatur aspernatur sed.","version":"Nostrum autem."},"status":{"buildReport":{"binaries":[{"component":"Consequatur dolores provident unde non est quo.","ociFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"platform":"Quia iure aut rerum velit fugit.","sha256OciFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"sha256URL":"Et quia.","url":"Perspiciatis similique quis."},{"component":"Consequatur dolores provident unde non est quo.","ociFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"platform":"Quia iure aut rerum velit fugit.","sha256OciFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"sha256URL":"Et quia.","url":"Perspiciatis similique quis."},{"component":"Consequatur dolores provident unde non est quo.","ociFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"platform":"Quia iure aut rerum velit fugit.","sha256OciFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"sha256URL":"Et quia.","url":"Perspiciatis similique quis."}],"gitHash":"Possimus maxime et qui eius unde eos.","images":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}],"pluginGitHash":"Id molestiae ea.","printedVersion":"Assumenda ducimus ut architecto architecto quos."},"errMsg":"Non ut vel deserunt officiis quia et.","pipelineBuildID":7552297125772394623,"pipelineEndAt":"Blanditiis aperiam eaque eos nostrum dolore nulla.","pipelineStartAt":"Eos molestiae provident omnis neque.","pipelineViewURL":"Illum possimus provident quisquam illum sed ea.","pipelineViewURLs":["Velit explicabo a qui pariatur.","Dolorem velit dolor.","Qui earum omnis."],"status":"SUCCESS","tektonStatus":{"pipelines":[{"endAt":"Nesciunt suscipit aperiam dignissimos illo.","gitHash":"Asperiores aperiam consequatur perferendis delectus.","images":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}],"name":"Nulla ratione ex.","ociArtifacts":[{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."}],"platform":"Quia quia.","startAt":"Sed ut.","status":"FAILURE","url":"Quibusdam possimus officiis et qui suscipit."},{"endAt":"Nesciunt suscipit aperiam dignissimos illo.","gitHash":"Asperiores aperiam consequatur perferendis delectus.","images":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}],"name":"Nulla ratione ex.","ociArtifacts":[{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."}],"platform":"Quia quia.","startAt":"Sed ut.","status":"FAILURE","url":"Quibusdam possimus officiis et qui suscipit."}]}}}]},"example":[{"id":1203420180395902150,"meta":{"created_at":"1992-07-10T12:26:40Z","created_by":"maurine_nikolaus@nitzsche.biz","updated_at":"2009-08-03T00:19:43Z"},"spec":{"build_env":"Quia numquam suscipit corrupti qui.","builder_img":"Sint ut blanditiis.","edition":"enterprise","features":"Aperiam natus in ut quae accusantium.","gitHash":"Numquam possimus possimus ipsum rerum unde.","gitRef":"Numquam neque reiciendis quaerat.","githubRepo":"Cumque ea est laboriosam esse dicta architecto.","is_hotfix":true,"is_push_gcr":false,"pipeline_engine":"jenkins","plugin_git_ref":"Minima iusto.","product":"tidb-dashboard","productBaseImg":"Et aut error doloremque non itaque.","productDockerfile":"Voluptas quia reprehenderit fugit quo debitis numquam.","targetImg":"Qui a voluptatem pariatur aspernatur sed.","version":"Nostrum autem."},"status":{"buildReport":{"binaries":[{"component":"Consequatur dolores provident unde non est quo.","ociFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"platform":"Quia iure aut rerum velit fugit.","sha256OciFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"sha256URL":"Et quia.","url":"Perspiciatis similique quis."},{"component":"Consequatur dolores provident unde non est quo.","ociFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"platform":"Quia iure aut rerum velit fugit.","sha256OciFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"sha256URL":"Et quia.","url":"Perspiciatis similique quis."},{"component":"Consequatur dolores provident unde non est quo.","ociFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"platform":"Quia iure aut rerum velit fugit.","sha256OciFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"sha256URL":"Et quia.","url":"Perspiciatis similique quis."}],"gitHash":"Possimus maxime et qui eius unde eos.","images":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}],"pluginGitHash":"Id molestiae ea.","printedVersion":"Assumenda ducimus ut architecto architecto quos."},"errMsg":"Non ut vel deserunt officiis quia et.","pipelineBuildID":7552297125772394623,"pipelineEndAt":"Blanditiis aperiam eaque eos nostrum dolore nulla.","pipelineStartAt":"Eos molestiae provident omnis neque.","pipelineViewURL":"Illum possimus provident quisquam illum sed ea.","pipelineViewURLs":["Velit explicabo a qui pariatur.","Dolorem velit dolor.","Qui earum omnis."],"status":"SUCCESS","tektonStatus":{"pipelines":[{"endAt":"Nesciunt suscipit aperiam dignissimos illo.","gitHash":"Asperiores aperiam consequatur perferendis delectus.","images":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}],"name":"Nulla ratione ex.","ociArtifacts":[{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."}],"platform":"Quia quia.","startAt":"Sed ut.","status":"FAILURE","url":"Quibusdam possimus officiis et qui suscipit."},{"endAt":"Nesciunt suscipit aperiam dignissimos illo.","gitHash":"Asperiores aperiam consequatur perferendis delectus.","images":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}],"name":"Nulla ratione ex.","ociArtifacts":[{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."}],"platform":"Quia quia.","startAt":"Sed ut.","status":"FAILURE","url":"Quibusdam possimus officiis et qui suscipit."}]}}},{"id":1203420180395902150,"meta":{"created_at":"1992-07-10T12:26:40Z","created_by":"maurine_nikolaus@nitzsche.biz","updated_at":"2009-08-03T00:19:43Z"},"spec":{"build_env":"Quia numquam suscipit corrupti qui.","builder_img":"Sint ut blanditiis.","edition":"enterprise","features":"Aperiam natus in ut quae accusantium.","gitHash":"Numquam possimus possimus ipsum rerum unde.","gitRef":"Numquam neque reiciendis quaerat.","githubRepo":"Cumque ea est laboriosam esse dicta architecto.","is_hotfix":true,"is_push_gcr":false,"pipeline_engine":"jenkins","plugin_git_ref":"Minima iusto.","product":"tidb-dashboard","productBaseImg":"Et aut error doloremque non itaque.","productDockerfile":"Voluptas quia reprehenderit fugit quo debitis numquam.","targetImg":"Qui a voluptatem pariatur aspernatur sed.","version":"Nostrum autem."},"status":{"buildReport":{"binaries":[{"component":"Consequatur dolores provident unde non est quo.","ociFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"platform":"Quia iure aut rerum velit fugit.","sha256OciFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"sha256URL":"Et quia.","url":"Perspiciatis similique quis."},{"component":"Consequatur dolores provident unde non est quo.","ociFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"platform":"Quia iure aut rerum velit fugit.","sha256OciFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"sha256URL":"Et quia.","url":"Perspiciatis similique quis."},{"component":"Consequatur dolores provident unde non est quo.","ociFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"platform":"Quia iure aut rerum velit fugit.","sha256OciFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"sha256URL":"Et quia.","url":"Perspiciatis similique quis."}],"gitHash":"Possimus maxime et qui eius unde eos.","images":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}],"pluginGitHash":"Id molestiae ea.","printedVersion":"Assumenda ducimus ut architecto architecto quos."},"errMsg":"Non ut vel deserunt officiis quia et.","pipelineBuildID":7552297125772394623,"pipelineEndAt":"Blanditiis aperiam eaque eos nostrum dolore nulla.","pipelineStartAt":"Eos molestiae provident omnis neque.","pipelineViewURL":"Illum possimus provident quisquam illum sed ea.","pipelineViewURLs":["Velit explicabo a qui pariatur.","Dolorem velit dolor.","Qui earum omnis."],"status":"SUCCESS","tektonStatus":{"pipelines":[{"endAt":"Nesciunt suscipit aperiam dignissimos illo.","gitHash":"Asperiores aperiam consequatur perferendis delectus.","images":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}],"name":"Nulla ratione ex.","ociArtifacts":[{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."}],"platform":"Quia quia.","startAt":"Sed ut.","status":"FAILURE","url":"Quibusdam possimus officiis et qui suscipit."},{"endAt":"Nesciunt suscipit aperiam dignissimos illo.","gitHash":"Asperiores aperiam consequatur perferendis delectus.","images":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}],"name":"Nulla ratione ex.","ociArtifacts":[{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."}],"platform":"Quia quia.","startAt":"Sed ut.","status":"FAILURE","url":"Quibusdam possimus officiis et qui suscipit."}]}}},{"id":1203420180395902150,"meta":{"created_at":"1992-07-10T12:26:40Z","created_by":"maurine_nikolaus@nitzsche.biz","updated_at":"2009-08-03T00:19:43Z"},"spec":{"build_env":"Quia numquam suscipit corrupti qui.","builder_img":"Sint ut blanditiis.","edition":"enterprise","features":"Aperiam natus in ut quae accusantium.","gitHash":"Numquam possimus possimus ipsum rerum unde.","gitRef":"Numquam neque reiciendis quaerat.","githubRepo":"Cumque ea est laboriosam esse dicta architecto.","is_hotfix":true,"is_push_gcr":false,"pipeline_engine":"jenkins","plugin_git_ref":"Minima iusto.","product":"tidb-dashboard","productBaseImg":"Et aut error doloremque non itaque.","productDockerfile":"Voluptas quia reprehenderit fugit quo debitis numquam.","targetImg":"Qui a voluptatem pariatur aspernatur sed.","version":"Nostrum autem."},"status":{"buildReport":{"binaries":[{"component":"Consequatur dolores provident unde non est quo.","ociFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"platform":"Quia iure aut rerum velit fugit.","sha256OciFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"sha256URL":"Et quia.","url":"Perspiciatis similique quis."},{"component":"Consequatur dolores provident unde non est quo.","ociFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"platform":"Quia iure aut rerum velit fugit.","sha256OciFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"sha256URL":"Et quia.","url":"Perspiciatis similique quis."},{"component":"Consequatur dolores provident unde non est quo.","ociFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"platform":"Quia iure aut rerum velit fugit.","sha256OciFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"sha256URL":"Et quia.","url":"Perspiciatis similique quis."}],"gitHash":"Possimus maxime et qui eius unde eos.","images":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}],"pluginGitHash":"Id molestiae ea.","printedVersion":"Assumenda ducimus ut architecto architecto quos."},"errMsg":"Non ut vel deserunt officiis quia et.","pipelineBuildID":7552297125772394623,"pipelineEndAt":"Blanditiis aperiam eaque eos nostrum dolore nulla.","pipelineStartAt":"Eos molestiae provident omnis neque.","pipelineViewURL":"Illum possimus provident quisquam illum sed ea.","pipelineViewURLs":["Velit explicabo a qui pariatur.","Dolorem velit dolor.","Qui earum omnis."],"status":"SUCCESS","tektonStatus":{"pipelines":[{"endAt":"Nesciunt suscipit aperiam dignissimos illo.","gitHash":"Asperiores aperiam consequatur perferendis delectus.","images":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}],"name":"Nulla ratione ex.","ociArtifacts":[{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."}],"platform":"Quia quia.","startAt":"Sed ut.","status":"FAILURE","url":"Quibusdam possimus officiis et qui suscipit."},{"endAt":"Nesciunt suscipit aperiam dignissimos illo.","gitHash":"Asperiores aperiam consequatur perferendis delectus.","images":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}],"name":"Nulla ratione ex.","ociArtifacts":[{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."}],"platform":"Quia quia.","startAt":"Sed ut.","status":"FAILURE","url":"Quibusdam possimus officiis et qui suscipit."}]}}},{"id":1203420180395902150,"meta":{"created_at":"1992-07-10T12:26:40Z","created_by":"maurine_nikolaus@nitzsche.biz","updated_at":"2009-08-03T00:19:43Z"},"spec":{"build_env":"Quia numquam suscipit corrupti qui.","builder_img":"Sint ut blanditiis.","edition":"enterprise","features":"Aperiam natus in ut quae accusantium.","gitHash":"Numquam possimus possimus ipsum rerum unde.","gitRef":"Numquam neque reiciendis quaerat.","githubRepo":"Cumque ea est laboriosam esse dicta architecto.","is_hotfix":true,"is_push_gcr":false,"pipeline_engine":"jenkins","plugin_git_ref":"Minima iusto.","product":"tidb-dashboard","productBaseImg":"Et aut error doloremque non itaque.","productDockerfile":"Voluptas quia reprehenderit fugit quo debitis numquam.","targetImg":"Qui a voluptatem pariatur aspernatur sed.","version":"Nostrum autem."},"status":{"buildReport":{"binaries":[{"component":"Consequatur dolores provident unde non est quo.","ociFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"platform":"Quia iure aut rerum velit fugit.","sha256OciFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"sha256URL":"Et quia.","url":"Perspiciatis similique quis."},{"component":"Consequatur dolores provident unde non est quo.","ociFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"platform":"Quia iure aut rerum velit fugit.","sha256OciFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"sha256URL":"Et quia.","url":"Perspiciatis similique quis."},{"component":"Consequatur dolores provident unde non est quo.","ociFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"platform":"Quia iure aut rerum velit fugit.","sha256OciFile":{"file":"Illum ex quia est autem est.","repo":"Ratione consequatur quisquam et.","tag":"Aut doloremque culpa."},"sha256URL":"Et quia.","url":"Perspiciatis similique quis."}],"gitHash":"Possimus maxime et qui eius unde eos.","images":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}],"pluginGitHash":"Id molestiae ea.","printedVersion":"Assumenda ducimus ut architecto architecto quos."},"errMsg":"Non ut vel deserunt officiis quia et.","pipelineBuildID":7552297125772394623,"pipelineEndAt":"Blanditiis aperiam eaque eos nostrum dolore nulla.","pipelineStartAt":"Eos molestiae provident omnis neque.","pipelineViewURL":"Illum possimus provident quisquam illum sed ea.","pipelineViewURLs":["Velit explicabo a qui pariatur.","Dolorem velit dolor.","Qui earum omnis."],"status":"SUCCESS","tektonStatus":{"pipelines":[{"endAt":"Nesciunt suscipit aperiam dignissimos illo.","gitHash":"Asperiores aperiam consequatur perferendis delectus.","images":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}],"name":"Nulla ratione ex.","ociArtifacts":[{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."}],"platform":"Quia quia.","startAt":"Sed ut.","status":"FAILURE","url":"Quibusdam possimus officiis et qui suscipit."},{"endAt":"Nesciunt suscipit aperiam dignissimos illo.","gitHash":"Asperiores aperiam consequatur perferendis delectus.","images":[{"platform":"Quaerat quis.","url":"Molestias ut molestiae."},{"platform":"Quaerat quis.","url":"Molestias ut molestiae."}],"name":"Nulla ratione ex.","ociArtifacts":[{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."},{"files":["Debitis dolor nihil aperiam magnam adipisci ut.","Illo enim ut itaque.","Tenetur recusandae corporis occaecati dolor voluptatum.","A aut tenetur corrupti et voluptatem voluptas."],"repo":"Qui ea non et vel.","tag":"Labore ut tempora amet dicta rerum a."}],"platform":"Quia quia.","startAt":"Sed ut.","status":"FAILURE","url":"Quibusdam possimus officiis et qui suscipit."}]}}}]}}},"400":{"description":"BadRequest: Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPError"},"example":{"code":3290166082139057376,"message":"Voluptatem ea ducimus eius et."}}}}}},"post":{"tags":["devbuild"],"summary":"create devbuild","description":"Create and trigger devbuild","operationId":"devbuild#create","parameters":[{"name":"dryrun","in":"query","description":"Dry run","allowEmptyValue":true,"schema":{"type":"boolean","description":"Dry run","default":false,"example":true},"example":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRequestBody"},"example":{"created_by":"david_stehr@koch.name","request":{"build_env":"Voluptate doloribus architecto numquam est.","builder_img":"Neque doloremque.","edition":"enterprise","features":"Commodi dolorum.","gitRef":"Et facere magnam velit optio est.","githubRepo":"Doloribus nisi corporis nihil soluta.","is_hotfix":true,"is_push_gcr":false,"pipeline_engine":"tekton","plugin_git_ref":"Qui necessitatibus possimus ab quos facere.","product":"tidb","productBaseImg":"Voluptatem rem earum aut.","productDockerfile":"Nulla aut natus totam esse maxime aliquid.","targetImg":"Numquam at illo voluptas dolor atque.","version":"Beatae sunt nesciunt amet autem."}}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DevBuild"},"example":{"id":1786113729575604386,"meta":{"created_at":"2007-09-05T00:14:39Z","created_by":"imogene@greenfelder.com","updated_at":"1985-11-18T06:52:24Z"},"spec":{"build_env":"Aliquam ducimus neque dolores.","builder_img":"Quibusdam impedit corrupti veritatis ut.","edition":"community","features":"Temporibus totam quae debitis odio hic.","gitHash":"Atque eos consequatur laudantium.","gitRef":"Vitae iste.","githubRepo":"Odit blanditiis magni eaque quas eos voluptatem.","is_hotfix":false,"is_push_gcr":false,"pipeline_engine":"tekton","plugin_git_ref":"Ipsam autem vel veniam et provident qui.","product":"tidb","productBaseImg":"Quia vitae non ratione reiciendis minus sapiente.","productDockerfile":"Rerum quasi consequatur repellendus saepe rerum.","targetImg":"Vero eveniet.","version":"Nulla et saepe ratione est ut."},"status":{"buildReport":{"binaries":[{"component":"Vitae sapiente nihil earum sint ad incidunt.","ociFile":{"file":"Voluptates cumque laudantium molestiae et.","repo":"Impedit dicta quos esse et maxime.","tag":"Nesciunt in et ut quod."},"platform":"Ut sit reiciendis esse architecto.","sha256OciFile":{"file":"Voluptates cumque laudantium molestiae et.","repo":"Impedit dicta quos esse et maxime.","tag":"Nesciunt in et ut quod."},"sha256URL":"Sit beatae saepe soluta.","url":"Omnis ullam blanditiis libero repellat."},{"component":"Vitae sapiente nihil earum sint ad incidunt.","ociFile":{"file":"Voluptates cumque laudantium molestiae et.","repo":"Impedit dicta quos esse et maxime.","tag":"Nesciunt in et ut quod."},"platform":"Ut sit reiciendis esse architecto.","sha256OciFile":{"file":"Voluptates cumque laudantium molestiae et.","repo":"Impedit dicta quos esse et maxime.","tag":"Nesciunt in et ut quod."},"sha256URL":"Sit beatae saepe soluta.","url":"Omnis ullam blanditiis libero repellat."}],"gitHash":"Aut quo ex ullam.","images":[{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."},{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."},{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."}],"pluginGitHash":"Sed laboriosam vero optio.","printedVersion":"Tempore accusantium odio quibusdam maxime molestias est."},"errMsg":"Sequi doloremque nihil sapiente consequuntur consequuntur quam.","pipelineBuildID":1824550133358745577,"pipelineEndAt":"Rerum rem.","pipelineStartAt":"Earum libero sunt et.","pipelineViewURL":"Saepe dolores ullam.","pipelineViewURLs":["Autem quas rerum in consectetur.","Qui cumque.","Veritatis voluptas unde maiores perspiciatis aperiam atque.","Qui praesentium accusantium neque rerum."],"status":"ABORTED","tektonStatus":{"pipelines":[{"endAt":"Explicabo libero dolorum est id non explicabo.","gitHash":"Quia fuga consectetur.","images":[{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."},{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."}],"name":"Sed corporis molestiae harum totam ut praesentium.","ociArtifacts":[{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."}],"platform":"Qui fugit doloremque est molestias.","startAt":"Cum laborum enim voluptatem architecto.","status":"ABORTED","url":"Perferendis maxime accusamus iusto et."},{"endAt":"Explicabo libero dolorum est id non explicabo.","gitHash":"Quia fuga consectetur.","images":[{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."},{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."}],"name":"Sed corporis molestiae harum totam ut praesentium.","ociArtifacts":[{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."}],"platform":"Qui fugit doloremque est molestias.","startAt":"Cum laborum enim voluptatem architecto.","status":"ABORTED","url":"Perferendis maxime accusamus iusto et."},{"endAt":"Explicabo libero dolorum est id non explicabo.","gitHash":"Quia fuga consectetur.","images":[{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."},{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."}],"name":"Sed corporis molestiae harum totam ut praesentium.","ociArtifacts":[{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."}],"platform":"Qui fugit doloremque est molestias.","startAt":"Cum laborum enim voluptatem architecto.","status":"ABORTED","url":"Perferendis maxime accusamus iusto et."},{"endAt":"Explicabo libero dolorum est id non explicabo.","gitHash":"Quia fuga consectetur.","images":[{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."},{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."}],"name":"Sed corporis molestiae harum totam ut praesentium.","ociArtifacts":[{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."}],"platform":"Qui fugit doloremque est molestias.","startAt":"Cum laborum enim voluptatem architecto.","status":"ABORTED","url":"Perferendis maxime accusamus iusto et."}]}}}}}},"400":{"description":"BadRequest: Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPError"},"example":{"code":8749749020813088645,"message":"Repellat est facere."}}}},"500":{"description":"InternalServerError: Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPError"},"example":{"code":5476493367338509300,"message":"Soluta in suscipit illo dolor omnis deleniti."}}}}}}},"/api/v2/devbuilds/{id}":{"get":{"tags":["devbuild"],"summary":"get devbuild","description":"Get devbuild","operationId":"devbuild#get","parameters":[{"name":"sync","in":"query","description":"Whether sync with jenkins","allowEmptyValue":true,"schema":{"type":"boolean","description":"Whether sync with jenkins","default":false,"example":true},"example":false},{"name":"id","in":"path","description":"ID of build","required":true,"schema":{"type":"integer","description":"ID of build","example":1,"format":"int64"},"example":1}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DevBuild"},"example":{"id":65936377763915105,"meta":{"created_at":"2007-09-05T00:14:39Z","created_by":"imogene@greenfelder.com","updated_at":"1985-11-18T06:52:24Z"},"spec":{"build_env":"Aliquam ducimus neque dolores.","builder_img":"Quibusdam impedit corrupti veritatis ut.","edition":"community","features":"Temporibus totam quae debitis odio hic.","gitHash":"Atque eos consequatur laudantium.","gitRef":"Vitae iste.","githubRepo":"Odit blanditiis magni eaque quas eos voluptatem.","is_hotfix":false,"is_push_gcr":false,"pipeline_engine":"tekton","plugin_git_ref":"Ipsam autem vel veniam et provident qui.","product":"tidb","productBaseImg":"Quia vitae non ratione reiciendis minus sapiente.","productDockerfile":"Rerum quasi consequatur repellendus saepe rerum.","targetImg":"Vero eveniet.","version":"Nulla et saepe ratione est ut."},"status":{"buildReport":{"binaries":[{"component":"Vitae sapiente nihil earum sint ad incidunt.","ociFile":{"file":"Voluptates cumque laudantium molestiae et.","repo":"Impedit dicta quos esse et maxime.","tag":"Nesciunt in et ut quod."},"platform":"Ut sit reiciendis esse architecto.","sha256OciFile":{"file":"Voluptates cumque laudantium molestiae et.","repo":"Impedit dicta quos esse et maxime.","tag":"Nesciunt in et ut quod."},"sha256URL":"Sit beatae saepe soluta.","url":"Omnis ullam blanditiis libero repellat."},{"component":"Vitae sapiente nihil earum sint ad incidunt.","ociFile":{"file":"Voluptates cumque laudantium molestiae et.","repo":"Impedit dicta quos esse et maxime.","tag":"Nesciunt in et ut quod."},"platform":"Ut sit reiciendis esse architecto.","sha256OciFile":{"file":"Voluptates cumque laudantium molestiae et.","repo":"Impedit dicta quos esse et maxime.","tag":"Nesciunt in et ut quod."},"sha256URL":"Sit beatae saepe soluta.","url":"Omnis ullam blanditiis libero repellat."}],"gitHash":"Aut quo ex ullam.","images":[{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."},{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."},{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."}],"pluginGitHash":"Sed laboriosam vero optio.","printedVersion":"Tempore accusantium odio quibusdam maxime molestias est."},"errMsg":"Sequi doloremque nihil sapiente consequuntur consequuntur quam.","pipelineBuildID":1824550133358745577,"pipelineEndAt":"Rerum rem.","pipelineStartAt":"Earum libero sunt et.","pipelineViewURL":"Saepe dolores ullam.","pipelineViewURLs":["Autem quas rerum in consectetur.","Qui cumque.","Veritatis voluptas unde maiores perspiciatis aperiam atque.","Qui praesentium accusantium neque rerum."],"status":"ABORTED","tektonStatus":{"pipelines":[{"endAt":"Explicabo libero dolorum est id non explicabo.","gitHash":"Quia fuga consectetur.","images":[{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."},{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."}],"name":"Sed corporis molestiae harum totam ut praesentium.","ociArtifacts":[{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."}],"platform":"Qui fugit doloremque est molestias.","startAt":"Cum laborum enim voluptatem architecto.","status":"ABORTED","url":"Perferendis maxime accusamus iusto et."},{"endAt":"Explicabo libero dolorum est id non explicabo.","gitHash":"Quia fuga consectetur.","images":[{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."},{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."}],"name":"Sed corporis molestiae harum totam ut praesentium.","ociArtifacts":[{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."}],"platform":"Qui fugit doloremque est molestias.","startAt":"Cum laborum enim voluptatem architecto.","status":"ABORTED","url":"Perferendis maxime accusamus iusto et."},{"endAt":"Explicabo libero dolorum est id non explicabo.","gitHash":"Quia fuga consectetur.","images":[{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."},{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."}],"name":"Sed corporis molestiae harum totam ut praesentium.","ociArtifacts":[{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."}],"platform":"Qui fugit doloremque est molestias.","startAt":"Cum laborum enim voluptatem architecto.","status":"ABORTED","url":"Perferendis maxime accusamus iusto et."},{"endAt":"Explicabo libero dolorum est id non explicabo.","gitHash":"Quia fuga consectetur.","images":[{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."},{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."}],"name":"Sed corporis molestiae harum totam ut praesentium.","ociArtifacts":[{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."}],"platform":"Qui fugit doloremque est molestias.","startAt":"Cum laborum enim voluptatem architecto.","status":"ABORTED","url":"Perferendis maxime accusamus iusto et."}]}}}}}},"400":{"description":"BadRequest: Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPError"},"example":{"code":7954917582970277007,"message":"Inventore veniam eos numquam autem non iure."}}}},"500":{"description":"InternalServerError: Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPError"},"example":{"code":4783865352217821672,"message":"Aspernatur facilis laboriosam omnis sit consequuntur qui."}}}}}},"put":{"tags":["devbuild"],"summary":"update devbuild","description":"Update devbuild status","operationId":"devbuild#update","parameters":[{"name":"dryrun","in":"query","description":"Dry run","allowEmptyValue":true,"schema":{"type":"boolean","description":"Dry run","default":false,"example":true},"example":true},{"name":"id","in":"path","description":"ID of build","required":true,"schema":{"type":"integer","description":"ID of build","example":1,"format":"int64"},"example":1}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRequestBody"},"example":{"DevBuild":{"id":8425332152695240675,"meta":{"created_at":"1982-06-14T15:45:52Z","created_by":"khalil_steuber@rippin.org","updated_at":"1994-05-27T04:49:34Z"},"spec":{"build_env":"Eum sit.","builder_img":"Suscipit et.","edition":"enterprise","features":"Magni suscipit eum vel officiis quasi sit.","gitHash":"Ex amet est nemo harum voluptas.","gitRef":"Eaque exercitationem et.","githubRepo":"Blanditiis velit voluptatem exercitationem.","is_hotfix":true,"is_push_gcr":true,"pipeline_engine":"tekton","plugin_git_ref":"Error officiis impedit quaerat consectetur voluptas ea.","product":"br","productBaseImg":"Numquam explicabo quod quidem perspiciatis.","productDockerfile":"Dolor laudantium dolores saepe nihil voluptas id.","targetImg":"Quasi quasi error laboriosam qui.","version":"Dolorum est nisi voluptatem et harum quae."},"status":{"buildReport":{"binaries":[{"component":"Qui tempora quos quae velit sint quia.","ociFile":{"file":"Commodi eius et ad ut.","repo":"Dolor deserunt atque exercitationem non placeat.","tag":"Possimus libero."},"platform":"Ab quos esse delectus ea rem.","sha256OciFile":{"file":"Commodi eius et ad ut.","repo":"Dolor deserunt atque exercitationem non placeat.","tag":"Possimus libero."},"sha256URL":"Voluptatem ratione hic quae tempora ratione.","url":"Quos eaque rerum expedita perspiciatis."},{"component":"Qui tempora quos quae velit sint quia.","ociFile":{"file":"Commodi eius et ad ut.","repo":"Dolor deserunt atque exercitationem non placeat.","tag":"Possimus libero."},"platform":"Ab quos esse delectus ea rem.","sha256OciFile":{"file":"Commodi eius et ad ut.","repo":"Dolor deserunt atque exercitationem non placeat.","tag":"Possimus libero."},"sha256URL":"Voluptatem ratione hic quae tempora ratione.","url":"Quos eaque rerum expedita perspiciatis."},{"component":"Qui tempora quos quae velit sint quia.","ociFile":{"file":"Commodi eius et ad ut.","repo":"Dolor deserunt atque exercitationem non placeat.","tag":"Possimus libero."},"platform":"Ab quos esse delectus ea rem.","sha256OciFile":{"file":"Commodi eius et ad ut.","repo":"Dolor deserunt atque exercitationem non placeat.","tag":"Possimus libero."},"sha256URL":"Voluptatem ratione hic quae tempora ratione.","url":"Quos eaque rerum expedita perspiciatis."}],"gitHash":"Dolore ipsam non.","images":[{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."},{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."}],"pluginGitHash":"Non eligendi eum.","printedVersion":"Asperiores sit consequatur repudiandae voluptas sit."},"errMsg":"Illum perferendis.","pipelineBuildID":7878572798948134575,"pipelineEndAt":"Distinctio minima molestiae quis.","pipelineStartAt":"Tempora earum quam est architecto.","pipelineViewURL":"Quia delectus qui minima.","pipelineViewURLs":["Aut modi voluptas aut eveniet.","Esse aut.","Delectus dolore libero aut.","Corrupti autem iste."],"status":"FAILURE","tektonStatus":{"pipelines":[{"endAt":"Animi at sequi error.","gitHash":"Aut molestiae.","images":[{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."},{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."},{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."}],"name":"Occaecati omnis sunt a perspiciatis ratione.","ociArtifacts":[{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."}],"platform":"Explicabo id eum quae illum vitae necessitatibus.","startAt":"Accusantium nostrum quaerat necessitatibus distinctio nobis.","status":"PROCESSING","url":"Vero sunt culpa molestiae sint ut."},{"endAt":"Animi at sequi error.","gitHash":"Aut molestiae.","images":[{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."},{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."},{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."}],"name":"Occaecati omnis sunt a perspiciatis ratione.","ociArtifacts":[{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."}],"platform":"Explicabo id eum quae illum vitae necessitatibus.","startAt":"Accusantium nostrum quaerat necessitatibus distinctio nobis.","status":"PROCESSING","url":"Vero sunt culpa molestiae sint ut."},{"endAt":"Animi at sequi error.","gitHash":"Aut molestiae.","images":[{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."},{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."},{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."}],"name":"Occaecati omnis sunt a perspiciatis ratione.","ociArtifacts":[{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."}],"platform":"Explicabo id eum quae illum vitae necessitatibus.","startAt":"Accusantium nostrum quaerat necessitatibus distinctio nobis.","status":"PROCESSING","url":"Vero sunt culpa molestiae sint ut."},{"endAt":"Animi at sequi error.","gitHash":"Aut molestiae.","images":[{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."},{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."},{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."}],"name":"Occaecati omnis sunt a perspiciatis ratione.","ociArtifacts":[{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."}],"platform":"Explicabo id eum quae illum vitae necessitatibus.","startAt":"Accusantium nostrum quaerat necessitatibus distinctio nobis.","status":"PROCESSING","url":"Vero sunt culpa molestiae sint ut."}]}}}}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DevBuild"},"example":{"id":2839667216875699381,"meta":{"created_at":"2007-09-05T00:14:39Z","created_by":"imogene@greenfelder.com","updated_at":"1985-11-18T06:52:24Z"},"spec":{"build_env":"Aliquam ducimus neque dolores.","builder_img":"Quibusdam impedit corrupti veritatis ut.","edition":"community","features":"Temporibus totam quae debitis odio hic.","gitHash":"Atque eos consequatur laudantium.","gitRef":"Vitae iste.","githubRepo":"Odit blanditiis magni eaque quas eos voluptatem.","is_hotfix":false,"is_push_gcr":false,"pipeline_engine":"tekton","plugin_git_ref":"Ipsam autem vel veniam et provident qui.","product":"tidb","productBaseImg":"Quia vitae non ratione reiciendis minus sapiente.","productDockerfile":"Rerum quasi consequatur repellendus saepe rerum.","targetImg":"Vero eveniet.","version":"Nulla et saepe ratione est ut."},"status":{"buildReport":{"binaries":[{"component":"Vitae sapiente nihil earum sint ad incidunt.","ociFile":{"file":"Voluptates cumque laudantium molestiae et.","repo":"Impedit dicta quos esse et maxime.","tag":"Nesciunt in et ut quod."},"platform":"Ut sit reiciendis esse architecto.","sha256OciFile":{"file":"Voluptates cumque laudantium molestiae et.","repo":"Impedit dicta quos esse et maxime.","tag":"Nesciunt in et ut quod."},"sha256URL":"Sit beatae saepe soluta.","url":"Omnis ullam blanditiis libero repellat."},{"component":"Vitae sapiente nihil earum sint ad incidunt.","ociFile":{"file":"Voluptates cumque laudantium molestiae et.","repo":"Impedit dicta quos esse et maxime.","tag":"Nesciunt in et ut quod."},"platform":"Ut sit reiciendis esse architecto.","sha256OciFile":{"file":"Voluptates cumque laudantium molestiae et.","repo":"Impedit dicta quos esse et maxime.","tag":"Nesciunt in et ut quod."},"sha256URL":"Sit beatae saepe soluta.","url":"Omnis ullam blanditiis libero repellat."}],"gitHash":"Aut quo ex ullam.","images":[{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."},{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."},{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."}],"pluginGitHash":"Sed laboriosam vero optio.","printedVersion":"Tempore accusantium odio quibusdam maxime molestias est."},"errMsg":"Sequi doloremque nihil sapiente consequuntur consequuntur quam.","pipelineBuildID":1824550133358745577,"pipelineEndAt":"Rerum rem.","pipelineStartAt":"Earum libero sunt et.","pipelineViewURL":"Saepe dolores ullam.","pipelineViewURLs":["Autem quas rerum in consectetur.","Qui cumque.","Veritatis voluptas unde maiores perspiciatis aperiam atque.","Qui praesentium accusantium neque rerum."],"status":"ABORTED","tektonStatus":{"pipelines":[{"endAt":"Explicabo libero dolorum est id non explicabo.","gitHash":"Quia fuga consectetur.","images":[{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."},{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."}],"name":"Sed corporis molestiae harum totam ut praesentium.","ociArtifacts":[{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."}],"platform":"Qui fugit doloremque est molestias.","startAt":"Cum laborum enim voluptatem architecto.","status":"ABORTED","url":"Perferendis maxime accusamus iusto et."},{"endAt":"Explicabo libero dolorum est id non explicabo.","gitHash":"Quia fuga consectetur.","images":[{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."},{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."}],"name":"Sed corporis molestiae harum totam ut praesentium.","ociArtifacts":[{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."}],"platform":"Qui fugit doloremque est molestias.","startAt":"Cum laborum enim voluptatem architecto.","status":"ABORTED","url":"Perferendis maxime accusamus iusto et."},{"endAt":"Explicabo libero dolorum est id non explicabo.","gitHash":"Quia fuga consectetur.","images":[{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."},{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."}],"name":"Sed corporis molestiae harum totam ut praesentium.","ociArtifacts":[{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."}],"platform":"Qui fugit doloremque est molestias.","startAt":"Cum laborum enim voluptatem architecto.","status":"ABORTED","url":"Perferendis maxime accusamus iusto et."},{"endAt":"Explicabo libero dolorum est id non explicabo.","gitHash":"Quia fuga consectetur.","images":[{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."},{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."}],"name":"Sed corporis molestiae harum totam ut praesentium.","ociArtifacts":[{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."}],"platform":"Qui fugit doloremque est molestias.","startAt":"Cum laborum enim voluptatem architecto.","status":"ABORTED","url":"Perferendis maxime accusamus iusto et."}]}}}}}},"400":{"description":"BadRequest: Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPError"},"example":{"code":2450931757894233692,"message":"Facilis voluptatem voluptate dignissimos ducimus."}}}},"500":{"description":"InternalServerError: Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPError"},"example":{"code":3774136690912363572,"message":"Accusantium molestiae expedita non facilis."}}}}}}},"/api/v2/devbuilds/{id}/rerun":{"post":{"tags":["devbuild"],"summary":"rerun devbuild","description":"Rerun devbuild","operationId":"devbuild#rerun","parameters":[{"name":"dryrun","in":"query","description":"Dry run","allowEmptyValue":true,"schema":{"type":"boolean","description":"Dry run","default":false,"example":false},"example":true},{"name":"id","in":"path","description":"ID of build","required":true,"schema":{"type":"integer","description":"ID of build","example":1,"format":"int64"},"example":1}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DevBuild"},"example":{"id":2503246296617538539,"meta":{"created_at":"2007-09-05T00:14:39Z","created_by":"imogene@greenfelder.com","updated_at":"1985-11-18T06:52:24Z"},"spec":{"build_env":"Aliquam ducimus neque dolores.","builder_img":"Quibusdam impedit corrupti veritatis ut.","edition":"community","features":"Temporibus totam quae debitis odio hic.","gitHash":"Atque eos consequatur laudantium.","gitRef":"Vitae iste.","githubRepo":"Odit blanditiis magni eaque quas eos voluptatem.","is_hotfix":false,"is_push_gcr":false,"pipeline_engine":"tekton","plugin_git_ref":"Ipsam autem vel veniam et provident qui.","product":"tidb","productBaseImg":"Quia vitae non ratione reiciendis minus sapiente.","productDockerfile":"Rerum quasi consequatur repellendus saepe rerum.","targetImg":"Vero eveniet.","version":"Nulla et saepe ratione est ut."},"status":{"buildReport":{"binaries":[{"component":"Vitae sapiente nihil earum sint ad incidunt.","ociFile":{"file":"Voluptates cumque laudantium molestiae et.","repo":"Impedit dicta quos esse et maxime.","tag":"Nesciunt in et ut quod."},"platform":"Ut sit reiciendis esse architecto.","sha256OciFile":{"file":"Voluptates cumque laudantium molestiae et.","repo":"Impedit dicta quos esse et maxime.","tag":"Nesciunt in et ut quod."},"sha256URL":"Sit beatae saepe soluta.","url":"Omnis ullam blanditiis libero repellat."},{"component":"Vitae sapiente nihil earum sint ad incidunt.","ociFile":{"file":"Voluptates cumque laudantium molestiae et.","repo":"Impedit dicta quos esse et maxime.","tag":"Nesciunt in et ut quod."},"platform":"Ut sit reiciendis esse architecto.","sha256OciFile":{"file":"Voluptates cumque laudantium molestiae et.","repo":"Impedit dicta quos esse et maxime.","tag":"Nesciunt in et ut quod."},"sha256URL":"Sit beatae saepe soluta.","url":"Omnis ullam blanditiis libero repellat."}],"gitHash":"Aut quo ex ullam.","images":[{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."},{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."},{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."}],"pluginGitHash":"Sed laboriosam vero optio.","printedVersion":"Tempore accusantium odio quibusdam maxime molestias est."},"errMsg":"Sequi doloremque nihil sapiente consequuntur consequuntur quam.","pipelineBuildID":1824550133358745577,"pipelineEndAt":"Rerum rem.","pipelineStartAt":"Earum libero sunt et.","pipelineViewURL":"Saepe dolores ullam.","pipelineViewURLs":["Autem quas rerum in consectetur.","Qui cumque.","Veritatis voluptas unde maiores perspiciatis aperiam atque.","Qui praesentium accusantium neque rerum."],"status":"ABORTED","tektonStatus":{"pipelines":[{"endAt":"Explicabo libero dolorum est id non explicabo.","gitHash":"Quia fuga consectetur.","images":[{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."},{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."}],"name":"Sed corporis molestiae harum totam ut praesentium.","ociArtifacts":[{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."}],"platform":"Qui fugit doloremque est molestias.","startAt":"Cum laborum enim voluptatem architecto.","status":"ABORTED","url":"Perferendis maxime accusamus iusto et."},{"endAt":"Explicabo libero dolorum est id non explicabo.","gitHash":"Quia fuga consectetur.","images":[{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."},{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."}],"name":"Sed corporis molestiae harum totam ut praesentium.","ociArtifacts":[{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."}],"platform":"Qui fugit doloremque est molestias.","startAt":"Cum laborum enim voluptatem architecto.","status":"ABORTED","url":"Perferendis maxime accusamus iusto et."},{"endAt":"Explicabo libero dolorum est id non explicabo.","gitHash":"Quia fuga consectetur.","images":[{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."},{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."}],"name":"Sed corporis molestiae harum totam ut praesentium.","ociArtifacts":[{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."}],"platform":"Qui fugit doloremque est molestias.","startAt":"Cum laborum enim voluptatem architecto.","status":"ABORTED","url":"Perferendis maxime accusamus iusto et."},{"endAt":"Explicabo libero dolorum est id non explicabo.","gitHash":"Quia fuga consectetur.","images":[{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."},{"platform":"Voluptatem harum.","url":"Nesciunt placeat mollitia est."}],"name":"Sed corporis molestiae harum totam ut praesentium.","ociArtifacts":[{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."},{"files":["Velit voluptas dicta officiis sint quia.","Maxime dolorem.","Sunt suscipit et.","Vel similique omnis iste."],"repo":"Voluptas possimus molestias asperiores porro.","tag":"Ut dolor quia temporibus et."}],"platform":"Qui fugit doloremque est molestias.","startAt":"Cum laborum enim voluptatem architecto.","status":"ABORTED","url":"Perferendis maxime accusamus iusto et."}]}}}}}},"400":{"description":"BadRequest: Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPError"},"example":{"code":2210883336136734564,"message":"Provident voluptatem eum."}}}},"500":{"description":"InternalServerError: Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPError"},"example":{"code":9201850823478769753,"message":"Fugiat laboriosam autem distinctio."}}}}}}}},"components":{"schemas":{"BinArtifact":{"type":"object","properties":{"component":{"type":"string","example":"Assumenda qui."},"ociFile":{"$ref":"#/components/schemas/OciFile"},"platform":{"type":"string","example":"Nostrum aut blanditiis possimus."},"sha256OciFile":{"$ref":"#/components/schemas/OciFile"},"sha256URL":{"type":"string","example":"Alias ut quia quod."},"url":{"type":"string","example":"Est assumenda praesentium est necessitatibus hic."}},"example":{"component":"Nam doloremque.","ociFile":{"file":"Tenetur aut repudiandae.","repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},"platform":"Et labore.","sha256OciFile":{"file":"Tenetur aut repudiandae.","repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},"sha256URL":"Totam ullam.","url":"Consectetur eveniet voluptates quisquam soluta est."},"required":["component","ociFile","platform","sha256OciFile","sha256URL","url"]},"BuildReport":{"type":"object","properties":{"binaries":{"type":"array","items":{"$ref":"#/components/schemas/BinArtifact"},"example":[{"component":"Voluptatibus accusantium culpa unde.","ociFile":{"file":"Tenetur aut repudiandae.","repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},"platform":"Nostrum illo laudantium aperiam numquam ratione est.","sha256OciFile":{"file":"Tenetur aut repudiandae.","repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},"sha256URL":"Iste a totam debitis quo.","url":"Fugiat suscipit labore est voluptas odit nemo."},{"component":"Voluptatibus accusantium culpa unde.","ociFile":{"file":"Tenetur aut repudiandae.","repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},"platform":"Nostrum illo laudantium aperiam numquam ratione est.","sha256OciFile":{"file":"Tenetur aut repudiandae.","repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},"sha256URL":"Iste a totam debitis quo.","url":"Fugiat suscipit labore est voluptas odit nemo."},{"component":"Voluptatibus accusantium culpa unde.","ociFile":{"file":"Tenetur aut repudiandae.","repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},"platform":"Nostrum illo laudantium aperiam numquam ratione est.","sha256OciFile":{"file":"Tenetur aut repudiandae.","repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},"sha256URL":"Iste a totam debitis quo.","url":"Fugiat suscipit labore est voluptas odit nemo."}]},"gitHash":{"type":"string","example":"Consequatur incidunt iste."},"images":{"type":"array","items":{"$ref":"#/components/schemas/ImageArtifact"},"example":[{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."},{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."}]},"pluginGitHash":{"type":"string","example":"Enim alias facere."},"printedVersion":{"type":"string","example":"Quis porro odio qui repellendus sit amet."}},"example":{"binaries":[{"component":"Voluptatibus accusantium culpa unde.","ociFile":{"file":"Tenetur aut repudiandae.","repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},"platform":"Nostrum illo laudantium aperiam numquam ratione est.","sha256OciFile":{"file":"Tenetur aut repudiandae.","repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},"sha256URL":"Iste a totam debitis quo.","url":"Fugiat suscipit labore est voluptas odit nemo."},{"component":"Voluptatibus accusantium culpa unde.","ociFile":{"file":"Tenetur aut repudiandae.","repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},"platform":"Nostrum illo laudantium aperiam numquam ratione est.","sha256OciFile":{"file":"Tenetur aut repudiandae.","repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},"sha256URL":"Iste a totam debitis quo.","url":"Fugiat suscipit labore est voluptas odit nemo."},{"component":"Voluptatibus accusantium culpa unde.","ociFile":{"file":"Tenetur aut repudiandae.","repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},"platform":"Nostrum illo laudantium aperiam numquam ratione est.","sha256OciFile":{"file":"Tenetur aut repudiandae.","repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},"sha256URL":"Iste a totam debitis quo.","url":"Fugiat suscipit labore est voluptas odit nemo."}],"gitHash":"Qui ea molestiae quia eius est.","images":[{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."},{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."}],"pluginGitHash":"Sapiente vero facere quo aspernatur.","printedVersion":"Quia tempora dolor."},"required":["binaries","gitHash","images","pluginGitHash","printedVersion"]},"CreateRequestBody":{"type":"object","properties":{"created_by":{"type":"string","description":"Creator of build","example":"ryan@kautzer.org","format":"email"},"request":{"$ref":"#/components/schemas/DevBuildRequest"}},"example":{"created_by":"elian@mayertharris.name","request":{"build_env":"Voluptate doloribus architecto numquam est.","builder_img":"Neque doloremque.","edition":"enterprise","features":"Commodi dolorum.","gitRef":"Et facere magnam velit optio est.","githubRepo":"Doloribus nisi corporis nihil soluta.","is_hotfix":true,"is_push_gcr":false,"pipeline_engine":"tekton","plugin_git_ref":"Qui necessitatibus possimus ab quos facere.","product":"tidb","productBaseImg":"Voluptatem rem earum aut.","productDockerfile":"Nulla aut natus totam esse maxime aliquid.","targetImg":"Numquam at illo voluptas dolor atque.","version":"Beatae sunt nesciunt amet autem."}},"required":["created_by","request"]},"DevBuild":{"type":"object","properties":{"id":{"type":"integer","example":5150134273331812224,"format":"int64"},"meta":{"$ref":"#/components/schemas/DevBuildMeta"},"spec":{"$ref":"#/components/schemas/DevBuildSpec"},"status":{"$ref":"#/components/schemas/DevBuildStatus"}},"example":{"id":9105814365747543874,"meta":{"created_at":"2008-12-20T10:50:18Z","created_by":"janae@cristhayes.biz","updated_at":"1973-08-27T17:49:11Z"},"spec":{"build_env":"Recusandae rerum reprehenderit dolorem repudiandae doloribus placeat.","builder_img":"Sequi consequatur voluptatem.","edition":"Reprehenderit iusto voluptatum tempore omnis rerum.","features":"Possimus ratione dolorum.","gitHash":"Sed cupiditate nesciunt consequatur necessitatibus.","gitRef":"Quisquam quia provident earum expedita.","githubRepo":"Ipsam repudiandae quas in non.","is_hotfix":true,"is_push_gcr":false,"pipeline_engine":"Aut ut consequatur excepturi.","plugin_git_ref":"Maiores saepe quo nisi ea.","product":"Tenetur quo voluptas in ut.","productBaseImg":"Ut ut deleniti rerum dolorem excepturi.","productDockerfile":"Dicta consectetur.","targetImg":"Saepe dolor tempora perspiciatis.","version":"Quibusdam non impedit suscipit."},"status":{"buildReport":{"binaries":[{"component":"Voluptatibus accusantium culpa unde.","ociFile":{"file":"Tenetur aut repudiandae.","repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},"platform":"Nostrum illo laudantium aperiam numquam ratione est.","sha256OciFile":{"file":"Tenetur aut repudiandae.","repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},"sha256URL":"Iste a totam debitis quo.","url":"Fugiat suscipit labore est voluptas odit nemo."},{"component":"Voluptatibus accusantium culpa unde.","ociFile":{"file":"Tenetur aut repudiandae.","repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},"platform":"Nostrum illo laudantium aperiam numquam ratione est.","sha256OciFile":{"file":"Tenetur aut repudiandae.","repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},"sha256URL":"Iste a totam debitis quo.","url":"Fugiat suscipit labore est voluptas odit nemo."},{"component":"Voluptatibus accusantium culpa unde.","ociFile":{"file":"Tenetur aut repudiandae.","repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},"platform":"Nostrum illo laudantium aperiam numquam ratione est.","sha256OciFile":{"file":"Tenetur aut repudiandae.","repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},"sha256URL":"Iste a totam debitis quo.","url":"Fugiat suscipit labore est voluptas odit nemo."},{"component":"Voluptatibus accusantium culpa unde.","ociFile":{"file":"Tenetur aut repudiandae.","repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},"platform":"Nostrum illo laudantium aperiam numquam ratione est.","sha256OciFile":{"file":"Tenetur aut repudiandae.","repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},"sha256URL":"Iste a totam debitis quo.","url":"Fugiat suscipit labore est voluptas odit nemo."}],"gitHash":"Qui nesciunt.","images":[{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."},{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."},{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."}],"pluginGitHash":"Omnis aperiam ab nam.","printedVersion":"Repellendus ab debitis."},"errMsg":"Nulla ducimus suscipit explicabo quia ut.","pipelineBuildID":2931797407764506222,"pipelineEndAt":"Eos exercitationem totam quibusdam et velit alias.","pipelineStartAt":"A ut rerum dolorum earum.","pipelineViewURL":"Molestiae eum et earum amet est nisi.","pipelineViewURLs":["Ut eos ipsam quasi maiores itaque voluptatum.","Similique cupiditate enim aut non."],"status":"Libero voluptatum esse quidem doloribus nam sed.","tektonStatus":{"pipelines":[{"endAt":"Possimus omnis excepturi libero harum nisi.","gitHash":"In voluptates voluptates.","images":[{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."},{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."}],"name":"Repellendus omnis consequatur aspernatur enim.","ociArtifacts":[{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."},{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."},{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."}],"platform":"Quo quaerat sit mollitia molestiae nihil odio.","startAt":"Beatae ipsa omnis adipisci culpa possimus.","status":"Libero voluptatum esse quidem doloribus nam sed.","url":"Perferendis nisi non quia debitis."},{"endAt":"Possimus omnis excepturi libero harum nisi.","gitHash":"In voluptates voluptates.","images":[{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."},{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."}],"name":"Repellendus omnis consequatur aspernatur enim.","ociArtifacts":[{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."},{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."},{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."}],"platform":"Quo quaerat sit mollitia molestiae nihil odio.","startAt":"Beatae ipsa omnis adipisci culpa possimus.","status":"Libero voluptatum esse quidem doloribus nam sed.","url":"Perferendis nisi non quia debitis."},{"endAt":"Possimus omnis excepturi libero harum nisi.","gitHash":"In voluptates voluptates.","images":[{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."},{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."}],"name":"Repellendus omnis consequatur aspernatur enim.","ociArtifacts":[{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."},{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."},{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."}],"platform":"Quo quaerat sit mollitia molestiae nihil odio.","startAt":"Beatae ipsa omnis adipisci culpa possimus.","status":"Libero voluptatum esse quidem doloribus nam sed.","url":"Perferendis nisi non quia debitis."},{"endAt":"Possimus omnis excepturi libero harum nisi.","gitHash":"In voluptates voluptates.","images":[{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."},{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."}],"name":"Repellendus omnis consequatur aspernatur enim.","ociArtifacts":[{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."},{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."},{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."}],"platform":"Quo quaerat sit mollitia molestiae nihil odio.","startAt":"Beatae ipsa omnis adipisci culpa possimus.","status":"Libero voluptatum esse quidem doloribus nam sed.","url":"Perferendis nisi non quia debitis."}]}}},"required":["id","meta","spec","status"]},"DevBuildMeta":{"type":"object","properties":{"created_at":{"type":"string","example":"1974-12-13T03:32:54Z","format":"date-time"},"created_by":{"type":"string","example":"maximus@hegmann.com","format":"email"},"updated_at":{"type":"string","example":"2006-03-27T10:25:15Z","format":"date-time"}},"example":{"created_at":"2001-09-04T08:45:31Z","created_by":"manuela_dicki@oconner.biz","updated_at":"2007-03-22T06:26:40Z"},"required":["created_at","created_by","updated_at"]},"DevBuildRequest":{"type":"object","properties":{"build_env":{"type":"string","example":"Ipsum id ut."},"builder_img":{"type":"string","example":"Dolorem delectus."},"edition":{"type":"string","example":"community","enum":["enterprise","community"]},"features":{"type":"string","example":"Deleniti quia."},"gitRef":{"type":"string","example":"Non neque qui autem qui reiciendis impedit."},"githubRepo":{"type":"string","example":"Sint inventore sed nisi quis."},"is_hotfix":{"type":"boolean","example":true},"is_push_gcr":{"type":"boolean","example":true},"pipeline_engine":{"type":"string","example":"jenkins","enum":["jenkins","tekton"]},"plugin_git_ref":{"type":"string","example":"Ipsa numquam aut ratione eveniet distinctio quod."},"product":{"type":"string","example":"tidb-tools","enum":["tidb","enterprise-plugin","tikv","pd","tiflash","br","dumpling","tidb-lightning","ticdc","ticdc-newarch","dm","tidb-binlog","tidb-tools","ng-monitoring","tidb-dashboard","drainer","pump",""]},"productBaseImg":{"type":"string","example":"Blanditiis porro ut fuga ipsa non possimus."},"productDockerfile":{"type":"string","example":"Odio sunt delectus mollitia."},"targetImg":{"type":"string","example":"Non quas et vel ipsam."},"version":{"type":"string","example":"Earum beatae rerum quibusdam rerum perferendis molestias."}},"example":{"build_env":"Omnis quia dolores corporis.","builder_img":"Voluptas aperiam sapiente libero et est.","edition":"Reprehenderit iusto voluptatum tempore omnis rerum.","features":"Modi quis omnis possimus deserunt inventore fugiat.","gitRef":"Qui quis.","githubRepo":"Nihil nobis veritatis ad.","is_hotfix":false,"is_push_gcr":true,"pipeline_engine":"Aut ut consequatur excepturi.","plugin_git_ref":"Voluptatibus eveniet ut aut error quam necessitatibus.","product":"Tenetur quo voluptas in ut.","productBaseImg":"Porro iure molestias molestiae inventore.","productDockerfile":"Amet error.","targetImg":"Voluptatum aut quia ut.","version":"Dolores eligendi et necessitatibus incidunt sint."},"required":["edition","gitRef","product","version"]},"DevBuildSpec":{"type":"object","properties":{"build_env":{"type":"string","example":"Rerum aliquid molestiae ratione ut quas necessitatibus."},"builder_img":{"type":"string","example":"Delectus reprehenderit veritatis similique autem deserunt et."},"edition":{"type":"string","example":"community","enum":["enterprise","community"]},"features":{"type":"string","example":"Voluptas iure sed sunt natus et nobis."},"gitHash":{"type":"string","example":"Vel sequi quibusdam."},"gitRef":{"type":"string","example":"Rerum nostrum inventore ipsam veritatis illum qui."},"githubRepo":{"type":"string","example":"Ut exercitationem in et corporis sunt animi."},"is_hotfix":{"type":"boolean","example":true},"is_push_gcr":{"type":"boolean","example":false},"pipeline_engine":{"type":"string","example":"jenkins","enum":["jenkins","tekton"]},"plugin_git_ref":{"type":"string","example":"Quidem animi."},"product":{"type":"string","example":"tidb","enum":["tidb","enterprise-plugin","tikv","pd","tiflash","br","dumpling","tidb-lightning","ticdc","ticdc-newarch","dm","tidb-binlog","tidb-tools","ng-monitoring","tidb-dashboard","drainer","pump",""]},"productBaseImg":{"type":"string","example":"Aut dicta qui et ratione nihil."},"productDockerfile":{"type":"string","example":"Maxime impedit sed quam at quo praesentium."},"targetImg":{"type":"string","example":"Dicta omnis necessitatibus quasi explicabo nulla quasi."},"version":{"type":"string","example":"Earum commodi et velit id molestias perspiciatis."}},"example":{"build_env":"Tenetur iste quos ratione maiores.","builder_img":"Vitae asperiores officiis quasi cumque iste.","edition":"Reprehenderit iusto voluptatum tempore omnis rerum.","features":"A consequatur consequuntur excepturi.","gitHash":"Assumenda tempora maxime dolorum enim accusamus.","gitRef":"Neque voluptates expedita aut voluptas sequi.","githubRepo":"Nisi quia dolor aspernatur.","is_hotfix":false,"is_push_gcr":false,"pipeline_engine":"Aut ut consequatur excepturi.","plugin_git_ref":"Vel numquam tempore.","product":"Tenetur quo voluptas in ut.","productBaseImg":"Provident earum sunt.","productDockerfile":"Quis officiis.","targetImg":"Autem aut est repellat.","version":"Numquam velit inventore excepturi quisquam non."},"required":["build_env","builder_img","edition","features","gitHash","gitRef","githubRepo","is_hotfix","is_push_gcr","pipeline_engine","plugin_git_ref","product","productBaseImg","productDockerfile","targetImg","version"]},"DevBuildStatus":{"type":"object","properties":{"buildReport":{"$ref":"#/components/schemas/BuildReport"},"errMsg":{"type":"string","example":"Ea aperiam voluptates consequatur pariatur id tenetur."},"pipelineBuildID":{"type":"integer","example":1581281226709399762,"format":"int64"},"pipelineEndAt":{"type":"string","example":"Aut nemo illum."},"pipelineStartAt":{"type":"string","example":"Pariatur voluptatibus est architecto officiis ipsam omnis."},"pipelineViewURL":{"type":"string","example":"Accusamus autem."},"pipelineViewURLs":{"type":"array","items":{"type":"string","example":"Ex veritatis."},"example":["Molestiae est dolor accusamus in exercitationem.","Eveniet corrupti et et corporis vero iure."]},"status":{"type":"string","example":"SUCCESS","enum":["PENDING","PROCESSING","ABORTED","SUCCESS","FAILURE","ERROR"]},"tektonStatus":{"$ref":"#/components/schemas/TektonStatus"}},"example":{"buildReport":{"binaries":[{"component":"Voluptatibus accusantium culpa unde.","ociFile":{"file":"Tenetur aut repudiandae.","repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},"platform":"Nostrum illo laudantium aperiam numquam ratione est.","sha256OciFile":{"file":"Tenetur aut repudiandae.","repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},"sha256URL":"Iste a totam debitis quo.","url":"Fugiat suscipit labore est voluptas odit nemo."},{"component":"Voluptatibus accusantium culpa unde.","ociFile":{"file":"Tenetur aut repudiandae.","repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},"platform":"Nostrum illo laudantium aperiam numquam ratione est.","sha256OciFile":{"file":"Tenetur aut repudiandae.","repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},"sha256URL":"Iste a totam debitis quo.","url":"Fugiat suscipit labore est voluptas odit nemo."},{"component":"Voluptatibus accusantium culpa unde.","ociFile":{"file":"Tenetur aut repudiandae.","repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},"platform":"Nostrum illo laudantium aperiam numquam ratione est.","sha256OciFile":{"file":"Tenetur aut repudiandae.","repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},"sha256URL":"Iste a totam debitis quo.","url":"Fugiat suscipit labore est voluptas odit nemo."},{"component":"Voluptatibus accusantium culpa unde.","ociFile":{"file":"Tenetur aut repudiandae.","repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},"platform":"Nostrum illo laudantium aperiam numquam ratione est.","sha256OciFile":{"file":"Tenetur aut repudiandae.","repo":"Architecto sunt.","tag":"Ut quod totam minus non sequi."},"sha256URL":"Iste a totam debitis quo.","url":"Fugiat suscipit labore est voluptas odit nemo."}],"gitHash":"Qui nesciunt.","images":[{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."},{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."},{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."}],"pluginGitHash":"Omnis aperiam ab nam.","printedVersion":"Repellendus ab debitis."},"errMsg":"Fugit rem atque veritatis voluptatibus.","pipelineBuildID":5195259520517698245,"pipelineEndAt":"Autem minima magni aut qui sint eveniet.","pipelineStartAt":"Quasi velit eius aliquam maxime quo.","pipelineViewURL":"Sunt sint.","pipelineViewURLs":["Aut aspernatur.","Quo aut corporis quisquam reiciendis at.","Fuga corrupti exercitationem.","Quam laudantium vitae omnis est ipsa."],"status":"Libero voluptatum esse quidem doloribus nam sed.","tektonStatus":{"pipelines":[{"endAt":"Possimus omnis excepturi libero harum nisi.","gitHash":"In voluptates voluptates.","images":[{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."},{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."}],"name":"Repellendus omnis consequatur aspernatur enim.","ociArtifacts":[{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."},{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."},{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."}],"platform":"Quo quaerat sit mollitia molestiae nihil odio.","startAt":"Beatae ipsa omnis adipisci culpa possimus.","status":"Libero voluptatum esse quidem doloribus nam sed.","url":"Perferendis nisi non quia debitis."},{"endAt":"Possimus omnis excepturi libero harum nisi.","gitHash":"In voluptates voluptates.","images":[{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."},{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."}],"name":"Repellendus omnis consequatur aspernatur enim.","ociArtifacts":[{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."},{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."},{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."}],"platform":"Quo quaerat sit mollitia molestiae nihil odio.","startAt":"Beatae ipsa omnis adipisci culpa possimus.","status":"Libero voluptatum esse quidem doloribus nam sed.","url":"Perferendis nisi non quia debitis."},{"endAt":"Possimus omnis excepturi libero harum nisi.","gitHash":"In voluptates voluptates.","images":[{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."},{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."}],"name":"Repellendus omnis consequatur aspernatur enim.","ociArtifacts":[{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."},{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."},{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."}],"platform":"Quo quaerat sit mollitia molestiae nihil odio.","startAt":"Beatae ipsa omnis adipisci culpa possimus.","status":"Libero voluptatum esse quidem doloribus nam sed.","url":"Perferendis nisi non quia debitis."},{"endAt":"Possimus omnis excepturi libero harum nisi.","gitHash":"In voluptates voluptates.","images":[{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."},{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."}],"name":"Repellendus omnis consequatur aspernatur enim.","ociArtifacts":[{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."},{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."},{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."}],"platform":"Quo quaerat sit mollitia molestiae nihil odio.","startAt":"Beatae ipsa omnis adipisci culpa possimus.","status":"Libero voluptatum esse quidem doloribus nam sed.","url":"Perferendis nisi non quia debitis."}]}},"required":["buildReport","errMsg","pipelineBuildID","pipelineEndAt","pipelineStartAt","pipelineViewURL","pipelineViewURLs","status","tektonStatus"]},"HTTPError":{"type":"object","properties":{"code":{"type":"integer","example":7854937637179497291,"format":"int64"},"message":{"type":"string","example":"Fugiat praesentium."}},"example":{"code":4184592443923367333,"message":"Quia ut qui sapiente nulla maiores dolore."},"required":["code","message"]},"ImageArtifact":{"type":"object","properties":{"platform":{"type":"string","example":"Veritatis quia doloremque iure voluptas."},"url":{"type":"string","example":"Velit et laudantium."}},"example":{"platform":"Alias nostrum.","url":"Dolorem voluptatem accusamus libero."},"required":["platform","url"]},"ImageSyncRequest":{"type":"object","properties":{"source":{"type":"string","example":"Dicta architecto quasi laboriosam."},"target":{"type":"string","example":"Ea deserunt accusantium perspiciatis."}},"example":{"source":"Non molestias consequatur aut.","target":"Eos distinctio qui quam."},"required":["source","target"]},"ListRequestBody":{"type":"object","properties":{"direction":{"type":"string","description":"The direction of the sort","default":"desc","example":"asc","enum":["asc","desc"]}},"example":{"direction":"asc"}},"OciArtifact":{"type":"object","properties":{"files":{"type":"array","items":{"type":"string","example":"Harum minima accusamus sequi aut."},"example":["Quam ea voluptatem aliquam.","Quam adipisci est.","Veniam et perspiciatis sunt iste.","Numquam inventore aliquid ea qui natus in."]},"repo":{"type":"string","example":"Expedita sunt at."},"tag":{"type":"string","example":"Rerum rerum."}},"example":{"files":["Omnis quia ex recusandae porro est.","Dignissimos recusandae nisi dolores voluptas consequatur recusandae.","Non in tenetur labore."],"repo":"Id explicabo iste rem enim.","tag":"Dolores ut et in."},"required":["files","repo","tag"]},"OciFile":{"type":"object","properties":{"file":{"type":"string","example":"Omnis voluptatum est neque ut dolores."},"repo":{"type":"string","example":"Saepe impedit eos odio."},"tag":{"type":"string","example":"Quis consequuntur labore quaerat quidem quae."}},"example":{"file":"Assumenda dolor rem dolor.","repo":"Neque architecto nam mollitia non ex.","tag":"Asperiores consequuntur."},"required":["file","repo","tag"]},"TektonPipeline":{"type":"object","properties":{"endAt":{"type":"string","example":"Ut unde."},"gitHash":{"type":"string","example":"Atque nesciunt fugit qui eos quae."},"images":{"type":"array","items":{"$ref":"#/components/schemas/ImageArtifact"},"example":[{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."},{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."},{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."}]},"name":{"type":"string","example":"Nisi dolor aliquid perspiciatis et aut."},"ociArtifacts":{"type":"array","items":{"$ref":"#/components/schemas/OciArtifact"},"example":[{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."},{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."}]},"platform":{"type":"string","example":"Sapiente voluptatem."},"startAt":{"type":"string","example":"Quia itaque nisi."},"status":{"type":"string","example":"FAILURE","enum":["PENDING","PROCESSING","ABORTED","SUCCESS","FAILURE","ERROR"]},"url":{"type":"string","example":"Aut dolorem est."}},"example":{"endAt":"Asperiores suscipit cum et.","gitHash":"Qui in consequatur et illo consectetur voluptate.","images":[{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."},{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."}],"name":"Suscipit ipsum aut et cupiditate doloremque.","ociArtifacts":[{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."},{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."},{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."},{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."}],"platform":"Autem nam voluptas vitae.","startAt":"Id aperiam in impedit est.","status":"Libero voluptatum esse quidem doloribus nam sed.","url":"Explicabo voluptatem corporis iusto."},"required":["endAt","gitHash","images","name","ociArtifacts","platform","startAt","status","url"]},"TektonStatus":{"type":"object","properties":{"pipelines":{"type":"array","items":{"$ref":"#/components/schemas/TektonPipeline"},"example":[{"endAt":"Possimus omnis excepturi libero harum nisi.","gitHash":"In voluptates voluptates.","images":[{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."},{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."}],"name":"Repellendus omnis consequatur aspernatur enim.","ociArtifacts":[{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."},{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."},{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."}],"platform":"Quo quaerat sit mollitia molestiae nihil odio.","startAt":"Beatae ipsa omnis adipisci culpa possimus.","status":"Libero voluptatum esse quidem doloribus nam sed.","url":"Perferendis nisi non quia debitis."},{"endAt":"Possimus omnis excepturi libero harum nisi.","gitHash":"In voluptates voluptates.","images":[{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."},{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."}],"name":"Repellendus omnis consequatur aspernatur enim.","ociArtifacts":[{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."},{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."},{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."}],"platform":"Quo quaerat sit mollitia molestiae nihil odio.","startAt":"Beatae ipsa omnis adipisci culpa possimus.","status":"Libero voluptatum esse quidem doloribus nam sed.","url":"Perferendis nisi non quia debitis."},{"endAt":"Possimus omnis excepturi libero harum nisi.","gitHash":"In voluptates voluptates.","images":[{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."},{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."}],"name":"Repellendus omnis consequatur aspernatur enim.","ociArtifacts":[{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."},{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."},{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."}],"platform":"Quo quaerat sit mollitia molestiae nihil odio.","startAt":"Beatae ipsa omnis adipisci culpa possimus.","status":"Libero voluptatum esse quidem doloribus nam sed.","url":"Perferendis nisi non quia debitis."},{"endAt":"Possimus omnis excepturi libero harum nisi.","gitHash":"In voluptates voluptates.","images":[{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."},{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."}],"name":"Repellendus omnis consequatur aspernatur enim.","ociArtifacts":[{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."},{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."},{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."}],"platform":"Quo quaerat sit mollitia molestiae nihil odio.","startAt":"Beatae ipsa omnis adipisci culpa possimus.","status":"Libero voluptatum esse quidem doloribus nam sed.","url":"Perferendis nisi non quia debitis."}]}},"example":{"pipelines":[{"endAt":"Possimus omnis excepturi libero harum nisi.","gitHash":"In voluptates voluptates.","images":[{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."},{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."}],"name":"Repellendus omnis consequatur aspernatur enim.","ociArtifacts":[{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."},{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."},{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."}],"platform":"Quo quaerat sit mollitia molestiae nihil odio.","startAt":"Beatae ipsa omnis adipisci culpa possimus.","status":"Libero voluptatum esse quidem doloribus nam sed.","url":"Perferendis nisi non quia debitis."},{"endAt":"Possimus omnis excepturi libero harum nisi.","gitHash":"In voluptates voluptates.","images":[{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."},{"platform":"Optio et ut dolorem ullam.","url":"Vitae fugiat eligendi omnis."}],"name":"Repellendus omnis consequatur aspernatur enim.","ociArtifacts":[{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."},{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."},{"files":["Eos eveniet.","Aliquam deleniti reiciendis dolore."],"repo":"Quibusdam aperiam quia id.","tag":"Id asperiores nostrum."}],"platform":"Quo quaerat sit mollitia molestiae nihil odio.","startAt":"Beatae ipsa omnis adipisci culpa possimus.","status":"Libero voluptatum esse quidem doloribus nam sed.","url":"Perferendis nisi non quia debitis."}]},"required":["pipelines"]},"UpdateRequestBody":{"type":"object","properties":{"DevBuild":{"$ref":"#/components/schemas/DevBuild"}},"example":{"DevBuild":{"id":8425332152695240675,"meta":{"created_at":"1982-06-14T15:45:52Z","created_by":"khalil_steuber@rippin.org","updated_at":"1994-05-27T04:49:34Z"},"spec":{"build_env":"Eum sit.","builder_img":"Suscipit et.","edition":"enterprise","features":"Magni suscipit eum vel officiis quasi sit.","gitHash":"Ex amet est nemo harum voluptas.","gitRef":"Eaque exercitationem et.","githubRepo":"Blanditiis velit voluptatem exercitationem.","is_hotfix":true,"is_push_gcr":true,"pipeline_engine":"tekton","plugin_git_ref":"Error officiis impedit quaerat consectetur voluptas ea.","product":"br","productBaseImg":"Numquam explicabo quod quidem perspiciatis.","productDockerfile":"Dolor laudantium dolores saepe nihil voluptas id.","targetImg":"Quasi quasi error laboriosam qui.","version":"Dolorum est nisi voluptatem et harum quae."},"status":{"buildReport":{"binaries":[{"component":"Qui tempora quos quae velit sint quia.","ociFile":{"file":"Commodi eius et ad ut.","repo":"Dolor deserunt atque exercitationem non placeat.","tag":"Possimus libero."},"platform":"Ab quos esse delectus ea rem.","sha256OciFile":{"file":"Commodi eius et ad ut.","repo":"Dolor deserunt atque exercitationem non placeat.","tag":"Possimus libero."},"sha256URL":"Voluptatem ratione hic quae tempora ratione.","url":"Quos eaque rerum expedita perspiciatis."},{"component":"Qui tempora quos quae velit sint quia.","ociFile":{"file":"Commodi eius et ad ut.","repo":"Dolor deserunt atque exercitationem non placeat.","tag":"Possimus libero."},"platform":"Ab quos esse delectus ea rem.","sha256OciFile":{"file":"Commodi eius et ad ut.","repo":"Dolor deserunt atque exercitationem non placeat.","tag":"Possimus libero."},"sha256URL":"Voluptatem ratione hic quae tempora ratione.","url":"Quos eaque rerum expedita perspiciatis."},{"component":"Qui tempora quos quae velit sint quia.","ociFile":{"file":"Commodi eius et ad ut.","repo":"Dolor deserunt atque exercitationem non placeat.","tag":"Possimus libero."},"platform":"Ab quos esse delectus ea rem.","sha256OciFile":{"file":"Commodi eius et ad ut.","repo":"Dolor deserunt atque exercitationem non placeat.","tag":"Possimus libero."},"sha256URL":"Voluptatem ratione hic quae tempora ratione.","url":"Quos eaque rerum expedita perspiciatis."}],"gitHash":"Dolore ipsam non.","images":[{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."},{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."}],"pluginGitHash":"Non eligendi eum.","printedVersion":"Asperiores sit consequatur repudiandae voluptas sit."},"errMsg":"Illum perferendis.","pipelineBuildID":7878572798948134575,"pipelineEndAt":"Distinctio minima molestiae quis.","pipelineStartAt":"Tempora earum quam est architecto.","pipelineViewURL":"Quia delectus qui minima.","pipelineViewURLs":["Aut modi voluptas aut eveniet.","Esse aut.","Delectus dolore libero aut.","Corrupti autem iste."],"status":"FAILURE","tektonStatus":{"pipelines":[{"endAt":"Animi at sequi error.","gitHash":"Aut molestiae.","images":[{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."},{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."},{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."}],"name":"Occaecati omnis sunt a perspiciatis ratione.","ociArtifacts":[{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."}],"platform":"Explicabo id eum quae illum vitae necessitatibus.","startAt":"Accusantium nostrum quaerat necessitatibus distinctio nobis.","status":"PROCESSING","url":"Vero sunt culpa molestiae sint ut."},{"endAt":"Animi at sequi error.","gitHash":"Aut molestiae.","images":[{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."},{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."},{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."}],"name":"Occaecati omnis sunt a perspiciatis ratione.","ociArtifacts":[{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."}],"platform":"Explicabo id eum quae illum vitae necessitatibus.","startAt":"Accusantium nostrum quaerat necessitatibus distinctio nobis.","status":"PROCESSING","url":"Vero sunt culpa molestiae sint ut."},{"endAt":"Animi at sequi error.","gitHash":"Aut molestiae.","images":[{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."},{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."},{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."}],"name":"Occaecati omnis sunt a perspiciatis ratione.","ociArtifacts":[{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."}],"platform":"Explicabo id eum quae illum vitae necessitatibus.","startAt":"Accusantium nostrum quaerat necessitatibus distinctio nobis.","status":"PROCESSING","url":"Vero sunt culpa molestiae sint ut."},{"endAt":"Animi at sequi error.","gitHash":"Aut molestiae.","images":[{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."},{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."},{"platform":"Suscipit exercitationem assumenda.","url":"In voluptas omnis."}],"name":"Occaecati omnis sunt a perspiciatis ratione.","ociArtifacts":[{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."},{"files":["Eius quae quisquam itaque.","Debitis dolore explicabo repellendus et error provident."],"repo":"Quo dolor consequatur est incidunt labore non.","tag":"Minus quis qui magnam."}],"platform":"Explicabo id eum quae illum vitae necessitatibus.","startAt":"Accusantium nostrum quaerat necessitatibus distinctio nobis.","status":"PROCESSING","url":"Vero sunt culpa molestiae sint ut."}]}}}},"required":["DevBuild"]}}},"tags":[{"name":"artifact","description":"The artifact service provides operations to manage artifacts."},{"name":"devbuild","description":"The devbuild service provides operations to manage dev builds."}]} \ No newline at end of file diff --git a/experiments/tibuild-v2/internal/service/gen/http/openapi3.yaml b/experiments/tibuild-v2/internal/service/gen/http/openapi3.yaml new file mode 100644 index 00000000..d1b1aaf1 --- /dev/null +++ b/experiments/tibuild-v2/internal/service/gen/http/openapi3.yaml @@ -0,0 +1,4029 @@ +openapi: 3.0.3 +info: + title: TiBuild API + description: TiBuild API + contact: + name: Flare Zuo + url: https://github.com/wuhuizuo + email: wuhui.zuo@pingcap.com + version: 2.0.0 +servers: + - url: http://localhost:8080 + - url: http://0.0.0.0:8080 +paths: + /api/v2/artifact/sync-image: + post: + tags: + - artifact + summary: syncImage artifact + description: Sync hotfix image to dockerhub + operationId: artifact#syncImage + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ImageSyncRequest' + example: + source: Ut alias adipisci est consequatur quo. + target: Dolore et et quis. + responses: + "200": + description: OK response. + content: + application/json: + schema: + $ref: '#/components/schemas/ImageSyncRequest' + example: + source: Libero et. + target: Autem voluptatem temporibus. + "400": + description: 'BadRequest: Bad Request' + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPError' + example: + code: 7977093190738419157 + message: Harum corporis non est enim sit provident. + "500": + description: 'InternalServerError: Internal Server Error' + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPError' + example: + code: 211829341293739755 + message: Rerum omnis. + /api/v2/devbuilds: + get: + tags: + - devbuild + summary: list devbuild + description: List devbuild with pagination support + operationId: devbuild#list + parameters: + - name: page + in: query + description: The page number of items + allowEmptyValue: true + schema: + type: integer + description: The page number of items + default: 1 + example: 343452030595580532 + format: int64 + example: 8867155028036990975 + - name: page_size + in: query + description: Page size + allowEmptyValue: true + schema: + type: integer + description: Page size + default: 30 + example: 4228068306044731778 + format: int64 + example: 3096554597964756742 + - name: hotfix + in: query + description: Filter hotfix + allowEmptyValue: true + schema: + type: boolean + description: Filter hotfix + default: false + example: false + example: false + - name: sort + in: query + description: What to sort results by + allowEmptyValue: true + schema: + type: string + description: What to sort results by + default: created_at + example: created_at + enum: + - created_at + - updated_at + example: created_at + - name: created_by + in: query + description: Filter created by + allowEmptyValue: true + schema: + type: string + description: Filter created by + example: Non repudiandae qui dolor non. + example: Nobis sint impedit doloremque expedita quo. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ListRequestBody' + example: + direction: asc + responses: + "200": + description: OK response. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/DevBuild' + description: List of dev builds + example: + - id: 1203420180395902150 + meta: + created_at: "1992-07-10T12:26:40Z" + created_by: maurine_nikolaus@nitzsche.biz + updated_at: "2009-08-03T00:19:43Z" + spec: + build_env: Quia numquam suscipit corrupti qui. + builder_img: Sint ut blanditiis. + edition: enterprise + features: Aperiam natus in ut quae accusantium. + gitHash: Numquam possimus possimus ipsum rerum unde. + gitRef: Numquam neque reiciendis quaerat. + githubRepo: Cumque ea est laboriosam esse dicta architecto. + is_hotfix: true + is_push_gcr: false + pipeline_engine: jenkins + plugin_git_ref: Minima iusto. + product: tidb-dashboard + productBaseImg: Et aut error doloremque non itaque. + productDockerfile: Voluptas quia reprehenderit fugit quo debitis numquam. + targetImg: Qui a voluptatem pariatur aspernatur sed. + version: Nostrum autem. + status: + buildReport: + binaries: + - component: Consequatur dolores provident unde non est quo. + ociFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + platform: Quia iure aut rerum velit fugit. + sha256OciFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + sha256URL: Et quia. + url: Perspiciatis similique quis. + - component: Consequatur dolores provident unde non est quo. + ociFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + platform: Quia iure aut rerum velit fugit. + sha256OciFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + sha256URL: Et quia. + url: Perspiciatis similique quis. + - component: Consequatur dolores provident unde non est quo. + ociFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + platform: Quia iure aut rerum velit fugit. + sha256OciFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + sha256URL: Et quia. + url: Perspiciatis similique quis. + gitHash: Possimus maxime et qui eius unde eos. + images: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + pluginGitHash: Id molestiae ea. + printedVersion: Assumenda ducimus ut architecto architecto quos. + errMsg: Non ut vel deserunt officiis quia et. + pipelineBuildID: 7552297125772394623 + pipelineEndAt: Blanditiis aperiam eaque eos nostrum dolore nulla. + pipelineStartAt: Eos molestiae provident omnis neque. + pipelineViewURL: Illum possimus provident quisquam illum sed ea. + pipelineViewURLs: + - Velit explicabo a qui pariatur. + - Dolorem velit dolor. + - Qui earum omnis. + status: SUCCESS + tektonStatus: + pipelines: + - endAt: Nesciunt suscipit aperiam dignissimos illo. + gitHash: Asperiores aperiam consequatur perferendis delectus. + images: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + name: Nulla ratione ex. + ociArtifacts: + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + platform: Quia quia. + startAt: Sed ut. + status: FAILURE + url: Quibusdam possimus officiis et qui suscipit. + - endAt: Nesciunt suscipit aperiam dignissimos illo. + gitHash: Asperiores aperiam consequatur perferendis delectus. + images: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + name: Nulla ratione ex. + ociArtifacts: + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + platform: Quia quia. + startAt: Sed ut. + status: FAILURE + url: Quibusdam possimus officiis et qui suscipit. + - id: 1203420180395902150 + meta: + created_at: "1992-07-10T12:26:40Z" + created_by: maurine_nikolaus@nitzsche.biz + updated_at: "2009-08-03T00:19:43Z" + spec: + build_env: Quia numquam suscipit corrupti qui. + builder_img: Sint ut blanditiis. + edition: enterprise + features: Aperiam natus in ut quae accusantium. + gitHash: Numquam possimus possimus ipsum rerum unde. + gitRef: Numquam neque reiciendis quaerat. + githubRepo: Cumque ea est laboriosam esse dicta architecto. + is_hotfix: true + is_push_gcr: false + pipeline_engine: jenkins + plugin_git_ref: Minima iusto. + product: tidb-dashboard + productBaseImg: Et aut error doloremque non itaque. + productDockerfile: Voluptas quia reprehenderit fugit quo debitis numquam. + targetImg: Qui a voluptatem pariatur aspernatur sed. + version: Nostrum autem. + status: + buildReport: + binaries: + - component: Consequatur dolores provident unde non est quo. + ociFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + platform: Quia iure aut rerum velit fugit. + sha256OciFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + sha256URL: Et quia. + url: Perspiciatis similique quis. + - component: Consequatur dolores provident unde non est quo. + ociFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + platform: Quia iure aut rerum velit fugit. + sha256OciFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + sha256URL: Et quia. + url: Perspiciatis similique quis. + - component: Consequatur dolores provident unde non est quo. + ociFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + platform: Quia iure aut rerum velit fugit. + sha256OciFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + sha256URL: Et quia. + url: Perspiciatis similique quis. + gitHash: Possimus maxime et qui eius unde eos. + images: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + pluginGitHash: Id molestiae ea. + printedVersion: Assumenda ducimus ut architecto architecto quos. + errMsg: Non ut vel deserunt officiis quia et. + pipelineBuildID: 7552297125772394623 + pipelineEndAt: Blanditiis aperiam eaque eos nostrum dolore nulla. + pipelineStartAt: Eos molestiae provident omnis neque. + pipelineViewURL: Illum possimus provident quisquam illum sed ea. + pipelineViewURLs: + - Velit explicabo a qui pariatur. + - Dolorem velit dolor. + - Qui earum omnis. + status: SUCCESS + tektonStatus: + pipelines: + - endAt: Nesciunt suscipit aperiam dignissimos illo. + gitHash: Asperiores aperiam consequatur perferendis delectus. + images: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + name: Nulla ratione ex. + ociArtifacts: + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + platform: Quia quia. + startAt: Sed ut. + status: FAILURE + url: Quibusdam possimus officiis et qui suscipit. + - endAt: Nesciunt suscipit aperiam dignissimos illo. + gitHash: Asperiores aperiam consequatur perferendis delectus. + images: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + name: Nulla ratione ex. + ociArtifacts: + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + platform: Quia quia. + startAt: Sed ut. + status: FAILURE + url: Quibusdam possimus officiis et qui suscipit. + example: + - id: 1203420180395902150 + meta: + created_at: "1992-07-10T12:26:40Z" + created_by: maurine_nikolaus@nitzsche.biz + updated_at: "2009-08-03T00:19:43Z" + spec: + build_env: Quia numquam suscipit corrupti qui. + builder_img: Sint ut blanditiis. + edition: enterprise + features: Aperiam natus in ut quae accusantium. + gitHash: Numquam possimus possimus ipsum rerum unde. + gitRef: Numquam neque reiciendis quaerat. + githubRepo: Cumque ea est laboriosam esse dicta architecto. + is_hotfix: true + is_push_gcr: false + pipeline_engine: jenkins + plugin_git_ref: Minima iusto. + product: tidb-dashboard + productBaseImg: Et aut error doloremque non itaque. + productDockerfile: Voluptas quia reprehenderit fugit quo debitis numquam. + targetImg: Qui a voluptatem pariatur aspernatur sed. + version: Nostrum autem. + status: + buildReport: + binaries: + - component: Consequatur dolores provident unde non est quo. + ociFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + platform: Quia iure aut rerum velit fugit. + sha256OciFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + sha256URL: Et quia. + url: Perspiciatis similique quis. + - component: Consequatur dolores provident unde non est quo. + ociFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + platform: Quia iure aut rerum velit fugit. + sha256OciFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + sha256URL: Et quia. + url: Perspiciatis similique quis. + - component: Consequatur dolores provident unde non est quo. + ociFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + platform: Quia iure aut rerum velit fugit. + sha256OciFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + sha256URL: Et quia. + url: Perspiciatis similique quis. + gitHash: Possimus maxime et qui eius unde eos. + images: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + pluginGitHash: Id molestiae ea. + printedVersion: Assumenda ducimus ut architecto architecto quos. + errMsg: Non ut vel deserunt officiis quia et. + pipelineBuildID: 7552297125772394623 + pipelineEndAt: Blanditiis aperiam eaque eos nostrum dolore nulla. + pipelineStartAt: Eos molestiae provident omnis neque. + pipelineViewURL: Illum possimus provident quisquam illum sed ea. + pipelineViewURLs: + - Velit explicabo a qui pariatur. + - Dolorem velit dolor. + - Qui earum omnis. + status: SUCCESS + tektonStatus: + pipelines: + - endAt: Nesciunt suscipit aperiam dignissimos illo. + gitHash: Asperiores aperiam consequatur perferendis delectus. + images: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + name: Nulla ratione ex. + ociArtifacts: + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + platform: Quia quia. + startAt: Sed ut. + status: FAILURE + url: Quibusdam possimus officiis et qui suscipit. + - endAt: Nesciunt suscipit aperiam dignissimos illo. + gitHash: Asperiores aperiam consequatur perferendis delectus. + images: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + name: Nulla ratione ex. + ociArtifacts: + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + platform: Quia quia. + startAt: Sed ut. + status: FAILURE + url: Quibusdam possimus officiis et qui suscipit. + - id: 1203420180395902150 + meta: + created_at: "1992-07-10T12:26:40Z" + created_by: maurine_nikolaus@nitzsche.biz + updated_at: "2009-08-03T00:19:43Z" + spec: + build_env: Quia numquam suscipit corrupti qui. + builder_img: Sint ut blanditiis. + edition: enterprise + features: Aperiam natus in ut quae accusantium. + gitHash: Numquam possimus possimus ipsum rerum unde. + gitRef: Numquam neque reiciendis quaerat. + githubRepo: Cumque ea est laboriosam esse dicta architecto. + is_hotfix: true + is_push_gcr: false + pipeline_engine: jenkins + plugin_git_ref: Minima iusto. + product: tidb-dashboard + productBaseImg: Et aut error doloremque non itaque. + productDockerfile: Voluptas quia reprehenderit fugit quo debitis numquam. + targetImg: Qui a voluptatem pariatur aspernatur sed. + version: Nostrum autem. + status: + buildReport: + binaries: + - component: Consequatur dolores provident unde non est quo. + ociFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + platform: Quia iure aut rerum velit fugit. + sha256OciFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + sha256URL: Et quia. + url: Perspiciatis similique quis. + - component: Consequatur dolores provident unde non est quo. + ociFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + platform: Quia iure aut rerum velit fugit. + sha256OciFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + sha256URL: Et quia. + url: Perspiciatis similique quis. + - component: Consequatur dolores provident unde non est quo. + ociFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + platform: Quia iure aut rerum velit fugit. + sha256OciFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + sha256URL: Et quia. + url: Perspiciatis similique quis. + gitHash: Possimus maxime et qui eius unde eos. + images: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + pluginGitHash: Id molestiae ea. + printedVersion: Assumenda ducimus ut architecto architecto quos. + errMsg: Non ut vel deserunt officiis quia et. + pipelineBuildID: 7552297125772394623 + pipelineEndAt: Blanditiis aperiam eaque eos nostrum dolore nulla. + pipelineStartAt: Eos molestiae provident omnis neque. + pipelineViewURL: Illum possimus provident quisquam illum sed ea. + pipelineViewURLs: + - Velit explicabo a qui pariatur. + - Dolorem velit dolor. + - Qui earum omnis. + status: SUCCESS + tektonStatus: + pipelines: + - endAt: Nesciunt suscipit aperiam dignissimos illo. + gitHash: Asperiores aperiam consequatur perferendis delectus. + images: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + name: Nulla ratione ex. + ociArtifacts: + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + platform: Quia quia. + startAt: Sed ut. + status: FAILURE + url: Quibusdam possimus officiis et qui suscipit. + - endAt: Nesciunt suscipit aperiam dignissimos illo. + gitHash: Asperiores aperiam consequatur perferendis delectus. + images: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + name: Nulla ratione ex. + ociArtifacts: + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + platform: Quia quia. + startAt: Sed ut. + status: FAILURE + url: Quibusdam possimus officiis et qui suscipit. + - id: 1203420180395902150 + meta: + created_at: "1992-07-10T12:26:40Z" + created_by: maurine_nikolaus@nitzsche.biz + updated_at: "2009-08-03T00:19:43Z" + spec: + build_env: Quia numquam suscipit corrupti qui. + builder_img: Sint ut blanditiis. + edition: enterprise + features: Aperiam natus in ut quae accusantium. + gitHash: Numquam possimus possimus ipsum rerum unde. + gitRef: Numquam neque reiciendis quaerat. + githubRepo: Cumque ea est laboriosam esse dicta architecto. + is_hotfix: true + is_push_gcr: false + pipeline_engine: jenkins + plugin_git_ref: Minima iusto. + product: tidb-dashboard + productBaseImg: Et aut error doloremque non itaque. + productDockerfile: Voluptas quia reprehenderit fugit quo debitis numquam. + targetImg: Qui a voluptatem pariatur aspernatur sed. + version: Nostrum autem. + status: + buildReport: + binaries: + - component: Consequatur dolores provident unde non est quo. + ociFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + platform: Quia iure aut rerum velit fugit. + sha256OciFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + sha256URL: Et quia. + url: Perspiciatis similique quis. + - component: Consequatur dolores provident unde non est quo. + ociFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + platform: Quia iure aut rerum velit fugit. + sha256OciFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + sha256URL: Et quia. + url: Perspiciatis similique quis. + - component: Consequatur dolores provident unde non est quo. + ociFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + platform: Quia iure aut rerum velit fugit. + sha256OciFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + sha256URL: Et quia. + url: Perspiciatis similique quis. + gitHash: Possimus maxime et qui eius unde eos. + images: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + pluginGitHash: Id molestiae ea. + printedVersion: Assumenda ducimus ut architecto architecto quos. + errMsg: Non ut vel deserunt officiis quia et. + pipelineBuildID: 7552297125772394623 + pipelineEndAt: Blanditiis aperiam eaque eos nostrum dolore nulla. + pipelineStartAt: Eos molestiae provident omnis neque. + pipelineViewURL: Illum possimus provident quisquam illum sed ea. + pipelineViewURLs: + - Velit explicabo a qui pariatur. + - Dolorem velit dolor. + - Qui earum omnis. + status: SUCCESS + tektonStatus: + pipelines: + - endAt: Nesciunt suscipit aperiam dignissimos illo. + gitHash: Asperiores aperiam consequatur perferendis delectus. + images: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + name: Nulla ratione ex. + ociArtifacts: + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + platform: Quia quia. + startAt: Sed ut. + status: FAILURE + url: Quibusdam possimus officiis et qui suscipit. + - endAt: Nesciunt suscipit aperiam dignissimos illo. + gitHash: Asperiores aperiam consequatur perferendis delectus. + images: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + name: Nulla ratione ex. + ociArtifacts: + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + platform: Quia quia. + startAt: Sed ut. + status: FAILURE + url: Quibusdam possimus officiis et qui suscipit. + - id: 1203420180395902150 + meta: + created_at: "1992-07-10T12:26:40Z" + created_by: maurine_nikolaus@nitzsche.biz + updated_at: "2009-08-03T00:19:43Z" + spec: + build_env: Quia numquam suscipit corrupti qui. + builder_img: Sint ut blanditiis. + edition: enterprise + features: Aperiam natus in ut quae accusantium. + gitHash: Numquam possimus possimus ipsum rerum unde. + gitRef: Numquam neque reiciendis quaerat. + githubRepo: Cumque ea est laboriosam esse dicta architecto. + is_hotfix: true + is_push_gcr: false + pipeline_engine: jenkins + plugin_git_ref: Minima iusto. + product: tidb-dashboard + productBaseImg: Et aut error doloremque non itaque. + productDockerfile: Voluptas quia reprehenderit fugit quo debitis numquam. + targetImg: Qui a voluptatem pariatur aspernatur sed. + version: Nostrum autem. + status: + buildReport: + binaries: + - component: Consequatur dolores provident unde non est quo. + ociFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + platform: Quia iure aut rerum velit fugit. + sha256OciFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + sha256URL: Et quia. + url: Perspiciatis similique quis. + - component: Consequatur dolores provident unde non est quo. + ociFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + platform: Quia iure aut rerum velit fugit. + sha256OciFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + sha256URL: Et quia. + url: Perspiciatis similique quis. + - component: Consequatur dolores provident unde non est quo. + ociFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + platform: Quia iure aut rerum velit fugit. + sha256OciFile: + file: Illum ex quia est autem est. + repo: Ratione consequatur quisquam et. + tag: Aut doloremque culpa. + sha256URL: Et quia. + url: Perspiciatis similique quis. + gitHash: Possimus maxime et qui eius unde eos. + images: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + pluginGitHash: Id molestiae ea. + printedVersion: Assumenda ducimus ut architecto architecto quos. + errMsg: Non ut vel deserunt officiis quia et. + pipelineBuildID: 7552297125772394623 + pipelineEndAt: Blanditiis aperiam eaque eos nostrum dolore nulla. + pipelineStartAt: Eos molestiae provident omnis neque. + pipelineViewURL: Illum possimus provident quisquam illum sed ea. + pipelineViewURLs: + - Velit explicabo a qui pariatur. + - Dolorem velit dolor. + - Qui earum omnis. + status: SUCCESS + tektonStatus: + pipelines: + - endAt: Nesciunt suscipit aperiam dignissimos illo. + gitHash: Asperiores aperiam consequatur perferendis delectus. + images: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + name: Nulla ratione ex. + ociArtifacts: + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + platform: Quia quia. + startAt: Sed ut. + status: FAILURE + url: Quibusdam possimus officiis et qui suscipit. + - endAt: Nesciunt suscipit aperiam dignissimos illo. + gitHash: Asperiores aperiam consequatur perferendis delectus. + images: + - platform: Quaerat quis. + url: Molestias ut molestiae. + - platform: Quaerat quis. + url: Molestias ut molestiae. + name: Nulla ratione ex. + ociArtifacts: + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + - files: + - Debitis dolor nihil aperiam magnam adipisci ut. + - Illo enim ut itaque. + - Tenetur recusandae corporis occaecati dolor voluptatum. + - A aut tenetur corrupti et voluptatem voluptas. + repo: Qui ea non et vel. + tag: Labore ut tempora amet dicta rerum a. + platform: Quia quia. + startAt: Sed ut. + status: FAILURE + url: Quibusdam possimus officiis et qui suscipit. + "400": + description: 'BadRequest: Bad Request' + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPError' + example: + code: 3290166082139057376 + message: Voluptatem ea ducimus eius et. + post: + tags: + - devbuild + summary: create devbuild + description: Create and trigger devbuild + operationId: devbuild#create + parameters: + - name: dryrun + in: query + description: Dry run + allowEmptyValue: true + schema: + type: boolean + description: Dry run + default: false + example: true + example: true + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateRequestBody' + example: + created_by: david_stehr@koch.name + request: + build_env: Voluptate doloribus architecto numquam est. + builder_img: Neque doloremque. + edition: enterprise + features: Commodi dolorum. + gitRef: Et facere magnam velit optio est. + githubRepo: Doloribus nisi corporis nihil soluta. + is_hotfix: true + is_push_gcr: false + pipeline_engine: tekton + plugin_git_ref: Qui necessitatibus possimus ab quos facere. + product: tidb + productBaseImg: Voluptatem rem earum aut. + productDockerfile: Nulla aut natus totam esse maxime aliquid. + targetImg: Numquam at illo voluptas dolor atque. + version: Beatae sunt nesciunt amet autem. + responses: + "200": + description: OK response. + content: + application/json: + schema: + $ref: '#/components/schemas/DevBuild' + example: + id: 1786113729575604386 + meta: + created_at: "2007-09-05T00:14:39Z" + created_by: imogene@greenfelder.com + updated_at: "1985-11-18T06:52:24Z" + spec: + build_env: Aliquam ducimus neque dolores. + builder_img: Quibusdam impedit corrupti veritatis ut. + edition: community + features: Temporibus totam quae debitis odio hic. + gitHash: Atque eos consequatur laudantium. + gitRef: Vitae iste. + githubRepo: Odit blanditiis magni eaque quas eos voluptatem. + is_hotfix: false + is_push_gcr: false + pipeline_engine: tekton + plugin_git_ref: Ipsam autem vel veniam et provident qui. + product: tidb + productBaseImg: Quia vitae non ratione reiciendis minus sapiente. + productDockerfile: Rerum quasi consequatur repellendus saepe rerum. + targetImg: Vero eveniet. + version: Nulla et saepe ratione est ut. + status: + buildReport: + binaries: + - component: Vitae sapiente nihil earum sint ad incidunt. + ociFile: + file: Voluptates cumque laudantium molestiae et. + repo: Impedit dicta quos esse et maxime. + tag: Nesciunt in et ut quod. + platform: Ut sit reiciendis esse architecto. + sha256OciFile: + file: Voluptates cumque laudantium molestiae et. + repo: Impedit dicta quos esse et maxime. + tag: Nesciunt in et ut quod. + sha256URL: Sit beatae saepe soluta. + url: Omnis ullam blanditiis libero repellat. + - component: Vitae sapiente nihil earum sint ad incidunt. + ociFile: + file: Voluptates cumque laudantium molestiae et. + repo: Impedit dicta quos esse et maxime. + tag: Nesciunt in et ut quod. + platform: Ut sit reiciendis esse architecto. + sha256OciFile: + file: Voluptates cumque laudantium molestiae et. + repo: Impedit dicta quos esse et maxime. + tag: Nesciunt in et ut quod. + sha256URL: Sit beatae saepe soluta. + url: Omnis ullam blanditiis libero repellat. + gitHash: Aut quo ex ullam. + images: + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + pluginGitHash: Sed laboriosam vero optio. + printedVersion: Tempore accusantium odio quibusdam maxime molestias est. + errMsg: Sequi doloremque nihil sapiente consequuntur consequuntur quam. + pipelineBuildID: 1824550133358745577 + pipelineEndAt: Rerum rem. + pipelineStartAt: Earum libero sunt et. + pipelineViewURL: Saepe dolores ullam. + pipelineViewURLs: + - Autem quas rerum in consectetur. + - Qui cumque. + - Veritatis voluptas unde maiores perspiciatis aperiam atque. + - Qui praesentium accusantium neque rerum. + status: ABORTED + tektonStatus: + pipelines: + - endAt: Explicabo libero dolorum est id non explicabo. + gitHash: Quia fuga consectetur. + images: + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + name: Sed corporis molestiae harum totam ut praesentium. + ociArtifacts: + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + platform: Qui fugit doloremque est molestias. + startAt: Cum laborum enim voluptatem architecto. + status: ABORTED + url: Perferendis maxime accusamus iusto et. + - endAt: Explicabo libero dolorum est id non explicabo. + gitHash: Quia fuga consectetur. + images: + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + name: Sed corporis molestiae harum totam ut praesentium. + ociArtifacts: + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + platform: Qui fugit doloremque est molestias. + startAt: Cum laborum enim voluptatem architecto. + status: ABORTED + url: Perferendis maxime accusamus iusto et. + - endAt: Explicabo libero dolorum est id non explicabo. + gitHash: Quia fuga consectetur. + images: + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + name: Sed corporis molestiae harum totam ut praesentium. + ociArtifacts: + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + platform: Qui fugit doloremque est molestias. + startAt: Cum laborum enim voluptatem architecto. + status: ABORTED + url: Perferendis maxime accusamus iusto et. + - endAt: Explicabo libero dolorum est id non explicabo. + gitHash: Quia fuga consectetur. + images: + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + name: Sed corporis molestiae harum totam ut praesentium. + ociArtifacts: + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + platform: Qui fugit doloremque est molestias. + startAt: Cum laborum enim voluptatem architecto. + status: ABORTED + url: Perferendis maxime accusamus iusto et. + "400": + description: 'BadRequest: Bad Request' + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPError' + example: + code: 8749749020813088645 + message: Repellat est facere. + "500": + description: 'InternalServerError: Internal Server Error' + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPError' + example: + code: 5476493367338509300 + message: Soluta in suscipit illo dolor omnis deleniti. + /api/v2/devbuilds/{id}: + get: + tags: + - devbuild + summary: get devbuild + description: Get devbuild + operationId: devbuild#get + parameters: + - name: sync + in: query + description: Whether sync with jenkins + allowEmptyValue: true + schema: + type: boolean + description: Whether sync with jenkins + default: false + example: true + example: false + - name: id + in: path + description: ID of build + required: true + schema: + type: integer + description: ID of build + example: 1 + format: int64 + example: 1 + responses: + "200": + description: OK response. + content: + application/json: + schema: + $ref: '#/components/schemas/DevBuild' + example: + id: 65936377763915105 + meta: + created_at: "2007-09-05T00:14:39Z" + created_by: imogene@greenfelder.com + updated_at: "1985-11-18T06:52:24Z" + spec: + build_env: Aliquam ducimus neque dolores. + builder_img: Quibusdam impedit corrupti veritatis ut. + edition: community + features: Temporibus totam quae debitis odio hic. + gitHash: Atque eos consequatur laudantium. + gitRef: Vitae iste. + githubRepo: Odit blanditiis magni eaque quas eos voluptatem. + is_hotfix: false + is_push_gcr: false + pipeline_engine: tekton + plugin_git_ref: Ipsam autem vel veniam et provident qui. + product: tidb + productBaseImg: Quia vitae non ratione reiciendis minus sapiente. + productDockerfile: Rerum quasi consequatur repellendus saepe rerum. + targetImg: Vero eveniet. + version: Nulla et saepe ratione est ut. + status: + buildReport: + binaries: + - component: Vitae sapiente nihil earum sint ad incidunt. + ociFile: + file: Voluptates cumque laudantium molestiae et. + repo: Impedit dicta quos esse et maxime. + tag: Nesciunt in et ut quod. + platform: Ut sit reiciendis esse architecto. + sha256OciFile: + file: Voluptates cumque laudantium molestiae et. + repo: Impedit dicta quos esse et maxime. + tag: Nesciunt in et ut quod. + sha256URL: Sit beatae saepe soluta. + url: Omnis ullam blanditiis libero repellat. + - component: Vitae sapiente nihil earum sint ad incidunt. + ociFile: + file: Voluptates cumque laudantium molestiae et. + repo: Impedit dicta quos esse et maxime. + tag: Nesciunt in et ut quod. + platform: Ut sit reiciendis esse architecto. + sha256OciFile: + file: Voluptates cumque laudantium molestiae et. + repo: Impedit dicta quos esse et maxime. + tag: Nesciunt in et ut quod. + sha256URL: Sit beatae saepe soluta. + url: Omnis ullam blanditiis libero repellat. + gitHash: Aut quo ex ullam. + images: + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + pluginGitHash: Sed laboriosam vero optio. + printedVersion: Tempore accusantium odio quibusdam maxime molestias est. + errMsg: Sequi doloremque nihil sapiente consequuntur consequuntur quam. + pipelineBuildID: 1824550133358745577 + pipelineEndAt: Rerum rem. + pipelineStartAt: Earum libero sunt et. + pipelineViewURL: Saepe dolores ullam. + pipelineViewURLs: + - Autem quas rerum in consectetur. + - Qui cumque. + - Veritatis voluptas unde maiores perspiciatis aperiam atque. + - Qui praesentium accusantium neque rerum. + status: ABORTED + tektonStatus: + pipelines: + - endAt: Explicabo libero dolorum est id non explicabo. + gitHash: Quia fuga consectetur. + images: + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + name: Sed corporis molestiae harum totam ut praesentium. + ociArtifacts: + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + platform: Qui fugit doloremque est molestias. + startAt: Cum laborum enim voluptatem architecto. + status: ABORTED + url: Perferendis maxime accusamus iusto et. + - endAt: Explicabo libero dolorum est id non explicabo. + gitHash: Quia fuga consectetur. + images: + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + name: Sed corporis molestiae harum totam ut praesentium. + ociArtifacts: + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + platform: Qui fugit doloremque est molestias. + startAt: Cum laborum enim voluptatem architecto. + status: ABORTED + url: Perferendis maxime accusamus iusto et. + - endAt: Explicabo libero dolorum est id non explicabo. + gitHash: Quia fuga consectetur. + images: + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + name: Sed corporis molestiae harum totam ut praesentium. + ociArtifacts: + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + platform: Qui fugit doloremque est molestias. + startAt: Cum laborum enim voluptatem architecto. + status: ABORTED + url: Perferendis maxime accusamus iusto et. + - endAt: Explicabo libero dolorum est id non explicabo. + gitHash: Quia fuga consectetur. + images: + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + name: Sed corporis molestiae harum totam ut praesentium. + ociArtifacts: + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + platform: Qui fugit doloremque est molestias. + startAt: Cum laborum enim voluptatem architecto. + status: ABORTED + url: Perferendis maxime accusamus iusto et. + "400": + description: 'BadRequest: Bad Request' + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPError' + example: + code: 7954917582970277007 + message: Inventore veniam eos numquam autem non iure. + "500": + description: 'InternalServerError: Internal Server Error' + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPError' + example: + code: 4783865352217821672 + message: Aspernatur facilis laboriosam omnis sit consequuntur qui. + put: + tags: + - devbuild + summary: update devbuild + description: Update devbuild status + operationId: devbuild#update + parameters: + - name: dryrun + in: query + description: Dry run + allowEmptyValue: true + schema: + type: boolean + description: Dry run + default: false + example: true + example: true + - name: id + in: path + description: ID of build + required: true + schema: + type: integer + description: ID of build + example: 1 + format: int64 + example: 1 + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateRequestBody' + example: + DevBuild: + id: 8425332152695240675 + meta: + created_at: "1982-06-14T15:45:52Z" + created_by: khalil_steuber@rippin.org + updated_at: "1994-05-27T04:49:34Z" + spec: + build_env: Eum sit. + builder_img: Suscipit et. + edition: enterprise + features: Magni suscipit eum vel officiis quasi sit. + gitHash: Ex amet est nemo harum voluptas. + gitRef: Eaque exercitationem et. + githubRepo: Blanditiis velit voluptatem exercitationem. + is_hotfix: true + is_push_gcr: true + pipeline_engine: tekton + plugin_git_ref: Error officiis impedit quaerat consectetur voluptas ea. + product: br + productBaseImg: Numquam explicabo quod quidem perspiciatis. + productDockerfile: Dolor laudantium dolores saepe nihil voluptas id. + targetImg: Quasi quasi error laboriosam qui. + version: Dolorum est nisi voluptatem et harum quae. + status: + buildReport: + binaries: + - component: Qui tempora quos quae velit sint quia. + ociFile: + file: Commodi eius et ad ut. + repo: Dolor deserunt atque exercitationem non placeat. + tag: Possimus libero. + platform: Ab quos esse delectus ea rem. + sha256OciFile: + file: Commodi eius et ad ut. + repo: Dolor deserunt atque exercitationem non placeat. + tag: Possimus libero. + sha256URL: Voluptatem ratione hic quae tempora ratione. + url: Quos eaque rerum expedita perspiciatis. + - component: Qui tempora quos quae velit sint quia. + ociFile: + file: Commodi eius et ad ut. + repo: Dolor deserunt atque exercitationem non placeat. + tag: Possimus libero. + platform: Ab quos esse delectus ea rem. + sha256OciFile: + file: Commodi eius et ad ut. + repo: Dolor deserunt atque exercitationem non placeat. + tag: Possimus libero. + sha256URL: Voluptatem ratione hic quae tempora ratione. + url: Quos eaque rerum expedita perspiciatis. + - component: Qui tempora quos quae velit sint quia. + ociFile: + file: Commodi eius et ad ut. + repo: Dolor deserunt atque exercitationem non placeat. + tag: Possimus libero. + platform: Ab quos esse delectus ea rem. + sha256OciFile: + file: Commodi eius et ad ut. + repo: Dolor deserunt atque exercitationem non placeat. + tag: Possimus libero. + sha256URL: Voluptatem ratione hic quae tempora ratione. + url: Quos eaque rerum expedita perspiciatis. + gitHash: Dolore ipsam non. + images: + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + pluginGitHash: Non eligendi eum. + printedVersion: Asperiores sit consequatur repudiandae voluptas sit. + errMsg: Illum perferendis. + pipelineBuildID: 7878572798948134575 + pipelineEndAt: Distinctio minima molestiae quis. + pipelineStartAt: Tempora earum quam est architecto. + pipelineViewURL: Quia delectus qui minima. + pipelineViewURLs: + - Aut modi voluptas aut eveniet. + - Esse aut. + - Delectus dolore libero aut. + - Corrupti autem iste. + status: FAILURE + tektonStatus: + pipelines: + - endAt: Animi at sequi error. + gitHash: Aut molestiae. + images: + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + name: Occaecati omnis sunt a perspiciatis ratione. + ociArtifacts: + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + platform: Explicabo id eum quae illum vitae necessitatibus. + startAt: Accusantium nostrum quaerat necessitatibus distinctio nobis. + status: PROCESSING + url: Vero sunt culpa molestiae sint ut. + - endAt: Animi at sequi error. + gitHash: Aut molestiae. + images: + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + name: Occaecati omnis sunt a perspiciatis ratione. + ociArtifacts: + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + platform: Explicabo id eum quae illum vitae necessitatibus. + startAt: Accusantium nostrum quaerat necessitatibus distinctio nobis. + status: PROCESSING + url: Vero sunt culpa molestiae sint ut. + - endAt: Animi at sequi error. + gitHash: Aut molestiae. + images: + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + name: Occaecati omnis sunt a perspiciatis ratione. + ociArtifacts: + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + platform: Explicabo id eum quae illum vitae necessitatibus. + startAt: Accusantium nostrum quaerat necessitatibus distinctio nobis. + status: PROCESSING + url: Vero sunt culpa molestiae sint ut. + - endAt: Animi at sequi error. + gitHash: Aut molestiae. + images: + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + name: Occaecati omnis sunt a perspiciatis ratione. + ociArtifacts: + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + platform: Explicabo id eum quae illum vitae necessitatibus. + startAt: Accusantium nostrum quaerat necessitatibus distinctio nobis. + status: PROCESSING + url: Vero sunt culpa molestiae sint ut. + responses: + "200": + description: OK response. + content: + application/json: + schema: + $ref: '#/components/schemas/DevBuild' + example: + id: 2839667216875699381 + meta: + created_at: "2007-09-05T00:14:39Z" + created_by: imogene@greenfelder.com + updated_at: "1985-11-18T06:52:24Z" + spec: + build_env: Aliquam ducimus neque dolores. + builder_img: Quibusdam impedit corrupti veritatis ut. + edition: community + features: Temporibus totam quae debitis odio hic. + gitHash: Atque eos consequatur laudantium. + gitRef: Vitae iste. + githubRepo: Odit blanditiis magni eaque quas eos voluptatem. + is_hotfix: false + is_push_gcr: false + pipeline_engine: tekton + plugin_git_ref: Ipsam autem vel veniam et provident qui. + product: tidb + productBaseImg: Quia vitae non ratione reiciendis minus sapiente. + productDockerfile: Rerum quasi consequatur repellendus saepe rerum. + targetImg: Vero eveniet. + version: Nulla et saepe ratione est ut. + status: + buildReport: + binaries: + - component: Vitae sapiente nihil earum sint ad incidunt. + ociFile: + file: Voluptates cumque laudantium molestiae et. + repo: Impedit dicta quos esse et maxime. + tag: Nesciunt in et ut quod. + platform: Ut sit reiciendis esse architecto. + sha256OciFile: + file: Voluptates cumque laudantium molestiae et. + repo: Impedit dicta quos esse et maxime. + tag: Nesciunt in et ut quod. + sha256URL: Sit beatae saepe soluta. + url: Omnis ullam blanditiis libero repellat. + - component: Vitae sapiente nihil earum sint ad incidunt. + ociFile: + file: Voluptates cumque laudantium molestiae et. + repo: Impedit dicta quos esse et maxime. + tag: Nesciunt in et ut quod. + platform: Ut sit reiciendis esse architecto. + sha256OciFile: + file: Voluptates cumque laudantium molestiae et. + repo: Impedit dicta quos esse et maxime. + tag: Nesciunt in et ut quod. + sha256URL: Sit beatae saepe soluta. + url: Omnis ullam blanditiis libero repellat. + gitHash: Aut quo ex ullam. + images: + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + pluginGitHash: Sed laboriosam vero optio. + printedVersion: Tempore accusantium odio quibusdam maxime molestias est. + errMsg: Sequi doloremque nihil sapiente consequuntur consequuntur quam. + pipelineBuildID: 1824550133358745577 + pipelineEndAt: Rerum rem. + pipelineStartAt: Earum libero sunt et. + pipelineViewURL: Saepe dolores ullam. + pipelineViewURLs: + - Autem quas rerum in consectetur. + - Qui cumque. + - Veritatis voluptas unde maiores perspiciatis aperiam atque. + - Qui praesentium accusantium neque rerum. + status: ABORTED + tektonStatus: + pipelines: + - endAt: Explicabo libero dolorum est id non explicabo. + gitHash: Quia fuga consectetur. + images: + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + name: Sed corporis molestiae harum totam ut praesentium. + ociArtifacts: + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + platform: Qui fugit doloremque est molestias. + startAt: Cum laborum enim voluptatem architecto. + status: ABORTED + url: Perferendis maxime accusamus iusto et. + - endAt: Explicabo libero dolorum est id non explicabo. + gitHash: Quia fuga consectetur. + images: + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + name: Sed corporis molestiae harum totam ut praesentium. + ociArtifacts: + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + platform: Qui fugit doloremque est molestias. + startAt: Cum laborum enim voluptatem architecto. + status: ABORTED + url: Perferendis maxime accusamus iusto et. + - endAt: Explicabo libero dolorum est id non explicabo. + gitHash: Quia fuga consectetur. + images: + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + name: Sed corporis molestiae harum totam ut praesentium. + ociArtifacts: + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + platform: Qui fugit doloremque est molestias. + startAt: Cum laborum enim voluptatem architecto. + status: ABORTED + url: Perferendis maxime accusamus iusto et. + - endAt: Explicabo libero dolorum est id non explicabo. + gitHash: Quia fuga consectetur. + images: + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + name: Sed corporis molestiae harum totam ut praesentium. + ociArtifacts: + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + platform: Qui fugit doloremque est molestias. + startAt: Cum laborum enim voluptatem architecto. + status: ABORTED + url: Perferendis maxime accusamus iusto et. + "400": + description: 'BadRequest: Bad Request' + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPError' + example: + code: 2450931757894233692 + message: Facilis voluptatem voluptate dignissimos ducimus. + "500": + description: 'InternalServerError: Internal Server Error' + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPError' + example: + code: 3774136690912363572 + message: Accusantium molestiae expedita non facilis. + /api/v2/devbuilds/{id}/rerun: + post: + tags: + - devbuild + summary: rerun devbuild + description: Rerun devbuild + operationId: devbuild#rerun + parameters: + - name: dryrun + in: query + description: Dry run + allowEmptyValue: true + schema: + type: boolean + description: Dry run + default: false + example: false + example: true + - name: id + in: path + description: ID of build + required: true + schema: + type: integer + description: ID of build + example: 1 + format: int64 + example: 1 + responses: + "200": + description: OK response. + content: + application/json: + schema: + $ref: '#/components/schemas/DevBuild' + example: + id: 2503246296617538539 + meta: + created_at: "2007-09-05T00:14:39Z" + created_by: imogene@greenfelder.com + updated_at: "1985-11-18T06:52:24Z" + spec: + build_env: Aliquam ducimus neque dolores. + builder_img: Quibusdam impedit corrupti veritatis ut. + edition: community + features: Temporibus totam quae debitis odio hic. + gitHash: Atque eos consequatur laudantium. + gitRef: Vitae iste. + githubRepo: Odit blanditiis magni eaque quas eos voluptatem. + is_hotfix: false + is_push_gcr: false + pipeline_engine: tekton + plugin_git_ref: Ipsam autem vel veniam et provident qui. + product: tidb + productBaseImg: Quia vitae non ratione reiciendis minus sapiente. + productDockerfile: Rerum quasi consequatur repellendus saepe rerum. + targetImg: Vero eveniet. + version: Nulla et saepe ratione est ut. + status: + buildReport: + binaries: + - component: Vitae sapiente nihil earum sint ad incidunt. + ociFile: + file: Voluptates cumque laudantium molestiae et. + repo: Impedit dicta quos esse et maxime. + tag: Nesciunt in et ut quod. + platform: Ut sit reiciendis esse architecto. + sha256OciFile: + file: Voluptates cumque laudantium molestiae et. + repo: Impedit dicta quos esse et maxime. + tag: Nesciunt in et ut quod. + sha256URL: Sit beatae saepe soluta. + url: Omnis ullam blanditiis libero repellat. + - component: Vitae sapiente nihil earum sint ad incidunt. + ociFile: + file: Voluptates cumque laudantium molestiae et. + repo: Impedit dicta quos esse et maxime. + tag: Nesciunt in et ut quod. + platform: Ut sit reiciendis esse architecto. + sha256OciFile: + file: Voluptates cumque laudantium molestiae et. + repo: Impedit dicta quos esse et maxime. + tag: Nesciunt in et ut quod. + sha256URL: Sit beatae saepe soluta. + url: Omnis ullam blanditiis libero repellat. + gitHash: Aut quo ex ullam. + images: + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + pluginGitHash: Sed laboriosam vero optio. + printedVersion: Tempore accusantium odio quibusdam maxime molestias est. + errMsg: Sequi doloremque nihil sapiente consequuntur consequuntur quam. + pipelineBuildID: 1824550133358745577 + pipelineEndAt: Rerum rem. + pipelineStartAt: Earum libero sunt et. + pipelineViewURL: Saepe dolores ullam. + pipelineViewURLs: + - Autem quas rerum in consectetur. + - Qui cumque. + - Veritatis voluptas unde maiores perspiciatis aperiam atque. + - Qui praesentium accusantium neque rerum. + status: ABORTED + tektonStatus: + pipelines: + - endAt: Explicabo libero dolorum est id non explicabo. + gitHash: Quia fuga consectetur. + images: + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + name: Sed corporis molestiae harum totam ut praesentium. + ociArtifacts: + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + platform: Qui fugit doloremque est molestias. + startAt: Cum laborum enim voluptatem architecto. + status: ABORTED + url: Perferendis maxime accusamus iusto et. + - endAt: Explicabo libero dolorum est id non explicabo. + gitHash: Quia fuga consectetur. + images: + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + name: Sed corporis molestiae harum totam ut praesentium. + ociArtifacts: + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + platform: Qui fugit doloremque est molestias. + startAt: Cum laborum enim voluptatem architecto. + status: ABORTED + url: Perferendis maxime accusamus iusto et. + - endAt: Explicabo libero dolorum est id non explicabo. + gitHash: Quia fuga consectetur. + images: + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + name: Sed corporis molestiae harum totam ut praesentium. + ociArtifacts: + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + platform: Qui fugit doloremque est molestias. + startAt: Cum laborum enim voluptatem architecto. + status: ABORTED + url: Perferendis maxime accusamus iusto et. + - endAt: Explicabo libero dolorum est id non explicabo. + gitHash: Quia fuga consectetur. + images: + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + - platform: Voluptatem harum. + url: Nesciunt placeat mollitia est. + name: Sed corporis molestiae harum totam ut praesentium. + ociArtifacts: + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + - files: + - Velit voluptas dicta officiis sint quia. + - Maxime dolorem. + - Sunt suscipit et. + - Vel similique omnis iste. + repo: Voluptas possimus molestias asperiores porro. + tag: Ut dolor quia temporibus et. + platform: Qui fugit doloremque est molestias. + startAt: Cum laborum enim voluptatem architecto. + status: ABORTED + url: Perferendis maxime accusamus iusto et. + "400": + description: 'BadRequest: Bad Request' + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPError' + example: + code: 2210883336136734564 + message: Provident voluptatem eum. + "500": + description: 'InternalServerError: Internal Server Error' + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPError' + example: + code: 9201850823478769753 + message: Fugiat laboriosam autem distinctio. +components: + schemas: + BinArtifact: + type: object + properties: + component: + type: string + example: Assumenda qui. + ociFile: + $ref: '#/components/schemas/OciFile' + platform: + type: string + example: Nostrum aut blanditiis possimus. + sha256OciFile: + $ref: '#/components/schemas/OciFile' + sha256URL: + type: string + example: Alias ut quia quod. + url: + type: string + example: Est assumenda praesentium est necessitatibus hic. + example: + component: Nam doloremque. + ociFile: + file: Tenetur aut repudiandae. + repo: Architecto sunt. + tag: Ut quod totam minus non sequi. + platform: Et labore. + sha256OciFile: + file: Tenetur aut repudiandae. + repo: Architecto sunt. + tag: Ut quod totam minus non sequi. + sha256URL: Totam ullam. + url: Consectetur eveniet voluptates quisquam soluta est. + required: + - component + - ociFile + - platform + - sha256OciFile + - sha256URL + - url + BuildReport: + type: object + properties: + binaries: + type: array + items: + $ref: '#/components/schemas/BinArtifact' + example: + - component: Voluptatibus accusantium culpa unde. + ociFile: + file: Tenetur aut repudiandae. + repo: Architecto sunt. + tag: Ut quod totam minus non sequi. + platform: Nostrum illo laudantium aperiam numquam ratione est. + sha256OciFile: + file: Tenetur aut repudiandae. + repo: Architecto sunt. + tag: Ut quod totam minus non sequi. + sha256URL: Iste a totam debitis quo. + url: Fugiat suscipit labore est voluptas odit nemo. + - component: Voluptatibus accusantium culpa unde. + ociFile: + file: Tenetur aut repudiandae. + repo: Architecto sunt. + tag: Ut quod totam minus non sequi. + platform: Nostrum illo laudantium aperiam numquam ratione est. + sha256OciFile: + file: Tenetur aut repudiandae. + repo: Architecto sunt. + tag: Ut quod totam minus non sequi. + sha256URL: Iste a totam debitis quo. + url: Fugiat suscipit labore est voluptas odit nemo. + - component: Voluptatibus accusantium culpa unde. + ociFile: + file: Tenetur aut repudiandae. + repo: Architecto sunt. + tag: Ut quod totam minus non sequi. + platform: Nostrum illo laudantium aperiam numquam ratione est. + sha256OciFile: + file: Tenetur aut repudiandae. + repo: Architecto sunt. + tag: Ut quod totam minus non sequi. + sha256URL: Iste a totam debitis quo. + url: Fugiat suscipit labore est voluptas odit nemo. + gitHash: + type: string + example: Consequatur incidunt iste. + images: + type: array + items: + $ref: '#/components/schemas/ImageArtifact' + example: + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + pluginGitHash: + type: string + example: Enim alias facere. + printedVersion: + type: string + example: Quis porro odio qui repellendus sit amet. + example: + binaries: + - component: Voluptatibus accusantium culpa unde. + ociFile: + file: Tenetur aut repudiandae. + repo: Architecto sunt. + tag: Ut quod totam minus non sequi. + platform: Nostrum illo laudantium aperiam numquam ratione est. + sha256OciFile: + file: Tenetur aut repudiandae. + repo: Architecto sunt. + tag: Ut quod totam minus non sequi. + sha256URL: Iste a totam debitis quo. + url: Fugiat suscipit labore est voluptas odit nemo. + - component: Voluptatibus accusantium culpa unde. + ociFile: + file: Tenetur aut repudiandae. + repo: Architecto sunt. + tag: Ut quod totam minus non sequi. + platform: Nostrum illo laudantium aperiam numquam ratione est. + sha256OciFile: + file: Tenetur aut repudiandae. + repo: Architecto sunt. + tag: Ut quod totam minus non sequi. + sha256URL: Iste a totam debitis quo. + url: Fugiat suscipit labore est voluptas odit nemo. + - component: Voluptatibus accusantium culpa unde. + ociFile: + file: Tenetur aut repudiandae. + repo: Architecto sunt. + tag: Ut quod totam minus non sequi. + platform: Nostrum illo laudantium aperiam numquam ratione est. + sha256OciFile: + file: Tenetur aut repudiandae. + repo: Architecto sunt. + tag: Ut quod totam minus non sequi. + sha256URL: Iste a totam debitis quo. + url: Fugiat suscipit labore est voluptas odit nemo. + gitHash: Qui ea molestiae quia eius est. + images: + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + pluginGitHash: Sapiente vero facere quo aspernatur. + printedVersion: Quia tempora dolor. + required: + - binaries + - gitHash + - images + - pluginGitHash + - printedVersion + CreateRequestBody: + type: object + properties: + created_by: + type: string + description: Creator of build + example: ryan@kautzer.org + format: email + request: + $ref: '#/components/schemas/DevBuildRequest' + example: + created_by: elian@mayertharris.name + request: + build_env: Voluptate doloribus architecto numquam est. + builder_img: Neque doloremque. + edition: enterprise + features: Commodi dolorum. + gitRef: Et facere magnam velit optio est. + githubRepo: Doloribus nisi corporis nihil soluta. + is_hotfix: true + is_push_gcr: false + pipeline_engine: tekton + plugin_git_ref: Qui necessitatibus possimus ab quos facere. + product: tidb + productBaseImg: Voluptatem rem earum aut. + productDockerfile: Nulla aut natus totam esse maxime aliquid. + targetImg: Numquam at illo voluptas dolor atque. + version: Beatae sunt nesciunt amet autem. + required: + - created_by + - request + DevBuild: + type: object + properties: + id: + type: integer + example: 5150134273331812224 + format: int64 + meta: + $ref: '#/components/schemas/DevBuildMeta' + spec: + $ref: '#/components/schemas/DevBuildSpec' + status: + $ref: '#/components/schemas/DevBuildStatus' + example: + id: 9105814365747543874 + meta: + created_at: "2008-12-20T10:50:18Z" + created_by: janae@cristhayes.biz + updated_at: "1973-08-27T17:49:11Z" + spec: + build_env: Recusandae rerum reprehenderit dolorem repudiandae doloribus placeat. + builder_img: Sequi consequatur voluptatem. + edition: Reprehenderit iusto voluptatum tempore omnis rerum. + features: Possimus ratione dolorum. + gitHash: Sed cupiditate nesciunt consequatur necessitatibus. + gitRef: Quisquam quia provident earum expedita. + githubRepo: Ipsam repudiandae quas in non. + is_hotfix: true + is_push_gcr: false + pipeline_engine: Aut ut consequatur excepturi. + plugin_git_ref: Maiores saepe quo nisi ea. + product: Tenetur quo voluptas in ut. + productBaseImg: Ut ut deleniti rerum dolorem excepturi. + productDockerfile: Dicta consectetur. + targetImg: Saepe dolor tempora perspiciatis. + version: Quibusdam non impedit suscipit. + status: + buildReport: + binaries: + - component: Voluptatibus accusantium culpa unde. + ociFile: + file: Tenetur aut repudiandae. + repo: Architecto sunt. + tag: Ut quod totam minus non sequi. + platform: Nostrum illo laudantium aperiam numquam ratione est. + sha256OciFile: + file: Tenetur aut repudiandae. + repo: Architecto sunt. + tag: Ut quod totam minus non sequi. + sha256URL: Iste a totam debitis quo. + url: Fugiat suscipit labore est voluptas odit nemo. + - component: Voluptatibus accusantium culpa unde. + ociFile: + file: Tenetur aut repudiandae. + repo: Architecto sunt. + tag: Ut quod totam minus non sequi. + platform: Nostrum illo laudantium aperiam numquam ratione est. + sha256OciFile: + file: Tenetur aut repudiandae. + repo: Architecto sunt. + tag: Ut quod totam minus non sequi. + sha256URL: Iste a totam debitis quo. + url: Fugiat suscipit labore est voluptas odit nemo. + - component: Voluptatibus accusantium culpa unde. + ociFile: + file: Tenetur aut repudiandae. + repo: Architecto sunt. + tag: Ut quod totam minus non sequi. + platform: Nostrum illo laudantium aperiam numquam ratione est. + sha256OciFile: + file: Tenetur aut repudiandae. + repo: Architecto sunt. + tag: Ut quod totam minus non sequi. + sha256URL: Iste a totam debitis quo. + url: Fugiat suscipit labore est voluptas odit nemo. + - component: Voluptatibus accusantium culpa unde. + ociFile: + file: Tenetur aut repudiandae. + repo: Architecto sunt. + tag: Ut quod totam minus non sequi. + platform: Nostrum illo laudantium aperiam numquam ratione est. + sha256OciFile: + file: Tenetur aut repudiandae. + repo: Architecto sunt. + tag: Ut quod totam minus non sequi. + sha256URL: Iste a totam debitis quo. + url: Fugiat suscipit labore est voluptas odit nemo. + gitHash: Qui nesciunt. + images: + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + pluginGitHash: Omnis aperiam ab nam. + printedVersion: Repellendus ab debitis. + errMsg: Nulla ducimus suscipit explicabo quia ut. + pipelineBuildID: 2931797407764506222 + pipelineEndAt: Eos exercitationem totam quibusdam et velit alias. + pipelineStartAt: A ut rerum dolorum earum. + pipelineViewURL: Molestiae eum et earum amet est nisi. + pipelineViewURLs: + - Ut eos ipsam quasi maiores itaque voluptatum. + - Similique cupiditate enim aut non. + status: Libero voluptatum esse quidem doloribus nam sed. + tektonStatus: + pipelines: + - endAt: Possimus omnis excepturi libero harum nisi. + gitHash: In voluptates voluptates. + images: + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + name: Repellendus omnis consequatur aspernatur enim. + ociArtifacts: + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + platform: Quo quaerat sit mollitia molestiae nihil odio. + startAt: Beatae ipsa omnis adipisci culpa possimus. + status: Libero voluptatum esse quidem doloribus nam sed. + url: Perferendis nisi non quia debitis. + - endAt: Possimus omnis excepturi libero harum nisi. + gitHash: In voluptates voluptates. + images: + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + name: Repellendus omnis consequatur aspernatur enim. + ociArtifacts: + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + platform: Quo quaerat sit mollitia molestiae nihil odio. + startAt: Beatae ipsa omnis adipisci culpa possimus. + status: Libero voluptatum esse quidem doloribus nam sed. + url: Perferendis nisi non quia debitis. + - endAt: Possimus omnis excepturi libero harum nisi. + gitHash: In voluptates voluptates. + images: + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + name: Repellendus omnis consequatur aspernatur enim. + ociArtifacts: + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + platform: Quo quaerat sit mollitia molestiae nihil odio. + startAt: Beatae ipsa omnis adipisci culpa possimus. + status: Libero voluptatum esse quidem doloribus nam sed. + url: Perferendis nisi non quia debitis. + - endAt: Possimus omnis excepturi libero harum nisi. + gitHash: In voluptates voluptates. + images: + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + name: Repellendus omnis consequatur aspernatur enim. + ociArtifacts: + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + platform: Quo quaerat sit mollitia molestiae nihil odio. + startAt: Beatae ipsa omnis adipisci culpa possimus. + status: Libero voluptatum esse quidem doloribus nam sed. + url: Perferendis nisi non quia debitis. + required: + - id + - meta + - spec + - status + DevBuildMeta: + type: object + properties: + created_at: + type: string + example: "1974-12-13T03:32:54Z" + format: date-time + created_by: + type: string + example: maximus@hegmann.com + format: email + updated_at: + type: string + example: "2006-03-27T10:25:15Z" + format: date-time + example: + created_at: "2001-09-04T08:45:31Z" + created_by: manuela_dicki@oconner.biz + updated_at: "2007-03-22T06:26:40Z" + required: + - created_at + - created_by + - updated_at + DevBuildRequest: + type: object + properties: + build_env: + type: string + example: Ipsum id ut. + builder_img: + type: string + example: Dolorem delectus. + edition: + type: string + example: community + enum: + - enterprise + - community + features: + type: string + example: Deleniti quia. + gitRef: + type: string + example: Non neque qui autem qui reiciendis impedit. + githubRepo: + type: string + example: Sint inventore sed nisi quis. + is_hotfix: + type: boolean + example: true + is_push_gcr: + type: boolean + example: true + pipeline_engine: + type: string + example: jenkins + enum: + - jenkins + - tekton + plugin_git_ref: + type: string + example: Ipsa numquam aut ratione eveniet distinctio quod. + product: + type: string + example: tidb-tools + enum: + - tidb + - enterprise-plugin + - tikv + - pd + - tiflash + - br + - dumpling + - tidb-lightning + - ticdc + - ticdc-newarch + - dm + - tidb-binlog + - tidb-tools + - ng-monitoring + - tidb-dashboard + - drainer + - pump + - "" + productBaseImg: + type: string + example: Blanditiis porro ut fuga ipsa non possimus. + productDockerfile: + type: string + example: Odio sunt delectus mollitia. + targetImg: + type: string + example: Non quas et vel ipsam. + version: + type: string + example: Earum beatae rerum quibusdam rerum perferendis molestias. + example: + build_env: Omnis quia dolores corporis. + builder_img: Voluptas aperiam sapiente libero et est. + edition: Reprehenderit iusto voluptatum tempore omnis rerum. + features: Modi quis omnis possimus deserunt inventore fugiat. + gitRef: Qui quis. + githubRepo: Nihil nobis veritatis ad. + is_hotfix: false + is_push_gcr: true + pipeline_engine: Aut ut consequatur excepturi. + plugin_git_ref: Voluptatibus eveniet ut aut error quam necessitatibus. + product: Tenetur quo voluptas in ut. + productBaseImg: Porro iure molestias molestiae inventore. + productDockerfile: Amet error. + targetImg: Voluptatum aut quia ut. + version: Dolores eligendi et necessitatibus incidunt sint. + required: + - edition + - gitRef + - product + - version + DevBuildSpec: + type: object + properties: + build_env: + type: string + example: Rerum aliquid molestiae ratione ut quas necessitatibus. + builder_img: + type: string + example: Delectus reprehenderit veritatis similique autem deserunt et. + edition: + type: string + example: community + enum: + - enterprise + - community + features: + type: string + example: Voluptas iure sed sunt natus et nobis. + gitHash: + type: string + example: Vel sequi quibusdam. + gitRef: + type: string + example: Rerum nostrum inventore ipsam veritatis illum qui. + githubRepo: + type: string + example: Ut exercitationem in et corporis sunt animi. + is_hotfix: + type: boolean + example: true + is_push_gcr: + type: boolean + example: false + pipeline_engine: + type: string + example: jenkins + enum: + - jenkins + - tekton + plugin_git_ref: + type: string + example: Quidem animi. + product: + type: string + example: tidb + enum: + - tidb + - enterprise-plugin + - tikv + - pd + - tiflash + - br + - dumpling + - tidb-lightning + - ticdc + - ticdc-newarch + - dm + - tidb-binlog + - tidb-tools + - ng-monitoring + - tidb-dashboard + - drainer + - pump + - "" + productBaseImg: + type: string + example: Aut dicta qui et ratione nihil. + productDockerfile: + type: string + example: Maxime impedit sed quam at quo praesentium. + targetImg: + type: string + example: Dicta omnis necessitatibus quasi explicabo nulla quasi. + version: + type: string + example: Earum commodi et velit id molestias perspiciatis. + example: + build_env: Tenetur iste quos ratione maiores. + builder_img: Vitae asperiores officiis quasi cumque iste. + edition: Reprehenderit iusto voluptatum tempore omnis rerum. + features: A consequatur consequuntur excepturi. + gitHash: Assumenda tempora maxime dolorum enim accusamus. + gitRef: Neque voluptates expedita aut voluptas sequi. + githubRepo: Nisi quia dolor aspernatur. + is_hotfix: false + is_push_gcr: false + pipeline_engine: Aut ut consequatur excepturi. + plugin_git_ref: Vel numquam tempore. + product: Tenetur quo voluptas in ut. + productBaseImg: Provident earum sunt. + productDockerfile: Quis officiis. + targetImg: Autem aut est repellat. + version: Numquam velit inventore excepturi quisquam non. + required: + - build_env + - builder_img + - edition + - features + - gitHash + - gitRef + - githubRepo + - is_hotfix + - is_push_gcr + - pipeline_engine + - plugin_git_ref + - product + - productBaseImg + - productDockerfile + - targetImg + - version + DevBuildStatus: + type: object + properties: + buildReport: + $ref: '#/components/schemas/BuildReport' + errMsg: + type: string + example: Ea aperiam voluptates consequatur pariatur id tenetur. + pipelineBuildID: + type: integer + example: 1581281226709399762 + format: int64 + pipelineEndAt: + type: string + example: Aut nemo illum. + pipelineStartAt: + type: string + example: Pariatur voluptatibus est architecto officiis ipsam omnis. + pipelineViewURL: + type: string + example: Accusamus autem. + pipelineViewURLs: + type: array + items: + type: string + example: Ex veritatis. + example: + - Molestiae est dolor accusamus in exercitationem. + - Eveniet corrupti et et corporis vero iure. + status: + type: string + example: SUCCESS + enum: + - PENDING + - PROCESSING + - ABORTED + - SUCCESS + - FAILURE + - ERROR + tektonStatus: + $ref: '#/components/schemas/TektonStatus' + example: + buildReport: + binaries: + - component: Voluptatibus accusantium culpa unde. + ociFile: + file: Tenetur aut repudiandae. + repo: Architecto sunt. + tag: Ut quod totam minus non sequi. + platform: Nostrum illo laudantium aperiam numquam ratione est. + sha256OciFile: + file: Tenetur aut repudiandae. + repo: Architecto sunt. + tag: Ut quod totam minus non sequi. + sha256URL: Iste a totam debitis quo. + url: Fugiat suscipit labore est voluptas odit nemo. + - component: Voluptatibus accusantium culpa unde. + ociFile: + file: Tenetur aut repudiandae. + repo: Architecto sunt. + tag: Ut quod totam minus non sequi. + platform: Nostrum illo laudantium aperiam numquam ratione est. + sha256OciFile: + file: Tenetur aut repudiandae. + repo: Architecto sunt. + tag: Ut quod totam minus non sequi. + sha256URL: Iste a totam debitis quo. + url: Fugiat suscipit labore est voluptas odit nemo. + - component: Voluptatibus accusantium culpa unde. + ociFile: + file: Tenetur aut repudiandae. + repo: Architecto sunt. + tag: Ut quod totam minus non sequi. + platform: Nostrum illo laudantium aperiam numquam ratione est. + sha256OciFile: + file: Tenetur aut repudiandae. + repo: Architecto sunt. + tag: Ut quod totam minus non sequi. + sha256URL: Iste a totam debitis quo. + url: Fugiat suscipit labore est voluptas odit nemo. + - component: Voluptatibus accusantium culpa unde. + ociFile: + file: Tenetur aut repudiandae. + repo: Architecto sunt. + tag: Ut quod totam minus non sequi. + platform: Nostrum illo laudantium aperiam numquam ratione est. + sha256OciFile: + file: Tenetur aut repudiandae. + repo: Architecto sunt. + tag: Ut quod totam minus non sequi. + sha256URL: Iste a totam debitis quo. + url: Fugiat suscipit labore est voluptas odit nemo. + gitHash: Qui nesciunt. + images: + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + pluginGitHash: Omnis aperiam ab nam. + printedVersion: Repellendus ab debitis. + errMsg: Fugit rem atque veritatis voluptatibus. + pipelineBuildID: 5195259520517698245 + pipelineEndAt: Autem minima magni aut qui sint eveniet. + pipelineStartAt: Quasi velit eius aliquam maxime quo. + pipelineViewURL: Sunt sint. + pipelineViewURLs: + - Aut aspernatur. + - Quo aut corporis quisquam reiciendis at. + - Fuga corrupti exercitationem. + - Quam laudantium vitae omnis est ipsa. + status: Libero voluptatum esse quidem doloribus nam sed. + tektonStatus: + pipelines: + - endAt: Possimus omnis excepturi libero harum nisi. + gitHash: In voluptates voluptates. + images: + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + name: Repellendus omnis consequatur aspernatur enim. + ociArtifacts: + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + platform: Quo quaerat sit mollitia molestiae nihil odio. + startAt: Beatae ipsa omnis adipisci culpa possimus. + status: Libero voluptatum esse quidem doloribus nam sed. + url: Perferendis nisi non quia debitis. + - endAt: Possimus omnis excepturi libero harum nisi. + gitHash: In voluptates voluptates. + images: + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + name: Repellendus omnis consequatur aspernatur enim. + ociArtifacts: + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + platform: Quo quaerat sit mollitia molestiae nihil odio. + startAt: Beatae ipsa omnis adipisci culpa possimus. + status: Libero voluptatum esse quidem doloribus nam sed. + url: Perferendis nisi non quia debitis. + - endAt: Possimus omnis excepturi libero harum nisi. + gitHash: In voluptates voluptates. + images: + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + name: Repellendus omnis consequatur aspernatur enim. + ociArtifacts: + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + platform: Quo quaerat sit mollitia molestiae nihil odio. + startAt: Beatae ipsa omnis adipisci culpa possimus. + status: Libero voluptatum esse quidem doloribus nam sed. + url: Perferendis nisi non quia debitis. + - endAt: Possimus omnis excepturi libero harum nisi. + gitHash: In voluptates voluptates. + images: + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + name: Repellendus omnis consequatur aspernatur enim. + ociArtifacts: + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + platform: Quo quaerat sit mollitia molestiae nihil odio. + startAt: Beatae ipsa omnis adipisci culpa possimus. + status: Libero voluptatum esse quidem doloribus nam sed. + url: Perferendis nisi non quia debitis. + required: + - buildReport + - errMsg + - pipelineBuildID + - pipelineEndAt + - pipelineStartAt + - pipelineViewURL + - pipelineViewURLs + - status + - tektonStatus + HTTPError: + type: object + properties: + code: + type: integer + example: 7854937637179497291 + format: int64 + message: + type: string + example: Fugiat praesentium. + example: + code: 4184592443923367333 + message: Quia ut qui sapiente nulla maiores dolore. + required: + - code + - message + ImageArtifact: + type: object + properties: + platform: + type: string + example: Veritatis quia doloremque iure voluptas. + url: + type: string + example: Velit et laudantium. + example: + platform: Alias nostrum. + url: Dolorem voluptatem accusamus libero. + required: + - platform + - url + ImageSyncRequest: + type: object + properties: + source: + type: string + example: Dicta architecto quasi laboriosam. + target: + type: string + example: Ea deserunt accusantium perspiciatis. + example: + source: Non molestias consequatur aut. + target: Eos distinctio qui quam. + required: + - source + - target + ListRequestBody: + type: object + properties: + direction: + type: string + description: The direction of the sort + default: desc + example: asc + enum: + - asc + - desc + example: + direction: asc + OciArtifact: + type: object + properties: + files: + type: array + items: + type: string + example: Harum minima accusamus sequi aut. + example: + - Quam ea voluptatem aliquam. + - Quam adipisci est. + - Veniam et perspiciatis sunt iste. + - Numquam inventore aliquid ea qui natus in. + repo: + type: string + example: Expedita sunt at. + tag: + type: string + example: Rerum rerum. + example: + files: + - Omnis quia ex recusandae porro est. + - Dignissimos recusandae nisi dolores voluptas consequatur recusandae. + - Non in tenetur labore. + repo: Id explicabo iste rem enim. + tag: Dolores ut et in. + required: + - files + - repo + - tag + OciFile: + type: object + properties: + file: + type: string + example: Omnis voluptatum est neque ut dolores. + repo: + type: string + example: Saepe impedit eos odio. + tag: + type: string + example: Quis consequuntur labore quaerat quidem quae. + example: + file: Assumenda dolor rem dolor. + repo: Neque architecto nam mollitia non ex. + tag: Asperiores consequuntur. + required: + - file + - repo + - tag + TektonPipeline: + type: object + properties: + endAt: + type: string + example: Ut unde. + gitHash: + type: string + example: Atque nesciunt fugit qui eos quae. + images: + type: array + items: + $ref: '#/components/schemas/ImageArtifact' + example: + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + name: + type: string + example: Nisi dolor aliquid perspiciatis et aut. + ociArtifacts: + type: array + items: + $ref: '#/components/schemas/OciArtifact' + example: + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + platform: + type: string + example: Sapiente voluptatem. + startAt: + type: string + example: Quia itaque nisi. + status: + type: string + example: FAILURE + enum: + - PENDING + - PROCESSING + - ABORTED + - SUCCESS + - FAILURE + - ERROR + url: + type: string + example: Aut dolorem est. + example: + endAt: Asperiores suscipit cum et. + gitHash: Qui in consequatur et illo consectetur voluptate. + images: + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + name: Suscipit ipsum aut et cupiditate doloremque. + ociArtifacts: + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + platform: Autem nam voluptas vitae. + startAt: Id aperiam in impedit est. + status: Libero voluptatum esse quidem doloribus nam sed. + url: Explicabo voluptatem corporis iusto. + required: + - endAt + - gitHash + - images + - name + - ociArtifacts + - platform + - startAt + - status + - url + TektonStatus: + type: object + properties: + pipelines: + type: array + items: + $ref: '#/components/schemas/TektonPipeline' + example: + - endAt: Possimus omnis excepturi libero harum nisi. + gitHash: In voluptates voluptates. + images: + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + name: Repellendus omnis consequatur aspernatur enim. + ociArtifacts: + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + platform: Quo quaerat sit mollitia molestiae nihil odio. + startAt: Beatae ipsa omnis adipisci culpa possimus. + status: Libero voluptatum esse quidem doloribus nam sed. + url: Perferendis nisi non quia debitis. + - endAt: Possimus omnis excepturi libero harum nisi. + gitHash: In voluptates voluptates. + images: + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + name: Repellendus omnis consequatur aspernatur enim. + ociArtifacts: + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + platform: Quo quaerat sit mollitia molestiae nihil odio. + startAt: Beatae ipsa omnis adipisci culpa possimus. + status: Libero voluptatum esse quidem doloribus nam sed. + url: Perferendis nisi non quia debitis. + - endAt: Possimus omnis excepturi libero harum nisi. + gitHash: In voluptates voluptates. + images: + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + name: Repellendus omnis consequatur aspernatur enim. + ociArtifacts: + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + platform: Quo quaerat sit mollitia molestiae nihil odio. + startAt: Beatae ipsa omnis adipisci culpa possimus. + status: Libero voluptatum esse quidem doloribus nam sed. + url: Perferendis nisi non quia debitis. + - endAt: Possimus omnis excepturi libero harum nisi. + gitHash: In voluptates voluptates. + images: + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + name: Repellendus omnis consequatur aspernatur enim. + ociArtifacts: + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + platform: Quo quaerat sit mollitia molestiae nihil odio. + startAt: Beatae ipsa omnis adipisci culpa possimus. + status: Libero voluptatum esse quidem doloribus nam sed. + url: Perferendis nisi non quia debitis. + example: + pipelines: + - endAt: Possimus omnis excepturi libero harum nisi. + gitHash: In voluptates voluptates. + images: + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + name: Repellendus omnis consequatur aspernatur enim. + ociArtifacts: + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + platform: Quo quaerat sit mollitia molestiae nihil odio. + startAt: Beatae ipsa omnis adipisci culpa possimus. + status: Libero voluptatum esse quidem doloribus nam sed. + url: Perferendis nisi non quia debitis. + - endAt: Possimus omnis excepturi libero harum nisi. + gitHash: In voluptates voluptates. + images: + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + - platform: Optio et ut dolorem ullam. + url: Vitae fugiat eligendi omnis. + name: Repellendus omnis consequatur aspernatur enim. + ociArtifacts: + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + - files: + - Eos eveniet. + - Aliquam deleniti reiciendis dolore. + repo: Quibusdam aperiam quia id. + tag: Id asperiores nostrum. + platform: Quo quaerat sit mollitia molestiae nihil odio. + startAt: Beatae ipsa omnis adipisci culpa possimus. + status: Libero voluptatum esse quidem doloribus nam sed. + url: Perferendis nisi non quia debitis. + required: + - pipelines + UpdateRequestBody: + type: object + properties: + DevBuild: + $ref: '#/components/schemas/DevBuild' + example: + DevBuild: + id: 8425332152695240675 + meta: + created_at: "1982-06-14T15:45:52Z" + created_by: khalil_steuber@rippin.org + updated_at: "1994-05-27T04:49:34Z" + spec: + build_env: Eum sit. + builder_img: Suscipit et. + edition: enterprise + features: Magni suscipit eum vel officiis quasi sit. + gitHash: Ex amet est nemo harum voluptas. + gitRef: Eaque exercitationem et. + githubRepo: Blanditiis velit voluptatem exercitationem. + is_hotfix: true + is_push_gcr: true + pipeline_engine: tekton + plugin_git_ref: Error officiis impedit quaerat consectetur voluptas ea. + product: br + productBaseImg: Numquam explicabo quod quidem perspiciatis. + productDockerfile: Dolor laudantium dolores saepe nihil voluptas id. + targetImg: Quasi quasi error laboriosam qui. + version: Dolorum est nisi voluptatem et harum quae. + status: + buildReport: + binaries: + - component: Qui tempora quos quae velit sint quia. + ociFile: + file: Commodi eius et ad ut. + repo: Dolor deserunt atque exercitationem non placeat. + tag: Possimus libero. + platform: Ab quos esse delectus ea rem. + sha256OciFile: + file: Commodi eius et ad ut. + repo: Dolor deserunt atque exercitationem non placeat. + tag: Possimus libero. + sha256URL: Voluptatem ratione hic quae tempora ratione. + url: Quos eaque rerum expedita perspiciatis. + - component: Qui tempora quos quae velit sint quia. + ociFile: + file: Commodi eius et ad ut. + repo: Dolor deserunt atque exercitationem non placeat. + tag: Possimus libero. + platform: Ab quos esse delectus ea rem. + sha256OciFile: + file: Commodi eius et ad ut. + repo: Dolor deserunt atque exercitationem non placeat. + tag: Possimus libero. + sha256URL: Voluptatem ratione hic quae tempora ratione. + url: Quos eaque rerum expedita perspiciatis. + - component: Qui tempora quos quae velit sint quia. + ociFile: + file: Commodi eius et ad ut. + repo: Dolor deserunt atque exercitationem non placeat. + tag: Possimus libero. + platform: Ab quos esse delectus ea rem. + sha256OciFile: + file: Commodi eius et ad ut. + repo: Dolor deserunt atque exercitationem non placeat. + tag: Possimus libero. + sha256URL: Voluptatem ratione hic quae tempora ratione. + url: Quos eaque rerum expedita perspiciatis. + gitHash: Dolore ipsam non. + images: + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + pluginGitHash: Non eligendi eum. + printedVersion: Asperiores sit consequatur repudiandae voluptas sit. + errMsg: Illum perferendis. + pipelineBuildID: 7878572798948134575 + pipelineEndAt: Distinctio minima molestiae quis. + pipelineStartAt: Tempora earum quam est architecto. + pipelineViewURL: Quia delectus qui minima. + pipelineViewURLs: + - Aut modi voluptas aut eveniet. + - Esse aut. + - Delectus dolore libero aut. + - Corrupti autem iste. + status: FAILURE + tektonStatus: + pipelines: + - endAt: Animi at sequi error. + gitHash: Aut molestiae. + images: + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + name: Occaecati omnis sunt a perspiciatis ratione. + ociArtifacts: + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + platform: Explicabo id eum quae illum vitae necessitatibus. + startAt: Accusantium nostrum quaerat necessitatibus distinctio nobis. + status: PROCESSING + url: Vero sunt culpa molestiae sint ut. + - endAt: Animi at sequi error. + gitHash: Aut molestiae. + images: + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + name: Occaecati omnis sunt a perspiciatis ratione. + ociArtifacts: + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + platform: Explicabo id eum quae illum vitae necessitatibus. + startAt: Accusantium nostrum quaerat necessitatibus distinctio nobis. + status: PROCESSING + url: Vero sunt culpa molestiae sint ut. + - endAt: Animi at sequi error. + gitHash: Aut molestiae. + images: + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + name: Occaecati omnis sunt a perspiciatis ratione. + ociArtifacts: + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + platform: Explicabo id eum quae illum vitae necessitatibus. + startAt: Accusantium nostrum quaerat necessitatibus distinctio nobis. + status: PROCESSING + url: Vero sunt culpa molestiae sint ut. + - endAt: Animi at sequi error. + gitHash: Aut molestiae. + images: + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + - platform: Suscipit exercitationem assumenda. + url: In voluptas omnis. + name: Occaecati omnis sunt a perspiciatis ratione. + ociArtifacts: + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + - files: + - Eius quae quisquam itaque. + - Debitis dolore explicabo repellendus et error provident. + repo: Quo dolor consequatur est incidunt labore non. + tag: Minus quis qui magnam. + platform: Explicabo id eum quae illum vitae necessitatibus. + startAt: Accusantium nostrum quaerat necessitatibus distinctio nobis. + status: PROCESSING + url: Vero sunt culpa molestiae sint ut. + required: + - DevBuild +tags: + - name: artifact + description: The artifact service provides operations to manage artifacts. + - name: devbuild + description: The devbuild service provides operations to manage dev builds. diff --git a/experiments/tibuild-v2/pkg/impl/artifact.go b/experiments/tibuild-v2/pkg/impl/artifact.go index 253f9f4f..5093c1d0 100644 --- a/experiments/tibuild-v2/pkg/impl/artifact.go +++ b/experiments/tibuild-v2/pkg/impl/artifact.go @@ -2,9 +2,13 @@ package impl import ( "context" + "fmt" + "net/http" - artifact "github.com/PingCAP-QE/ee-apps/tibuild/gen/artifact" + "github.com/google/go-containerregistry/pkg/crane" "github.com/rs/zerolog" + + artifact "github.com/PingCAP-QE/ee-apps/tibuild/internal/service/gen/artifact" ) // artifact service example implementation. @@ -20,9 +24,40 @@ func NewArtifact(logger *zerolog.Logger) artifact.Service { } } -// Sync hotfix image to dockerhub -func (s *artifactsrvc) SyncImage(ctx context.Context, p *artifact.SyncImagePayload) (res *artifact.ImageSyncRequest, err error) { - res = &artifact.ImageSyncRequest{} - s.logger.Info().Msgf("artifact.syncImage") - return +// SyncImage copies a Docker image from the source registry to the target registry. +// +// When running in k8s pod, it should use the service account that has Docker authentication +// configured and appended to its context. +// +// When debugging locally, it will use the default authentication stored in the +// Docker config.json file (~/.docker/config.json). +func (s *artifactsrvc) SyncImage(ctx context.Context, p *artifact.ImageSyncRequest) (res *artifact.ImageSyncRequest, err error) { + // skip validate input parameters, since the http access layer will do the validation. + + l := s.logger.With(). + Str("source", p.Source). + Str("target", p.Target). + Logger() + + l.Info().Msg("Syncing Docker image") + + // Create options for crane operations + options := []crane.Option{ + crane.WithContext(ctx), + } + + // Use the crane library to copy the image directly between registries + if err := crane.Copy(p.Source, p.Target, options...); err != nil { + l.Err(err).Msg("Failed to sync image") + + return nil, &artifact.HTTPError{ + Code: http.StatusInternalServerError, + Message: fmt.Sprintf("failed to sync image: %v", err), + } + } + + l.Info().Msg("Image successfully synced to DockerHub") + + res = p + return res, nil } diff --git a/experiments/tibuild-v2/pkg/impl/artifact_test.go b/experiments/tibuild-v2/pkg/impl/artifact_test.go new file mode 100644 index 00000000..4577e1b2 --- /dev/null +++ b/experiments/tibuild-v2/pkg/impl/artifact_test.go @@ -0,0 +1,82 @@ +package impl_test + +import ( + "context" + "fmt" + "testing" + "time" + + "github.com/rs/zerolog" + "github.com/stretchr/testify/assert" + + "github.com/PingCAP-QE/ee-apps/tibuild/internal/service/gen/artifact" + "github.com/PingCAP-QE/ee-apps/tibuild/pkg/impl" +) + +func TestSyncImage_Integration(t *testing.T) { + // Skip if running in CI or want to skip integration tests + if testing.Short() { + t.Skip("Skipping integration test") + } + + logger := zerolog.New(zerolog.NewConsoleWriter()).With().Timestamp().Logger() + service := impl.NewArtifact(&logger) + + t.Run("sync real image to ttl.sh", func(t *testing.T) { + // Setup + ctx, cancel := context.WithTimeout(context.Background(), 2*time.Minute) + defer cancel() + + // Use a small image for faster tests + sourceImage := "alpine:latest" + + // ttl.sh creates a random repository with 24h expiration + // Use a unique name to avoid conflicts + randomSuffix := time.Now().UnixNano() + targetImage := fmt.Sprintf("ttl.sh/test-sync-%d:1h", randomSuffix) + + req := &artifact.ImageSyncRequest{ + Source: sourceImage, + Target: targetImage, + } + + // Execute + resp, err := service.SyncImage(ctx, req) + + // Verify + assert.NoError(t, err) + assert.Equal(t, req, resp) + + // Log the target image for manual verification if needed + t.Logf("Successfully pushed image to: %s", targetImage) + + // Optional: Verify the image exists in the registry + // This would require additional code to check if the image was pushed correctly + }) + + t.Run("sync non-existent image should fail", func(t *testing.T) { + // Setup + ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + defer cancel() + + sourceImage := "debian:non-existent-tag-12345" + targetImage := "ttl.sh/test-sync-should-fail:1h" + + req := &artifact.ImageSyncRequest{ + Source: sourceImage, + Target: targetImage, + } + + // Execute + resp, err := service.SyncImage(ctx, req) + + // Verify + assert.Error(t, err) + assert.Nil(t, resp) + + // Check that we got an HTTP error + httpErr, ok := err.(*artifact.HTTPError) + assert.True(t, ok) + assert.Contains(t, httpErr.Message, "failed to sync image") + }) +} diff --git a/experiments/tibuild-v2/pkg/impl/devbuild.go b/experiments/tibuild-v2/pkg/impl/devbuild.go index 76414204..fc9a7dd2 100644 --- a/experiments/tibuild-v2/pkg/impl/devbuild.go +++ b/experiments/tibuild-v2/pkg/impl/devbuild.go @@ -2,54 +2,152 @@ package impl import ( "context" + "net/http" + "time" - devbuild "github.com/PingCAP-QE/ee-apps/tibuild/gen/devbuild" + "entgo.io/ent/dialect/sql" "github.com/rs/zerolog" + + "github.com/PingCAP-QE/ee-apps/tibuild/internal/database/ent" + entdevbuild "github.com/PingCAP-QE/ee-apps/tibuild/internal/database/ent/devbuild" + "github.com/PingCAP-QE/ee-apps/tibuild/internal/service/gen/devbuild" ) // devbuild service example implementation. // The example methods log the requests and return zero values. type devbuildsrvc struct { - logger *zerolog.Logger + logger *zerolog.Logger + dbClient *ent.Client } -// NewDevbuild returns the devbuild service implementation. -func NewDevbuild(logger *zerolog.Logger) devbuild.Service { +func NewDevbuild(logger *zerolog.Logger, client *ent.Client) devbuild.Service { return &devbuildsrvc{ - logger: logger, + logger: logger, + dbClient: client, } } -// List devbuild +// List devbuild with pagination support func (s *devbuildsrvc) List(ctx context.Context, p *devbuild.ListPayload) (res []*devbuild.DevBuild, err error) { s.logger.Info().Msgf("devbuild.list") - return + query := s.dbClient.DevBuild.Query(). + Where(entdevbuild.IsHotfix(p.Hotfix)). + Offset(p.PageSize * (p.Page - 1)). + Limit(p.PageSize). + Order(sql.OrderByField(p.Sort).ToFunc()) + + if p.CreatedBy != nil { + query.Where(entdevbuild.CreatedBy(*p.CreatedBy)) + } + + builds, err := query.All(ctx) + if err != nil { + return nil, err + } + + for _, build := range builds { + res = append(res, transformDevBuild(build)) + } + + return res, nil } // Create and trigger devbuild func (s *devbuildsrvc) Create(ctx context.Context, p *devbuild.CreatePayload) (res *devbuild.DevBuild, err error) { - res = &devbuild.DevBuild{} s.logger.Info().Msgf("devbuild.create") - return + + create := s.dbClient.DevBuild.Create(). + SetCreatedBy(p.CreatedBy). + SetGitRef(p.Request.GitRef). + SetEdition(string(p.Request.Edition)). + SetNillableIsHotfix(p.Request.IsHotfix). + SetCreatedAt(time.Now()). + SetCreatedBy(p.CreatedBy). + SetStatus("pending") + + // TODO: get the commit sha and set it in `create`. + + build, err := create.Save(ctx) + if err != nil { + return nil, err + } + + // TODO: trigger the actual build process + // This could involve calling a CI system or other build service + + return transformDevBuild(build), nil } // Get devbuild func (s *devbuildsrvc) Get(ctx context.Context, p *devbuild.GetPayload) (res *devbuild.DevBuild, err error) { - res = &devbuild.DevBuild{} s.logger.Info().Msgf("devbuild.get") - return + + build, err := s.dbClient.DevBuild.Get(ctx, p.ID) + if err != nil { + if ent.IsNotFound(err) { + return nil, &devbuild.HTTPError{Code: http.StatusNotFound, Message: "Devbuild not found"} + } + return nil, err + } + + return transformDevBuild(build), nil } // Update devbuild status func (s *devbuildsrvc) Update(ctx context.Context, p *devbuild.UpdatePayload) (res *devbuild.DevBuild, err error) { - res = &devbuild.DevBuild{} s.logger.Info().Msgf("devbuild.update") - return + + updater := s.dbClient.DevBuild.UpdateOneID(p.ID) + if p.DevBuild.Status != nil { + updater.SetStatus(string(p.DevBuild.Status.Status)) + } + updater.SetUpdatedAt(time.Now()) + + build, err := updater.Save(ctx) + + if err != nil { + if ent.IsNotFound(err) { + return nil, &devbuild.HTTPError{Code: http.StatusNotFound, Message: "Devbuild not found"} + } + return nil, err + } + + return transformDevBuild(build), nil } // Rerun devbuild func (s *devbuildsrvc) Rerun(ctx context.Context, p *devbuild.RerunPayload) (res *devbuild.DevBuild, err error) { - res = &devbuild.DevBuild{} s.logger.Info().Msgf("devbuild.rerun") - return + + // First get the existing build + existingBuild, err := s.dbClient.DevBuild.Get(ctx, p.ID) + if err != nil { + if ent.IsNotFound(err) { + return nil, &devbuild.HTTPError{Code: http.StatusNotFound, Message: "Devbuild not found"} + } + return nil, err + } + + // Create a new build with the same parameters + newBuild, err := s.dbClient.DevBuild.Create(). + SetCreatedBy(existingBuild.CreatedBy). + SetProduct(existingBuild.Product). + SetEdition(existingBuild.Edition). + SetVersion(existingBuild.Version). + SetGithubRepo(existingBuild.GithubRepo). + SetGitRef(existingBuild.GitRef). + SetGitHash(existingBuild.GitHash). + SetPluginGitRef(existingBuild.PluginGitRef). + SetIsHotfix(existingBuild.IsHotfix). + SetIsPushGcr(existingBuild.IsPushGcr). + SetStatus("pending"). + SetCreatedAt(time.Now()). + Save(ctx) + if err != nil { + return nil, err + } + + // TODO: trigger the actual build process again + + return transformDevBuild(newBuild), nil } diff --git a/experiments/tibuild-v2/pkg/impl/devbuild_transform.go b/experiments/tibuild-v2/pkg/impl/devbuild_transform.go new file mode 100644 index 00000000..f39f4f5c --- /dev/null +++ b/experiments/tibuild-v2/pkg/impl/devbuild_transform.go @@ -0,0 +1,209 @@ +package impl + +import ( + "time" + + "github.com/PingCAP-QE/ee-apps/tibuild/internal/database/ent" + "github.com/PingCAP-QE/ee-apps/tibuild/internal/service/gen/devbuild" +) + +// transformDevBuild converts an ent.DevBuild to a devbuild.DevBuild +func transformDevBuild(build *ent.DevBuild) *devbuild.DevBuild { + return &devbuild.DevBuild{ + ID: build.ID, + Meta: &devbuild.DevBuildMeta{ + CreatedBy: build.CreatedBy, + CreatedAt: build.CreatedAt.UTC().Format(time.DateTime), + UpdatedAt: build.UpdatedAt.UTC().Format(time.DateTime), + }, + Spec: &devbuild.DevBuildSpec{ + BuildEnv: build.BuildEnv, + BuilderImg: build.BuilderImg, + Edition: devbuild.ProductEdition(build.Edition), + Features: build.Features, + GitHash: build.GitHash, + GitRef: build.GitRef, + GithubRepo: build.GithubRepo, + IsHotfix: build.IsHotfix, + IsPushGcr: build.IsPushGcr, + PipelineEngine: devbuild.PipelineEngine(build.PipelineEngine), + PluginGitRef: build.PluginGitRef, + Product: devbuild.Product(build.Product), + ProductBaseImg: build.ProductBaseImg, + ProductDockerfile: build.ProductDockerfile, + TargetImg: build.TargetImg, + Version: build.Version, + }, + Status: &devbuild.DevBuildStatus{ + BuildReport: transformBuildReport(build.BuildReport), + ErrMsg: build.ErrMsg, + PipelineBuildID: int(build.PipelineBuildID), + PipelineStartAt: build.PipelineStartAt.UTC().Format(time.DateTime), + PipelineEndAt: build.PipelineEndAt.UTC().Format(time.DateTime), + Status: devbuild.BuildStatus(build.Status), + TektonStatus: transformTektonStatus(build.TektonStatus), + }, + } +} + +// transformBuildReport converts a map[string]any to a devbuild.BuildReport +func transformBuildReport(report map[string]any) *devbuild.BuildReport { + if report == nil { + return nil + } + + buildReport := &devbuild.BuildReport{} + + if gitHash, ok := report["gitHash"].(string); ok { + buildReport.GitHash = gitHash + } + if pluginGitHash, ok := report["pluginGitHash"].(string); ok { + buildReport.PluginGitHash = pluginGitHash + } + if printedVersion, ok := report["printedVersion"].(string); ok { + buildReport.PrintedVersion = printedVersion + } + + // Transform binaries + if binariesRaw, ok := report["binaries"].([]any); ok { + binaries := make([]*devbuild.BinArtifact, 0, len(binariesRaw)) + for _, binRaw := range binariesRaw { + if bin, ok := binRaw.(map[string]any); ok { + artifact := &devbuild.BinArtifact{} + + if component, ok := bin["component"].(string); ok { + artifact.Component = component + } + if platform, ok := bin["platform"].(string); ok { + artifact.Platform = platform + } + if url, ok := bin["url"].(string); ok { + artifact.URL = url + } + if sha256URL, ok := bin["sha256URL"].(string); ok { + artifact.Sha256URL = sha256URL + } + + // Transform OciFile + if ociFileRaw, ok := bin["ociFile"].(map[string]any); ok { + artifact.OciFile = &devbuild.OciFile{ + File: getString(ociFileRaw, "file"), + Repo: getString(ociFileRaw, "repo"), + Tag: getString(ociFileRaw, "tag"), + } + } + + // Transform Sha256OciFile + if sha256OciFileRaw, ok := bin["sha256OciFile"].(map[string]any); ok { + artifact.Sha256OciFile = &devbuild.OciFile{ + File: getString(sha256OciFileRaw, "file"), + Repo: getString(sha256OciFileRaw, "repo"), + Tag: getString(sha256OciFileRaw, "tag"), + } + } + + binaries = append(binaries, artifact) + } + } + buildReport.Binaries = binaries + } + + // Transform images + if imagesRaw, ok := report["images"].([]any); ok { + images := make([]*devbuild.ImageArtifact, 0, len(imagesRaw)) + for _, imgRaw := range imagesRaw { + if img, ok := imgRaw.(map[string]any); ok { + image := &devbuild.ImageArtifact{ + Platform: getString(img, "platform"), + URL: getString(img, "url"), + } + images = append(images, image) + } + } + buildReport.Images = images + } + + return buildReport +} + +// transformTektonStatus converts a map[string]any to a devbuild.TektonStatus +func transformTektonStatus(status map[string]any) *devbuild.TektonStatus { + if status == nil { + return nil + } + + tektonStatus := &devbuild.TektonStatus{} + + // Transform pipelines + if pipelinesRaw, ok := status["pipelines"].([]any); ok { + pipelines := make([]*devbuild.TektonPipeline, 0, len(pipelinesRaw)) + for _, pipeRaw := range pipelinesRaw { + if pipe, ok := pipeRaw.(map[string]any); ok { + pipeline := &devbuild.TektonPipeline{ + EndAt: getString(pipe, "endAt"), + GitHash: getString(pipe, "gitHash"), + Name: getString(pipe, "name"), + Platform: getString(pipe, "platform"), + StartAt: getString(pipe, "startAt"), + Status: devbuild.BuildStatus(getString(pipe, "status")), + URL: getString(pipe, "url"), + } + + // Transform images + if imagesRaw, ok := pipe["images"].([]any); ok { + images := make([]*devbuild.ImageArtifact, 0, len(imagesRaw)) + for _, imgRaw := range imagesRaw { + if img, ok := imgRaw.(map[string]any); ok { + image := &devbuild.ImageArtifact{ + Platform: getString(img, "platform"), + URL: getString(img, "url"), + } + images = append(images, image) + } + } + pipeline.Images = images + } + + // Transform OciArtifacts + if ociArtifactsRaw, ok := pipe["ociArtifacts"].([]any); ok { + ociArtifacts := make([]*devbuild.OciArtifact, 0, len(ociArtifactsRaw)) + for _, artifactRaw := range ociArtifactsRaw { + if artifact, ok := artifactRaw.(map[string]any); ok { + ociArtifact := &devbuild.OciArtifact{ + Repo: getString(artifact, "repo"), + Tag: getString(artifact, "tag"), + } + + // Handle files array + if filesRaw, ok := artifact["files"].([]any); ok { + files := make([]string, 0, len(filesRaw)) + for _, fileRaw := range filesRaw { + if file, ok := fileRaw.(string); ok { + files = append(files, file) + } + } + ociArtifact.Files = files + } + + ociArtifacts = append(ociArtifacts, ociArtifact) + } + } + pipeline.OciArtifacts = ociArtifacts + } + + pipelines = append(pipelines, pipeline) + } + } + tektonStatus.Pipelines = pipelines + } + + return tektonStatus +} + +// Helper function to safely get string value from a map +func getString(m map[string]any, key string) string { + if val, ok := m[key].(string); ok { + return val + } + return "" +}