如果指定'OutputType'而忽略此设置,GitVersion别名返回的对象是否正常是不正常的?
如果我指定输出类型,返回对象的属性都是'null',但是当我省略设置时,属性被设置为期望值
例如:
MajorMinorPatch: [NULL]
FullSemVer: [NULL]
InformationalVersion: [NULL]
LegacySemVer: [NULL]
Nuget v1 version: [NULL]
Nuget v2 version: [NULL]
输出结果为:
Task("Version")
.Does(() =>
{
var versionInfo = GitVersion(new GitVersionSettings()
{
UpdateAssemblyInfo = false
});
Information("MajorMinorPatch: {0}", versionInfo.MajorMinorPatch);
Information("FullSemVer: {0}", versionInfo.FullSemVer);
Information("InformationalVersion: {0}", versionInfo.InformationalVersion);
Information("LegacySemVer: {0}", versionInfo.LegacySemVer);
Information("Nuget v1 version: {0}", versionInfo.NuGetVersion);
Information("Nuget v2 version: {0}", versionInfo.NuGetVersionV2);
});
如果我这样改变我的任务:
MajorMinorPatch: 0.1.0
FullSemVer: 0.1.0+1
InformationalVersion: 0.1.0+1.Branch.master.Sha.5b2
LegacySemVer: 0.1.0
Nuget v1 version: 0.1.0
Nuget v2 version: 0.1.0
输出结果为:
UIAlertController
答案 0 :(得分:3)
这是“按设计”。
GitVersion的默认输出类型为JSON,这意味着包含所有断言版本号的JSON输出可供检查。此时,Cake收集此JSON输出,将它们合并到一个GitVersion
对象中,并将其返回给Cake脚本。
使用OutputType = GitVersionOutput.BuildServer
时,没有JSON输出。相反,GitVersion与运行它的Build Server一起工作,无论是TeamCity,AppVeyor还是其他,并通过其他机制使断言的版本号可用。即通过设置环境变量,或使用服务消息来告诉构建服务器。因此,没有什么可以使用Cake来创建GitVersion
对象以便返回。
解决这个问题的典型方法是首先使用OutputType = GitVersionOutput.BuildServer
运行GitVersion,然后立即再次运行它,并使用返回的变量。这实际上就是我们在自己的Cake脚本中所做的事情:
https://github.com/cake-build/cake/blob/develop/build/version.cake#L38
第二次运行它应该非常快,因为GitVersion实际上缓存了第一次运行的结果。实际上,我们可以在Cake中执行一些操作来读取此缓存的输出,并将其用作调用的输出。您是否可以将此问题提升为问题here,以便我们跟踪它?