diff --git a/.changeset/silent-insects-invent.md b/.changeset/silent-insects-invent.md new file mode 100644 index 0000000000..6c0dd358d7 --- /dev/null +++ b/.changeset/silent-insects-invent.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-gitlab': patch +--- + +Add GitLab `visibility` to group entity annotations. diff --git a/plugins/catalog-backend-module-gitlab/api-report.md b/plugins/catalog-backend-module-gitlab/api-report.md index bb52d8908a..6c26e28604 100644 --- a/plugins/catalog-backend-module-gitlab/api-report.md +++ b/plugins/catalog-backend-module-gitlab/api-report.md @@ -63,6 +63,7 @@ export type GitLabGroup = { name: string; full_path: string; description?: string; + visibility?: string; parent_id?: number; }; diff --git a/plugins/catalog-backend-module-gitlab/src/lib/client.ts b/plugins/catalog-backend-module-gitlab/src/lib/client.ts index 65c3898d06..d69c99c777 100644 --- a/plugins/catalog-backend-module-gitlab/src/lib/client.ts +++ b/plugins/catalog-backend-module-gitlab/src/lib/client.ts @@ -136,6 +136,7 @@ export class GitLabClient { name description fullPath + visibility parent { id } @@ -170,6 +171,7 @@ export class GitLabClient { name: groupItem.name, description: groupItem.description, full_path: groupItem.fullPath, + visibility: groupItem.visibility, parent_id: Number( groupItem.parent.id.replace(/^gid:\/\/gitlab\/Group\//, ''), ), diff --git a/plugins/catalog-backend-module-gitlab/src/lib/defaultTransformers.ts b/plugins/catalog-backend-module-gitlab/src/lib/defaultTransformers.ts index d7a6bf76e9..912e5a0502 100644 --- a/plugins/catalog-backend-module-gitlab/src/lib/defaultTransformers.ts +++ b/plugins/catalog-backend-module-gitlab/src/lib/defaultTransformers.ts @@ -49,6 +49,10 @@ export function defaultGroupEntitiesTransformer( const annotations: { [annotationName: string]: string } = {}; annotations[`${options.providerConfig.host}/team-path`] = group.full_path; + if (group.visibility !== undefined) { + annotations[`${options.providerConfig.host}/visibility`] = + group.visibility; + } const entity: GroupEntity = { apiVersion: 'backstage.io/v1alpha1', diff --git a/plugins/catalog-backend-module-gitlab/src/lib/types.ts b/plugins/catalog-backend-module-gitlab/src/lib/types.ts index 25c9a4a232..123515ccf3 100644 --- a/plugins/catalog-backend-module-gitlab/src/lib/types.ts +++ b/plugins/catalog-backend-module-gitlab/src/lib/types.ts @@ -76,6 +76,7 @@ export type GitLabGroup = { name: string; full_path: string; description?: string; + visibility?: string; parent_id?: number; }; @@ -115,6 +116,7 @@ export type GitLabDescendantGroupsResponse = { name: string; description: string; fullPath: string; + visibility: string; parent: { id: string; }; diff --git a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.test.ts b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.test.ts index 669abc69b6..8dffdf1d7b 100644 --- a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.test.ts +++ b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.test.ts @@ -452,6 +452,7 @@ describe('GitlabOrgDiscoveryEntityProvider', () => { 'backstage.io/managed-by-origin-location': 'url:https://test-gitlab/group1/group2', 'test-gitlab/team-path': 'group1/group2', + 'test-gitlab/visibility': 'internal', }, description: 'Group2', name: 'group1-group2', @@ -525,6 +526,7 @@ describe('GitlabOrgDiscoveryEntityProvider', () => { name: 'group2', description: 'Group2', fullPath: 'group1/group2', + visibility: 'private', parent: { id: 'gid://gitlab/Group/123', }, @@ -534,6 +536,7 @@ describe('GitlabOrgDiscoveryEntityProvider', () => { name: 'group3', description: 'Group3', fullPath: 'group1/group3', + visibility: 'public', parent: { id: 'gid://gitlab/Group/123', }, @@ -703,6 +706,7 @@ describe('GitlabOrgDiscoveryEntityProvider', () => { 'backstage.io/managed-by-origin-location': 'url:https://gitlab.com/group1/group2', 'gitlab.com/team-path': 'group1/group2', + 'gitlab.com/visibility': 'private', }, description: 'Group2', name: 'group2', @@ -728,6 +732,7 @@ describe('GitlabOrgDiscoveryEntityProvider', () => { 'backstage.io/managed-by-origin-location': 'url:https://gitlab.com/group1/group3', 'gitlab.com/team-path': 'group1/group3', + 'gitlab.com/visibility': 'public', }, description: 'Group3', name: 'group3',