TFS 2018 - 构建预发布包

时间:2018-06-12 14:06:31

标签: tfs tfs2018

我正在使用“TFS 2018 Update 2”并尝试根据microsoft semantic

构建标记为预发布的包

我尝试使用 .nuspec文件插入(例如:1.0.0-beta并将内部版本号格式更改为:$(BuildDefinitionName)_ $(年份) :YYYY)$(月)$(DAYOFMONTH)$(版本号:。.R)$(后缀) 在队列时设置$(后缀)变量。

每次尝试都失败了:包从不包含后缀,而是从未标记为预发布。 我看到nuget pack命令从不包含后缀(在“2018.6.12.9”之后缺少“-beta”)。在我的测试版中, $后缀设置为“-beta”

  

nuget.exe包   C:\ agent_work \ 4 \ S \ DotNetClassicLibrary \ DotNetClassicLibrary.csproj   -NonInteractive -OutputDirectory C:\ agent_work \ 4 \ a -Properties Configuration = debug -version 2018.6.12.9 -Verbosity Detailed

TFS上的构建任务是:

  

“DotNetClassicLibrary / Build DotNetClassicLibrary_2018.6.12.9-beta /   Job / NuGet包“

所以我确定该变量已分配,因为路径中存在后缀“ - beta”

这里有nuget pack任务的配置

Nuget Pack

这是内部版本号格式

enter image description here

1 个答案:

答案 0 :(得分:1)

我可以在我身边重现你的情景。在我看来,带有内部版本号的Nuget pack任务不支持字符或数字。您可以查看this task并尝试修改它。

case "byBuildNumber":
                tl.debug("Getting version number from build number")

                if(tl.getVariable("SYSTEM_HOSTTYPE") === "release")
                {
                    tl.setResult(tl.TaskResult.Failed, tl.loc("Error_AutomaticallyVersionReleases"));
                    return;
                }

                let buildNumber: string =  tl.getVariable("BUILD_BUILDNUMBER");
                tl.debug(`Build number: ${buildNumber}`);

                let versionRegex = /\d+\.\d+\.\d+(?:\.\d+)?/;
                let versionMatches = buildNumber.match(versionRegex);
                if (!versionMatches)
                {
                    tl.setResult(tl.TaskResult.Failed, tl.loc("Error_NoVersionFoundInBuildNumber"));
                    return;
                }

                if (versionMatches.length > 1)
                {
                    tl.warning(tl.loc("Warning_MoreThanOneVersionInBuildNumber"))
                }

                version = versionMatches[0];
                break;
  

作为替代方案,您可以选择Nuget custom,并指定   使用参数-version $(Build.BuildNumber)打包命令,   我试过了,这很有效。