diff --git a/Tasks/DotNetCoreCLIV2/packcommand.ts b/Tasks/DotNetCoreCLIV2/packcommand.ts index 10d35b037873..4c0c201b5def 100644 --- a/Tasks/DotNetCoreCLIV2/packcommand.ts +++ b/Tasks/DotNetCoreCLIV2/packcommand.ts @@ -74,6 +74,22 @@ export async function run(): Promise { version = versionMatches[0]; break; + + case "bySemVerBuildNumber": + tl.debug("Getting version number using SemVer build number"); + + let semVerBuildNumber: string = tl.getVariable("BUILD_BUILDNUMBER"); + tl.debug(`Build number: ${semVerBuildNumber}`); + + // Validate full SemVer 2.0 format + let semVerRegex = /^\d+\.\d+\.\d+(?:\.\d+)?(?:[-\w\.]+)?(?:\+[0-9A-Za-z\-\.]+)?$/; + if (!semVerRegex.test(semVerBuildNumber)) { + tl.setResult(tl.TaskResult.Failed, tl.loc("Error_InvalidSemVer")); + return; + } + version = semVerBuildNumber; + break; + } tl.debug(`Version to use: ${version}`); diff --git a/Tasks/DotNetCoreCLIV2/task.json b/Tasks/DotNetCoreCLIV2/task.json index 63979cd75fa6..305ff58ce238 100644 --- a/Tasks/DotNetCoreCLIV2/task.json +++ b/Tasks/DotNetCoreCLIV2/task.json @@ -18,7 +18,7 @@ "version": { "Major": 2, "Minor": 266, - "Patch": 0 + "Patch": 1 }, "minimumAgentVersion": "2.144.0", "instanceNameFormat": "dotnet $(command)", @@ -419,7 +419,8 @@ "off": "Off", "byPrereleaseNumber": "Use the date and time", "byEnvVar": "Use an environment variable", - "byBuildNumber": "Use the build number" + "byBuildNumber": "Use the build number", + "bySemVerBuildNumber": "Use full SemVer build number" } }, { @@ -602,6 +603,7 @@ "DeprecatedDotnet2_2_And_3_0": "Info: .NET Core SDK/runtime 2.2 and 3.0 are now End of Life(EOL) and have been removed from all hosted agents. If you're using these SDK/runtimes on hosted agents, kindly upgrade to newer versions which are not EOL, or else use UseDotNet task to install the required version.", "Warning_IncludeNuGetOrgEnabled": "IncludeNugetOrg is currently enabled for this task. To resolve this warning, edit your build task and set 'includeNuGetOrg' to 'false' or deselect 'Use packages from NuGet.org'.", "Error_IncludeNuGetOrgEnabled": "Packages failed to restore. Edit your build task and set 'includeNuGetOrg' to 'false' or deselect 'Use packages from NuGet.org'.", - "Warning_UnsupportedServiceConnectionAuth": "The service connection does not use a supported authentication method. Please use a service connection with personal access token based auth." + "Warning_UnsupportedServiceConnectionAuth": "The service connection does not use a supported authentication method. Please use a service connection with personal access token based auth.", + "Error_InvalidSemVer": "Build number is not a valid SemVer 2.0 string." } } diff --git a/Tasks/DotNetCoreCLIV2/task.loc.json b/Tasks/DotNetCoreCLIV2/task.loc.json index 46536f1d261d..56b0a5e887d9 100644 --- a/Tasks/DotNetCoreCLIV2/task.loc.json +++ b/Tasks/DotNetCoreCLIV2/task.loc.json @@ -18,7 +18,7 @@ "version": { "Major": 2, "Minor": 266, - "Patch": 0 + "Patch": 1 }, "minimumAgentVersion": "2.144.0", "instanceNameFormat": "ms-resource:loc.instanceNameFormat", @@ -419,7 +419,8 @@ "off": "Off", "byPrereleaseNumber": "Use the date and time", "byEnvVar": "Use an environment variable", - "byBuildNumber": "Use the build number" + "byBuildNumber": "Use the build number", + "bySemVerBuildNumber": "Use full SemVer build number" } }, {