diff --git a/plugins/catalog-import/src/api/CatalogImportApi.ts b/plugins/catalog-import/src/api/CatalogImportApi.ts index 0ce569171f..414eacf128 100644 --- a/plugins/catalog-import/src/api/CatalogImportApi.ts +++ b/plugins/catalog-import/src/api/CatalogImportApi.ts @@ -16,6 +16,7 @@ import { createApiRef } from '@backstage/core'; import { PartialEntity } from '../util/types'; +import { GitHubIntegrationConfig } from '@backstage/integration' export const catalogImportApiRef = createApiRef({ id: 'plugin.catalog-import.service', @@ -27,6 +28,7 @@ export interface CatalogImportApi { owner: string; repo: string; fileContent: string; + githubIntegrationConfig: GitHubIntegrationConfig; }): Promise<{ link: string; location: string }>; createRepositoryLocation(options: { location: string }): Promise; generateEntityDefinitions(options: { diff --git a/plugins/catalog-import/src/api/CatalogImportClient.ts b/plugins/catalog-import/src/api/CatalogImportClient.ts index aaa110329e..57c6a8490a 100644 --- a/plugins/catalog-import/src/api/CatalogImportClient.ts +++ b/plugins/catalog-import/src/api/CatalogImportClient.ts @@ -19,6 +19,7 @@ import { DiscoveryApi, OAuthApi } from '@backstage/core'; import { CatalogImportApi } from './CatalogImportApi'; import { AnalyzeLocationResponse } from '@backstage/plugin-catalog-backend'; import { PartialEntity } from '../util/types'; +import { GitHubIntegrationConfig } from '@backstage/integration' export class CatalogImportClient implements CatalogImportApi { private readonly discoveryApi: DiscoveryApi; @@ -91,15 +92,18 @@ export class CatalogImportClient implements CatalogImportApi { owner, repo, fileContent, + githubIntegrationConfig, }: { owner: string; repo: string; fileContent: string; + githubIntegrationConfig: GitHubIntegrationConfig; }): Promise<{ link: string; location: string }> { const token = await this.githubAuthApi.getAccessToken(['repo']); const octo = new Octokit({ auth: token, + baseUrl: githubIntegrationConfig.apiBaseUrl, }); const branchName = 'backstage-integration'; @@ -179,7 +183,7 @@ export class CatalogImportClient implements CatalogImportApi { return { link: pullRequestResponse.data.html_url, - location: `https://github.com/${owner}/${repo}/blob/${repoData.data.default_branch}/${fileName}`, + location: `https://${githubIntegrationConfig.host}/${owner}/${repo}/blob/${repoData.data.default_branch}/${fileName}`, }; } } diff --git a/plugins/catalog-import/src/util/useGithubRepos.ts b/plugins/catalog-import/src/util/useGithubRepos.ts index a18edc2777..435d260f1b 100644 --- a/plugins/catalog-import/src/util/useGithubRepos.ts +++ b/plugins/catalog-import/src/util/useGithubRepos.ts @@ -15,15 +15,21 @@ */ import * as YAML from 'yaml'; -import { useApi } from '@backstage/core'; +import { useApi, configApiRef } from '@backstage/core'; import { catalogImportApiRef } from '../api/CatalogImportApi'; import { ConfigSpec } from '../components/ImportComponentPage'; +import { readGitHubIntegrationConfigs } from '@backstage/integration'; export function useGithubRepos() { const api = useApi(catalogImportApiRef); + const config = useApi(configApiRef); const submitPrToRepo = async (selectedRepo: ConfigSpec) => { const [ownerName, repoName] = selectedRepo.location.split('/').slice(-2); + const configs = readGitHubIntegrationConfigs( + config.getOptionalConfigArray('integrations.github') ?? [] + ) + const githubIntegrationConfig = configs[0] const submitPRResponse = await api .submitPrToRepo({ owner: ownerName, @@ -31,6 +37,7 @@ export function useGithubRepos() { fileContent: selectedRepo.config .map(entity => `---\n${YAML.stringify(entity)}`) .join('\n'), + githubIntegrationConfig }) .catch(e => { throw new Error(`Failed to submit PR to repo:\n${e.message}`);