diff --git a/.changeset/tiny-ads-nail.md b/.changeset/tiny-ads-nail.md new file mode 100644 index 0000000000..1490032eb6 --- /dev/null +++ b/.changeset/tiny-ads-nail.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend-module-gitlab': patch +--- + +Made "gitlab:group:migrate" action idempotent diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectMigrate.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectMigrate.ts index 8f6e3ed2cc..b248210c76 100644 --- a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectMigrate.ts +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabProjectMigrate.ts @@ -139,10 +139,16 @@ export const createGitlabProjectMigrateAction = (options: { }; try { - const { id: migrationId } = await api.Migrations.create( - sourceConfig, - migrationEntity, - ); + const migrationId = await ctx.checkpoint({ + key: `create.migration.${sourceUrl}`, + fn: async () => { + const migrationStatus = await api.Migrations.create( + sourceConfig, + migrationEntity, + ); + return migrationStatus.id; + }, + }); ctx.output( 'importedRepoUrl',