Better handling for GitVersion failure cases #2730
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
GitVersion was failing for our builds this week, but the reason was a mystery until we were able to dig into the GitVersion log file on a failed build. What made this really difficult is the actual error was masked by the GitVersionRunner.
The error according to Cake was
Expecting state 'Element'.. Encountered 'Text' with name '', namespace ''.
This is accurate because theDataContactJsonSerializer
is failing to deserialise what is actually an error message fromgitversion.exe
. However, it is ultimately misleading since the actual error message is masked by this exception.We changed our process to call GitVersion twice:
OutputType = GitVersionOutput.BuildServer
so it logs to stdout, including any error messagesOutputType = GitVersionOutput.Json
to get the deserialised version informationThis PR proposes a similar approach, but within the GitVersionRunner itself so others fall into the pit of success. It appears the intent of the code was to run GitVersion twice, but the deserialization exception prevents the intended behaviour.
Hope this helps!