Skip to content

Commit 5578e23

Browse files
jankeromnesroboquat
authored andcommitted
[server] Fix automated prebuilds for GitHub Enterprise repositories
1 parent 845e66c commit 5578e23

File tree

3 files changed

+13
-4
lines changed

3 files changed

+13
-4
lines changed

components/dashboard/src/projects/NewProject.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -623,13 +623,14 @@ function GitProviders(props: {
623623
setErrorMessage(undefined);
624624

625625
const token = await getGitpodService().server.getToken({ host: ap.host });
626-
if (token) {
626+
const isGitHubEnterprise = AuthProviderInfo.isGitHubEnterprise(ap);
627+
if (token && !(isGitHubEnterprise && !token.scopes.includes("repo"))) {
627628
props.onHostSelected(ap.host);
628629
return;
629630
}
630631
await openAuthorizeWindow({
631632
host: ap.host,
632-
scopes: ap.requirements?.default,
633+
scopes: isGitHubEnterprise ? ["repo"] : ap.requirements?.default,
633634
onSuccess: async () => {
634635
props.onHostSelected(ap.host, true);
635636
},

components/gitpod-protocol/src/protocol.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1143,6 +1143,12 @@ export interface AuthProviderInfo {
11431143
};
11441144
}
11451145

1146+
export namespace AuthProviderInfo {
1147+
export function isGitHubEnterprise(info?: AuthProviderInfo): boolean {
1148+
return !!info && info.authProviderType === "GitHub" && info.host !== "github.com";
1149+
}
1150+
}
1151+
11461152
export interface AuthProviderEntry {
11471153
readonly id: string;
11481154
readonly type: AuthProviderEntry.Type;

components/server/src/projects/projects-service.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import { inject, injectable } from "inversify";
88
import { DBWithTracing, ProjectDB, TeamDB, TracedWorkspaceDB, UserDB, WorkspaceDB } from "@gitpod/gitpod-db/lib";
99
import {
10+
AuthProviderInfo,
1011
Branch,
1112
PrebuildWithStatus,
1213
CreateProjectParams,
@@ -147,8 +148,9 @@ export class ProjectsService {
147148
let { userId, teamId, cloneUrl } = project;
148149
const parsedUrl = RepoURL.parseRepoUrl(project.cloneUrl);
149150
const hostContext = parsedUrl?.host ? this.hostContextProvider.get(parsedUrl?.host) : undefined;
150-
const type = hostContext && hostContext.authProvider.info.authProviderType;
151-
if (type === "GitLab" || type === "Bitbucket") {
151+
const authProvider = hostContext && hostContext.authProvider.info;
152+
const type = authProvider && authProvider.authProviderType;
153+
if (type === "GitLab" || type === "Bitbucket" || AuthProviderInfo.isGitHubEnterprise(authProvider)) {
152154
const repositoryService = hostContext?.services?.repositoryService;
153155
if (repositoryService) {
154156
// Note: For GitLab, we expect .canInstallAutomatedPrebuilds() to always return true, because earlier

0 commit comments

Comments
 (0)