-
Notifications
You must be signed in to change notification settings - Fork 100
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
runtime-local apis for project deployment #4909
base: main
Are you sure you want to change the base?
Conversation
|
|
|
||
repoOwner := "" | ||
if len(candidateOrgs) == 0 { | ||
ch.PrintfWarn("\nRill app does not have permissions to create Github repository on any of your accounts. Visit %q to grant access.\n", pollRes.GrantAccessUrl) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ch.PrintfWarn("\nRill app does not have permissions to create Github repository on any of your accounts. Visit %q to grant access.\n", pollRes.GrantAccessUrl) | |
ch.PrintfWarn("\nRill does not have permissions to create a repository on your Github account. Visit this URL to grant access: %s\n", pollRes.GrantAccessUrl) |
return nil | ||
} else if len(candidateOrgs) == 1 { | ||
repoOwner = candidateOrgs[0] | ||
ok, err = cmdutil.ConfirmPrompt(fmt.Sprintf("Rill has write access to %q Github account. Do you want to use this account?", repoOwner), "", true) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok, err = cmdutil.ConfirmPrompt(fmt.Sprintf("Rill has write access to %q Github account. Do you want to use this account?", repoOwner), "", true) | |
ok, err = cmdutil.ConfirmPrompt(fmt.Sprintf("Rill will create a new repository in the Github account %q. Do you want to continue?, repoOwner), "", true) |
if err != nil { | ||
return err | ||
} | ||
if !ok { | ||
ch.PrintfWarn("\nIf you want to deploy to another Github account, Please visit %q to grant access.\n", pollRes.GrantAccessUrl) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ch.PrintfWarn("\nIf you want to deploy to another Github account, Please visit %q to grant access.\n", pollRes.GrantAccessUrl) | |
ch.PrintfWarn("\nIf you want to deploy to another Github account, visit this URL to grant access: %s\n", pollRes.GrantAccessUrl) |
} else { | ||
repoOwner, err = cmdutil.SelectPrompt("Rill has write access to following Github accounts. Please select one", candidateOrgs, candidateOrgs[0]) | ||
if err != nil { | ||
ch.PrintfWarn("\nIf you want to deploy to another Github account, Please visit %q to grant access.\n", pollRes.GrantAccessUrl) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ch.PrintfWarn("\nIf you want to deploy to another Github account, Please visit %q to grant access.\n", pollRes.GrantAccessUrl) | |
ch.PrintfWarn("\nIf you want to deploy to another Github account, visit this URL to grant access: %s\n", pollRes.GrantAccessUrl) |
return nil | ||
} | ||
} else { | ||
repoOwner, err = cmdutil.SelectPrompt("Rill has write access to following Github accounts. Please select one", candidateOrgs, candidateOrgs[0]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
repoOwner, err = cmdutil.SelectPrompt("Rill has write access to following Github accounts. Please select one", candidateOrgs, candidateOrgs[0]) | |
repoOwner, err = cmdutil.SelectPrompt("Select a Github account for the new repository", candidateOrgs, candidateOrgs[0]) |
} | ||
} | ||
|
||
// TODO check if any project exists with name localProjectName in any of the users rill org |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think this is important, but what do you think?
githubRepo, _, err := githubClient.Repositories.Create(ctx, githubOrg, &github.Repository{Name: &repoName, DefaultBranch: &defaultBranch}) | ||
if err != nil { | ||
if !strings.Contains(err.Error(), "name already exists") { | ||
// TODO should we retry with new name, append a number to repoName like -1, -2 etc |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, I think that was actually also requested by Nishant
GithubUrl: ghURL, | ||
}) | ||
if err != nil { | ||
// TODO if project with same name exists - should we retry with new name, append a number to repoName like -1, -2 etc |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, same as comment above
// DEPRECATED: Use organization_installation_permissions instead. | ||
repeated string organizations = 5 [deprecated = true]; | ||
GithubPermission user_installation_permission = 6; | ||
map<string, GithubPermission> organization_installation_permissions = 7; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
// DEPRECATED: Use organization_installation_permissions instead. | |
repeated string organizations = 5 [deprecated = true]; | |
GithubPermission user_installation_permission = 6; | |
map<string, GithubPermission> organization_installation_permissions = 7; | |
GithubPermission user_installation_permission = 6; | |
map<string, GithubPermission> organization_installation_permissions = 7; | |
// DEPRECATED: Use organization_installation_permissions instead. | |
repeated string organizations = 5 [deprecated = true]; |
rill.admin.v1.GithubPermission github_app_user_permission = 6; // if unspecified then github app not installed on user account | ||
map<string, rill.admin.v1.GithubPermission> github_organization_installation_permissions = 7; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there a reason to use "app" in the first name and "installation" in the second? Otherwise, could consider making the names more similar, e.g. github_user_permissions
and github_organization_permissions
.
This PR adds 3 new APIs to support auto-deploy from UI.
DeployValidation
- It does basic validation and returns a response which can indicate further action to be taken by the clientis_authenticated
- If false then client should redirect to/auth
to get user signed in, other fields in the response should be ignored, after login the validation should be done again to get latest info. Aredirect
query can be set with url that the runtime should redirect to after loginis_github_connected
- User does have not rill git app installed, so redirect user togit_grant_access_url
which is the next field.git_grant_access_url
- git access urlgit_user_name
- git user name, also the default git org for the user.git_user_orgs
- git orgs that user is part of. Currently not used, we use the default org which is equivalent to git usernameis_git_repo
- is the rill project folder a git repo ? meaning does it have .git folder. If this is true, then in first version we should just ask to continue in cli.git_url
- first git remote of the git repo, only if is_git_repo is true.uncommited_changes
- if its already a git repo then are there any uncommitted changes that are not pushed to remote git. In first version this is not used as we only allow deploying from folder that are not git reporill_org_exists_as_git_user_name
- If a rill org already exists as the git_user_name, this is useful because if no orgs exists for user then we auto create an org with git_user_name, so if this is true then ask user for a new org name. This is applicable only for new user those who don’t have any org. For existing user see next option.rill_user_orgs
- User can choose a rill org to deploy to.local_project_name
- Folder name of local project from whererill start
is donePushToGit
- This is only used whenis_git_repo
is false and all other validation passes. This will create a git repo in the existing project folder from whererill start
is done, auto commit all changes and push the project to git org namedgit_user_name
in a project named the folder name of the local project.Deploy
- Should be done when all DeployValidation passes and it accepts two parametersrill_org
andrill_project_name
. We will ask user to enter these, can be auto populated as per DeployValidation response.