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

Method RedeployProject

cli/pkg/local/server.go:487–602  ·  view source on GitHub ↗

RedeployProject implements localv1connect.LocalServiceHandler.

(ctx context.Context, r *connect.Request[localv1.RedeployProjectRequest])

Source from the content-addressed store, hash-verified

485
486// RedeployProject implements localv1connect.LocalServiceHandler.
487func (s *Server) RedeployProject(ctx context.Context, r *connect.Request[localv1.RedeployProjectRequest]) (*connect.Response[localv1.RedeployProjectResponse], error) {
488 // Get authenticated admin client
489 if !s.app.ch.IsAuthenticated() {
490 return nil, errors.New("must authenticate before performing this action")
491 }
492 c, err := s.app.ch.Client()
493 if err != nil {
494 return nil, err
495 }
496
497 projResp, err := c.GetProjectByID(ctx, &adminv1.GetProjectByIDRequest{
498 Id: r.Msg.ProjectId,
499 })
500 if err != nil {
501 return nil, err
502 }
503
504 // if the org is not same as the default org, switch to the org
505 if s.app.ch.Org != projResp.Project.OrgName {
506 err = s.app.ch.SetOrg(projResp.Project.OrgName)
507 if err != nil {
508 return nil, err
509 }
510 }
511
512 if r.Msg.Rearchive { // old zip-and-ship, currently used only for testing until we figure out a good way to test using manged github repos
513 repo, release, err := s.app.Runtime.Repo(ctx, s.app.Instance.ID)
514 if err != nil {
515 return nil, err
516 }
517 defer release()
518
519 assetID, err := cmdutil.UploadRepo(ctx, repo, s.app.ch, projResp.Project.OrgName, projResp.Project.Name)
520 if err != nil {
521 return nil, err
522 }
523 _, err = c.UpdateProject(ctx, &adminv1.UpdateProjectRequest{
524 ArchiveAssetId: &assetID,
525 Org: projResp.Project.OrgName,
526 Project: projResp.Project.Name,
527 })
528 if err != nil {
529 return nil, err
530 }
531 } else if r.Msg.Reupload {
532 if projResp.Project.ManagedGitId != "" {
533 // If rill-managed project then push to the repo based on org/project passed in.
534 err = s.app.ch.GitHelper(projResp.Project.OrgName, projResp.Project.Name, s.app.ProjectPath).PushToManagedRepo(ctx)
535 if err != nil {
536 return nil, err
537 }
538 } else if projResp.Project.ArchiveAssetId != "" || r.Msg.CreateManagedRepo {
539 // project was previously deployed using zip and ship, or we are overwriting another project already connected to github
540 gitBranch, err := currentGitBranch(s.app.ProjectPath)
541 if err != nil {
542 return nil, err
543 }
544 ghRepo, err := s.app.ch.GitHelper(projResp.Project.OrgName, projResp.Project.Name, s.app.ProjectPath).PushToNewManagedRepo(ctx, gitBranch)

Callers

nothing calls this directly

Calls 15

UploadRepoFunction · 0.92
InferRepoRootAndSubpathFunction · 0.92
currentGitBranchFunction · 0.85
ParseDotenvFunction · 0.85
IsAuthenticatedMethod · 0.80
SetOrgMethod · 0.80
RepoMethod · 0.80
PushToManagedRepoMethod · 0.80
GitHelperMethod · 0.80
PushToNewManagedRepoMethod · 0.80
GitSignatureMethod · 0.80
CommitAndSafePushMethod · 0.80

Tested by

no test coverage detected