diff --git a/source/tasks/CreateOctopusRelease/CreateOctopusReleaseV6/createRelease.ts b/source/tasks/CreateOctopusRelease/CreateOctopusReleaseV6/createRelease.ts index 47131ad3..c912ecd2 100644 --- a/source/tasks/CreateOctopusRelease/CreateOctopusReleaseV6/createRelease.ts +++ b/source/tasks/CreateOctopusRelease/CreateOctopusReleaseV6/createRelease.ts @@ -10,7 +10,11 @@ export async function createReleaseFromInputs(client: Client, command: CreateRel const repository = new ReleaseRepository(client, command.spaceName); const response = await repository.create(command); - client.info(`🎉 Release ${response.ReleaseVersion} created successfully!`); + if (command.IgnoreIfAlreadyExists) { + client.info(`🎉 Release ${response.ReleaseVersion} is ready for deployment!`); + } else { + client.info(`🎉 Release ${response.ReleaseVersion} created successfully!`); + } task.setOutputVariable("release_number", response.ReleaseVersion); diff --git a/source/tasks/CreateOctopusRelease/CreateOctopusReleaseV6/inputCommandBuilder.test.ts b/source/tasks/CreateOctopusRelease/CreateOctopusReleaseV6/inputCommandBuilder.test.ts index 3996f643..f1f97814 100644 --- a/source/tasks/CreateOctopusRelease/CreateOctopusReleaseV6/inputCommandBuilder.test.ts +++ b/source/tasks/CreateOctopusRelease/CreateOctopusReleaseV6/inputCommandBuilder.test.ts @@ -21,6 +21,7 @@ describe("getInputCommand", () => { task.addVariableString("DefaultPackageVersion", "1.0.1"); task.addVariableString("Packages", "Step1:Foo:1.0.0\nBar:2.0.0"); task.addVariableString("GitRef", "main"); + task.addVariableBoolean("IgnoreIfAlreadyExists", true); const command = createCommandFromInputs(logger, task); expect(command.spaceName).toBe("Default"); @@ -30,6 +31,7 @@ describe("getInputCommand", () => { expect(command.PackageVersion).toBe("1.0.1"); expect(command.Packages).toStrictEqual(["Step1:Foo:1.0.0", "Bar:2.0.0"]); expect(command.GitRef).toBe("main"); + expect(command.IgnoreIfAlreadyExists).toBe(true); expect(task.lastResult).toBeUndefined(); expect(task.lastResultMessage).toBeUndefined(); diff --git a/source/tasks/CreateOctopusRelease/CreateOctopusReleaseV6/inputCommandBuilder.ts b/source/tasks/CreateOctopusRelease/CreateOctopusReleaseV6/inputCommandBuilder.ts index 21444dbe..a6c82c3e 100644 --- a/source/tasks/CreateOctopusRelease/CreateOctopusReleaseV6/inputCommandBuilder.ts +++ b/source/tasks/CreateOctopusRelease/CreateOctopusReleaseV6/inputCommandBuilder.ts @@ -64,6 +64,7 @@ export function createCommandFromInputs(logger: Logger, task: TaskWrapper): Crea ReleaseNotes: task.getInput("ReleaseNotes"), GitRef: task.getInput("GitRef"), GitCommit: task.getInput("GitCommit"), + IgnoreIfAlreadyExists: task.getBoolean("IgnoreIfAlreadyExists") || undefined, }; const releaseNotesFilePath = task.getInput("ReleaseNotesFile"); diff --git a/source/tasks/CreateOctopusRelease/CreateOctopusReleaseV6/task.json b/source/tasks/CreateOctopusRelease/CreateOctopusReleaseV6/task.json index ace50e8d..312c8d72 100644 --- a/source/tasks/CreateOctopusRelease/CreateOctopusReleaseV6/task.json +++ b/source/tasks/CreateOctopusRelease/CreateOctopusReleaseV6/task.json @@ -120,6 +120,15 @@ "helpMarkDown": "Git commit to use when creating the release for version controlled Projects. Use in conjunction with the gitRef parameter to select any previous commit.", "groupName": "versionControl" }, + { + "name": "IgnoreIfAlreadyExists", + "type": "boolean", + "label": "Ignore Existing Release", + "defaultValue": "", + "required": false, + "helpMarkDown": "If enabled will not attempt to create a new release if there is already one with the same version number", + "groupName": "additional" + }, { "name": "AdditionalArguments", "type": "string",