MCPcopy Create free account
hub / github.com/bytebase/bytebase / runRollout

Function runRollout

action/command/rollout.go:51–130  ·  view source on GitHub ↗
(w *world.World)

Source from the content-addressed store, hash-verified

49}
50
51func runRollout(w *world.World) func(command *cobra.Command, _ []string) error {
52 return func(command *cobra.Command, _ []string) error {
53 defer func() {
54 output.WriteOutput(w)
55 }()
56 w.IsRollout = true
57 ctx := command.Context()
58 client, err := newClientFromWorld(w)
59 if err != nil {
60 return errors.Wrapf(err, "failed to create client")
61 }
62 defer client.close()
63
64 // Check version compatibility
65 if err := checkVersionCompatibility(w, client, args.Version); err != nil {
66 return err
67 }
68
69 var plan *v1pb.Plan
70 if w.Plan != "" {
71 planP, err := client.getPlan(ctx, w.Plan)
72 if err != nil {
73 return errors.Wrapf(err, "failed to get plan")
74 }
75 plan = planP
76 w.Logger.Info("use the provided plan", "url", fmt.Sprintf("%s/%s", client.url, plan.Name))
77 } else {
78 var release string
79 releaseFiles, err := getReleaseFiles(w)
80 if err != nil {
81 return errors.Wrapf(err, "failed to get release files")
82 }
83 releaseType := v1pb.Release_VERSIONED
84 if w.Declarative {
85 releaseType = v1pb.Release_DECLARATIVE
86 }
87 createReleaseResponse, err := client.createRelease(ctx, w.Project, &v1pb.Release{
88 Files: releaseFiles,
89 VcsSource: getVCSSource(w),
90 Type: releaseType,
91 }, w.ReleaseIDTemplate, w.ReleaseIDTimezone)
92 if err != nil {
93 return errors.Wrapf(err, "failed to create release")
94 }
95 w.Logger.Info("release created", "url", fmt.Sprintf("%s/%s", client.url, createReleaseResponse.Name))
96 release = createReleaseResponse.Name
97 w.OutputMap.Release = release
98
99 // Extract release ID from release name (format: projects/{project}/releases/{release_id})
100 releaseID := strings.TrimPrefix(release, w.Project+"/releases/")
101
102 planCreated, err := client.createPlan(ctx, w.Project, &v1pb.Plan{
103 Title: releaseID,
104 Specs: []*v1pb.Plan_Spec{
105 {
106 Id: uuid.New().String(),
107 Config: &v1pb.Plan_Spec_ChangeDatabaseConfig{
108 ChangeDatabaseConfig: &v1pb.Plan_ChangeDatabaseConfig{

Callers 1

NewRolloutCommandFunction · 0.85

Calls 12

WriteOutputFunction · 0.92
newClientFromWorldFunction · 0.85
getReleaseFilesFunction · 0.85
getVCSSourceFunction · 0.85
runAndWaitForRolloutFunction · 0.85
InfoMethod · 0.80
createReleaseMethod · 0.80
StringMethod · 0.65
closeMethod · 0.45
getPlanMethod · 0.45
createPlanMethod · 0.45

Tested by

no test coverage detected