Cake: Error on build on master branch with version 0.22.0

Created on 13 Sep 2017  ·  7Comments  ·  Source: cake-build/cake

What You Are Seeing?

With the new version 0.22.0 the builds on master branch (with GitVersion) fails:

GitVersion uses the following definition:

mode: ContinuousDelivery

branches:
  master: {}
  release[/-]:
    tag: rc
  hotfix(es)?[/-]:
    increment: Patch
    tag: fix
  dev(elop)?(ment)?$:
    tag: beta
  feature[/-]:
    tag: alpha
  \d+\-.+:
    tag: alpha
ignore:
  sha: []

The folder order was changed from:

  • tools

    • ToolName



      • Unpacked nuget content



To:

  • tools

    • toolname (lowercase)



      • ToolName





        • Unpacked nuget content






What is Expected?

The ""-values treated as "0" for integer fields.

What version of Cake are you using?

0.22.0

Are you running on a 32 or 64 bit system?

x64

What environment are you running on? Windows? Linux? Mac?

Windows 10

Are you running on a CI Server? If so, which one?

Error occured both on local machine and GitLab CI.

How Did You Get This To Happen? (Steps to Reproduce)

I think the MR for issue #1597 produce this error.

Output Log

Compiling build script...
Executing: "C:/src/git/RSAG.Mail/tools/gitversion.commandline/GitVersion.CommandLine/tools/GitVersion.exe"
{
  "Major":0,
  "Minor":1,
  "Patch":1,
  "PreReleaseTag":"",
  "PreReleaseTagWithDash":"",
  "PreReleaseLabel":"",
  "PreReleaseNumber":"",
  "BuildMetaData":"",
  "BuildMetaDataPadded":"",
  "FullBuildMetaData":"Branch.master.Sha.f2467748c78b3c8b37972ad0b30df2e15dfbf2cb",
  "MajorMinorPatch":"0.1.1",
  "SemVer":"0.1.1",
  "LegacySemVer":"0.1.1",
  "LegacySemVerPadded":"0.1.1",
  "AssemblySemVer":"0.1.1.0",
  "FullSemVer":"0.1.1",
  "InformationalVersion":"0.1.1+Branch.master.Sha.f2467748c78b3c8b37972ad0b30df2e15dfbf2cb",
  "BranchName":"master",
  "Sha":"f2467748c78b3c8b37972ad0b30df2e15dfbf2cb",
  "NuGetVersionV2":"0.1.1",
  "NuGetVersion":"0.1.1",
  "CommitsSinceVersionSource":2,
  "CommitsSinceVersionSourcePadded":"0002",
  "CommitDate":"2017-09-13"
}
Error: System.AggregateException: Mindestens ein Fehler ist aufgetreten. ---> System.Runtime.Serialization.SerializationException: Fehler beim Deserialisieren des Objekts "vom Typ Cake.Common.Tools.GitVersion.Gi
tVersion". Der Wert "" kann nicht als Typ "Int32" analysiert werden. ---> System.Xml.XmlException: Der Wert "" kann nicht als Typ "Int32" analysiert werden. ---> System.FormatException: Die Eingabezeichenfolge h
at das falsche Format.
   bei System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
   bei System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
   bei System.Runtime.Serialization.Json.XmlJsonReader.ParseInt(String value, NumberStyles style)
   --- Ende der internen Ausnahmestapelüberwachung ---
   bei System.Runtime.Serialization.Json.XmlJsonReader.ParseInt(String value, NumberStyles style)
   bei System.Xml.XmlDictionaryReader.ReadElementContentAsInt()
   bei ReadGitVersionFromJson(XmlReaderDelegator , XmlObjectSerializerReadContextComplexJson , XmlDictionaryString , XmlDictionaryString[] )
   bei System.Runtime.Serialization.Json.JsonClassDataContract.ReadJsonValueCore(XmlReaderDelegator jsonReader, XmlObjectSerializerReadContextComplexJson context)
   bei System.Runtime.Serialization.Json.JsonDataContract.ReadJsonValue(XmlReaderDelegator jsonReader, XmlObjectSerializerReadContextComplexJson context)
   bei System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson.ReadDataContractValue(DataContract dataContract, XmlReaderDelegator reader)
   bei System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, Type declaredType, DataContract& dataContract)
   bei System.Runtime.Serialization.XmlObjectSerializerReadContextComplex.InternalDeserialize(XmlReaderDelegator xmlReader, Type declaredType, DataContract dataContract, String name, String ns)
   bei System.Runtime.Serialization.Json.DataContractJsonSerializer.InternalReadObject(XmlReaderDelegator xmlReader, Boolean verifyObjectName)
   bei System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver)
   --- Ende der internen Ausnahmestapelüberwachung ---
   bei System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver)
   bei System.Runtime.Serialization.Json.DataContractJsonSerializer.ReadObject(XmlDictionaryReader reader)
   bei Cake.Common.Tools.GitVersion.GitVersionRunner.Run(GitVersionSettings settings)
   bei Submission#0.GitVersion()
   bei Submission#0.<<Initialize>>d__0.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei Microsoft.CodeAnalysis.Scripting.ScriptExecutionState.<RunSubmissionsAsync>d__9`1.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei Microsoft.CodeAnalysis.Scripting.Script`1.<RunSubmissionsAsync>d__21.MoveNext()
   --- Ende der internen Ausnahmestapelüberwachung ---
   bei System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   bei System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
   bei Cake.Scripting.Roslyn.RoslynScriptSession.Execute(Script script)
   bei Cake.Core.Scripting.ScriptRunner.Run(IScriptHost host, FilePath scriptPath, IDictionary`2 arguments)
   bei Cake.Commands.BuildCommand.Execute(CakeOptions options)
   bei Cake.CakeApplication.Run(CakeOptions options)
   bei Cake.Program.Main()
---> (Interne Ausnahme #0) System.Runtime.Serialization.SerializationException: Fehler beim Deserialisieren des Objekts "vom Typ Cake.Common.Tools.GitVersion.GitVersion". Der Wert "" kann nicht als Typ "Int32" a
nalysiert werden. ---> System.Xml.XmlException: Der Wert "" kann nicht als Typ "Int32" analysiert werden. ---> System.FormatException: Die Eingabezeichenfolge hat das falsche Format.
   bei System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
   bei System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
   bei System.Runtime.Serialization.Json.XmlJsonReader.ParseInt(String value, NumberStyles style)
   --- Ende der internen Ausnahmestapelüberwachung ---
   bei System.Runtime.Serialization.Json.XmlJsonReader.ParseInt(String value, NumberStyles style)
   bei System.Xml.XmlDictionaryReader.ReadElementContentAsInt()
   bei ReadGitVersionFromJson(XmlReaderDelegator , XmlObjectSerializerReadContextComplexJson , XmlDictionaryString , XmlDictionaryString[] )
   bei System.Runtime.Serialization.Json.JsonClassDataContract.ReadJsonValueCore(XmlReaderDelegator jsonReader, XmlObjectSerializerReadContextComplexJson context)
   bei System.Runtime.Serialization.Json.JsonDataContract.ReadJsonValue(XmlReaderDelegator jsonReader, XmlObjectSerializerReadContextComplexJson context)
   bei System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson.ReadDataContractValue(DataContract dataContract, XmlReaderDelegator reader)
   bei System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, Type declaredType, DataContract& dataContract)
   bei System.Runtime.Serialization.XmlObjectSerializerReadContextComplex.InternalDeserialize(XmlReaderDelegator xmlReader, Type declaredType, DataContract dataContract, String name, String ns)
   bei System.Runtime.Serialization.Json.DataContractJsonSerializer.InternalReadObject(XmlReaderDelegator xmlReader, Boolean verifyObjectName)
   bei System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver)
   --- Ende der internen Ausnahmestapelüberwachung ---
   bei System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver)
   bei System.Runtime.Serialization.Json.DataContractJsonSerializer.ReadObject(XmlDictionaryReader reader)
   bei Cake.Common.Tools.GitVersion.GitVersionRunner.Run(GitVersionSettings settings)
   bei Submission#0.GitVersion()
   bei Submission#0.<<Initialize>>d__0.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei Microsoft.CodeAnalysis.Scripting.ScriptExecutionState.<RunSubmissionsAsync>d__9`1.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei Microsoft.CodeAnalysis.Scripting.Script`1.<RunSubmissionsAsync>d__21.MoveNext()<---
Bug

All 7 comments

I'm seeing the exact same issue on Cake.DoInDirectory latest build

it could be an issue on GitVersion itself
maybe here

Submited a PR on GitVersion

To be able to sort older versions of GitVersion, I will submit an fix to Cake for this. Do feel the source issue is with in the GitVersion custom json serializer, but this is ultimately a regression in Cake we think is worth a hotfix.

@devlead I run into the same issue while updating Cake.SqlServer to use v0.22.0. Any workaround available I can use in the mean time?

@trailmax I added tools/packages.config into source control, and set its contents to:

<?xml version="1.0" encoding="utf-8"?>
<packages>
    <package id="Cake" version="0.21.1" />
</packages>

fixed by #1802

Was this page helpful?
0 / 5 - 0 ratings