From 83ae3306fde2c14dcf256f8ce66d01130ec8fe81 Mon Sep 17 00:00:00 2001 From: Bogdan Nechyporenko Date: Fri, 14 Mar 2025 21:12:26 +0100 Subject: [PATCH] Made "gitlab:group:migrate" action idempotent Signed-off-by: Bogdan Nechyporenko --- .changeset/tiny-ads-nail.md | 5 +++++ .../src/actions/gitlabProjectMigrate.ts | 14 ++++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) create mode 100644 .changeset/tiny-ads-nail.md 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',