diff --git a/.changeset/clever-eagles-boil.md b/.changeset/clever-eagles-boil.md new file mode 100644 index 0000000000..6e69d2db2f --- /dev/null +++ b/.changeset/clever-eagles-boil.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-adr': patch +--- + +Fixed Azure DevOps ADR file path diff --git a/plugins/adr-common/api-report.md b/plugins/adr-common/api-report.md index a36854f0e7..f12a086359 100644 --- a/plugins/adr-common/api-report.md +++ b/plugins/adr-common/api-report.md @@ -25,6 +25,7 @@ export const ANNOTATION_ADR_LOCATION = 'backstage.io/adr-location'; export const getAdrLocationUrl: ( entity: Entity, scmIntegration: ScmIntegrationRegistry, + adrFilePath?: String, ) => string; // @public diff --git a/plugins/adr-common/src/index.ts b/plugins/adr-common/src/index.ts index 97c82b2047..85d61cd270 100644 --- a/plugins/adr-common/src/index.ts +++ b/plugins/adr-common/src/index.ts @@ -57,13 +57,20 @@ export const isAdrAvailable = (entity: Entity) => export const getAdrLocationUrl = ( entity: Entity, scmIntegration: ScmIntegrationRegistry, + adrFilePath?: String, ) => { if (!isAdrAvailable(entity)) { throw new Error(`Missing ADR annotation: ${ANNOTATION_ADR_LOCATION}`); } + let url = getAdrLocationDir(entity)!.replace(/\/$/, ''); + + if (adrFilePath) { + url = `${url}/${adrFilePath}`; + } + return scmIntegration.resolveUrl({ - url: getAdrLocationDir(entity)!, + url, base: getEntitySourceLocation(entity).target, }); }; diff --git a/plugins/adr/src/components/AdrReader/AdrReader.tsx b/plugins/adr/src/components/AdrReader/AdrReader.tsx index 6b07eee4cd..d0dd8b7444 100644 --- a/plugins/adr/src/components/AdrReader/AdrReader.tsx +++ b/plugins/adr/src/components/AdrReader/AdrReader.tsx @@ -45,11 +45,11 @@ export const AdrReader = (props: { const scmIntegrations = useApi(scmIntegrationsApiRef); const adrApi = useApi(adrApiRef); const adrLocationUrl = getAdrLocationUrl(entity, scmIntegrations); + const adrFileLocationUrl = getAdrLocationUrl(entity, scmIntegrations, adr); - const url = `${adrLocationUrl.replace(/\/$/, '')}/${adr}`; const { value, loading, error } = useAsync( - async () => adrApi.readAdr(url), - [url], + async () => adrApi.readAdr(adrFileLocationUrl), + [adrFileLocationUrl], ); const adrContent = useMemo(() => {