从 GitVersion 返回的对象不一致
Object returned from GitVersion not consistent
如果指定 'OutputType' 与省略此设置,GitVersion 别名返回的对象不同是否正常?
如果我指定输出类型,返回对象的属性都是'null'但是当我省略设置时,属性设置为期望值
例如:
Task("Version")
.Does(() =>
{
var versionInfo = GitVersion(new GitVersionSettings()
{
UpdateAssemblyInfo = true,
OutputType = GitVersionOutput.BuildServer
});
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: [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
这是"by-design"。
GitVersion 的默认输出类型为 JSON,这意味着包含所有断言版本号的 JSON 输出可供检查。此时,Cake 收集这个 JSON 输出,将它们组合成一个 GitVersion
对象,然后 returns 到 Cake 脚本。
当您使用 OutputType = GitVersionOutput.BuildServer
时,没有 JSON 输出。相反,GitVersion 与它 运行 正在运行的构建服务器一起工作,无论是 TeamCity、AppVeyor 还是其他任何东西,并通过另一种机制使断言的版本号可用。即通过设置环境变量,或使用服务消息将此告知构建服务器。因此,Cake 没有真正需要消耗的东西来创建 GitVersion
返回的对象。
解决这个问题的典型方法是首先 运行 GitVersion 和 OutputType = GitVersionOutput.BuildServer
然后立即再次 运行 它,并使用返回的变量。这实际上是我们在自己的 Cake 脚本中所做的:
https://github.com/cake-build/cake/blob/develop/build/version.cake#L38
运行 这第二次实际上应该非常快,因为 GitVersion 实际上缓存了第一次 运行 的结果。我们实际上可以在 Cake 中做一些事情来读取这个缓存的输出,并将其用作调用的输出。您能否将此作为问题提出来 here 以便我们跟踪它?
如果指定 'OutputType' 与省略此设置,GitVersion 别名返回的对象不同是否正常?
如果我指定输出类型,返回对象的属性都是'null'但是当我省略设置时,属性设置为期望值
例如:
Task("Version")
.Does(() =>
{
var versionInfo = GitVersion(new GitVersionSettings()
{
UpdateAssemblyInfo = true,
OutputType = GitVersionOutput.BuildServer
});
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: [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
这是"by-design"。
GitVersion 的默认输出类型为 JSON,这意味着包含所有断言版本号的 JSON 输出可供检查。此时,Cake 收集这个 JSON 输出,将它们组合成一个 GitVersion
对象,然后 returns 到 Cake 脚本。
当您使用 OutputType = GitVersionOutput.BuildServer
时,没有 JSON 输出。相反,GitVersion 与它 运行 正在运行的构建服务器一起工作,无论是 TeamCity、AppVeyor 还是其他任何东西,并通过另一种机制使断言的版本号可用。即通过设置环境变量,或使用服务消息将此告知构建服务器。因此,Cake 没有真正需要消耗的东西来创建 GitVersion
返回的对象。
解决这个问题的典型方法是首先 运行 GitVersion 和 OutputType = GitVersionOutput.BuildServer
然后立即再次 运行 它,并使用返回的变量。这实际上是我们在自己的 Cake 脚本中所做的:
https://github.com/cake-build/cake/blob/develop/build/version.cake#L38
运行 这第二次实际上应该非常快,因为 GitVersion 实际上缓存了第一次 运行 的结果。我们实际上可以在 Cake 中做一些事情来读取这个缓存的输出,并将其用作调用的输出。您能否将此作为问题提出来 here 以便我们跟踪它?