Made "gitlab:projectAccessToken:create" action idempotent

Signed-off-by: Bogdan Nechyporenko <bnechyporenko@bol.com>
This commit is contained in:
Bogdan Nechyporenko
2025-03-14 21:02:11 +01:00
parent 85df833fe3
commit 1cea434c48
2 changed files with 21 additions and 10 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-scaffolder-backend-module-gitlab': patch
---
Made "gitlab:projectAccessToken:create" action idempotent
@@ -104,21 +104,27 @@ export const createGitlabProjectAccessTokenAction = (options: {
});
}
const response = await api.ProjectAccessTokens.create(
projectId,
name,
scopes as AccessTokenScopes[],
expiresAt || DateTime.now().plus({ days: 365 }).toISODate()!,
{
accessLevel,
const projectAccessToken = await ctx.checkpoint({
key: `project.access.token.${projectId}.${name}`,
fn: async () => {
const response = await api.ProjectAccessTokens.create(
projectId,
name,
scopes as AccessTokenScopes[],
expiresAt || DateTime.now().plus({ days: 365 }).toISODate()!,
{
accessLevel,
},
);
return response.token;
},
);
});
if (!response.token) {
if (!projectAccessToken) {
throw new Error('Could not create project access token');
}
ctx.output('access_token', response.token);
ctx.output('access_token', projectAccessToken);
},
});
};