Made "gitlab:projectDeployToken:create" action idempotent

Signed-off-by: Bogdan Nechyporenko <bnechyporenko@bol.com>
This commit is contained in:
Bogdan Nechyporenko
2025-03-14 21:08:15 +01:00
parent 85df833fe3
commit f6b51a8388
2 changed files with 28 additions and 13 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-scaffolder-backend-module-gitlab': patch
---
Made "gitlab:projectDeployToken:create" action idempotent
@@ -70,21 +70,31 @@ export const createGitlabProjectDeployTokenAction = (options: {
token: token,
});
const deployToken = await api.DeployTokens.create(
name,
scopes as DeployTokenScope[],
{
projectId,
username,
const { deployToken, deployUsername } = await ctx.checkpoint({
key: `create.deploy.token.${projectId}.${name}`,
fn: async () => {
const res = await api.DeployTokens.create(
name,
scopes as DeployTokenScope[],
{
projectId,
username,
},
);
if (!res.hasOwnProperty('token')) {
throw new InputError(`No deploy_token given from gitlab instance`);
}
return {
deployToken: res.token as string,
deployUsername: res.username,
};
},
);
});
if (!deployToken.hasOwnProperty('token')) {
throw new InputError(`No deploy_token given from gitlab instance`);
}
ctx.output('deploy_token', deployToken.token as string);
ctx.output('user', deployToken.username);
ctx.output('deploy_token', deployToken);
ctx.output('user', deployUsername);
},
});
};