MCPcopy Index your code
hub / github.com/rilldata/rill / RedeployProject

Method RedeployProject

admin/projects.go:336–406  ·  view source on GitHub ↗

RedeployProject de-provisions and re-provisions a project's deployment. If prevDepl is nil, it provisions a new prod deployment based on primary_branch.

(ctx context.Context, proj *database.Project, prevDepl *database.Deployment)

Source from the content-addressed store, hash-verified

334// RedeployProject de-provisions and re-provisions a project's deployment.
335// If prevDepl is nil, it provisions a new prod deployment based on primary_branch.
336func (s *Service) RedeployProject(ctx context.Context, proj *database.Project, prevDepl *database.Deployment) (*database.Project, error) {
337 // Provision new deployment
338 var branch, environment string
339 var editable bool
340 if prevDepl != nil {
341 branch = prevDepl.Branch
342 environment = prevDepl.Environment
343 editable = prevDepl.Editable
344 } else {
345 branch = proj.PrimaryBranch
346 environment = "prod"
347 }
348 newDepl, err := s.CreateDeployment(ctx, &CreateDeploymentOptions{
349 ProjectID: proj.ID,
350 OwnerUserID: nil,
351 Environment: environment,
352 Branch: branch,
353 Editable: editable,
354 })
355 if err != nil {
356 return nil, err
357 }
358
359 if environment != "prod" || branch != proj.PrimaryBranch {
360 // Delete old prod deployment if exists
361 if prevDepl != nil {
362 err := s.TeardownDeployment(ctx, prevDepl)
363 if err != nil {
364 s.Logger.Error("trigger redeploy: could not teardown old deployment", zap.String("deployment_id", prevDepl.ID), zap.Error(err), observability.ZapCtx(ctx))
365 }
366 }
367 return proj, nil
368 }
369
370 // Update prod deployment on project
371 proj, err = s.DB.UpdateProject(ctx, proj.ID, &database.UpdateProjectOptions{
372 Name: proj.Name,
373 Description: proj.Description,
374 Public: proj.Public,
375 DirectoryName: proj.DirectoryName,
376 Provisioner: proj.Provisioner,
377 ArchiveAssetID: proj.ArchiveAssetID,
378 GitRemote: proj.GitRemote,
379 GithubInstallationID: proj.GithubInstallationID,
380 GithubRepoID: proj.GithubRepoID,
381 ManagedGitRepoID: proj.ManagedGitRepoID,
382 ProdVersion: proj.ProdVersion,
383 PrimaryBranch: proj.PrimaryBranch,
384 Subpath: proj.Subpath,
385 PrimaryDeploymentID: &newDepl.ID,
386 ProdSlots: proj.ProdSlots,
387 ProdTTLSeconds: proj.ProdTTLSeconds,
388 DevSlots: proj.DevSlots,
389 DevTTLSeconds: proj.DevTTLSeconds,
390 OverrideDiskGB: proj.OverrideDiskGB,
391 Annotations: proj.Annotations,
392 })
393 if err != nil {

Callers

nothing calls this directly

Calls 6

CreateDeploymentMethod · 0.95
TeardownDeploymentMethod · 0.95
ZapCtxFunction · 0.92
StringMethod · 0.65
UpdateProjectMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected