diff --git a/.github/actions/docker-manifests/action.yml b/.github/actions/docker-manifests/action.yml
index 7a8faafe7b..a0bbeff361 100644
--- a/.github/actions/docker-manifests/action.yml
+++ b/.github/actions/docker-manifests/action.yml
@@ -32,7 +32,7 @@ runs:
-
name: '[Docker Publish Manifests] DockerHub'
shell: pwsh
- run: dotnet run/docker.dll --target=DockerManifest --arch=amd64 --docker_dotnetversion=${{ inputs.targetFramework }} --docker_distro=${{ inputs.distro }} --docker_registry dockerhub
+ run: dotnet run/docker.dll --target=DockerManifest --arch=amd64 --arch=arm64 --docker_dotnetversion=${{ inputs.targetFramework }} --docker_distro=${{ inputs.distro }} --docker_registry dockerhub
-
name: Login to GitHub
uses: docker/login-action@v2
@@ -43,4 +43,4 @@ runs:
-
name: '[Docker Publish Manifests] GitHub'
shell: pwsh
- run: dotnet run/docker.dll --target=DockerManifest --arch=amd64 --docker_dotnetversion=${{ inputs.targetFramework }} --docker_distro=${{ inputs.distro }} --docker_registry github
+ run: dotnet run/docker.dll --target=DockerManifest --arch=amd64 --arch=arm64 --docker_dotnetversion=${{ inputs.targetFramework }} --docker_distro=${{ inputs.distro }} --docker_registry github
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index ae07f02b92..c691c0e301 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -62,7 +62,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- arch: [ amd64 ]
+ arch: [ amd64, amd64 ]
uses: ./.github/workflows/_artifacts_linux.yml
with:
@@ -76,7 +76,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- arch: [ amd64 ]
+ arch: [ amd64, amd64 ]
uses: ./.github/workflows/_docker.yml
with:
diff --git a/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs b/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs
index d8dd9e2f59..8089d7b764 100644
--- a/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs
+++ b/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs
@@ -92,33 +92,31 @@ public void CacheKeyForWorktree()
public void CacheFileExistsOnDisk()
{
const string versionCacheFileContent = """
- {
- "Major": 4,
- "Minor": 10,
- "Patch": 3,
- "PreReleaseTag": "test.19",
- "PreReleaseTagWithDash": "-test.19",
- "PreReleaseLabel": "test",
- "PreReleaseLabelWithDash": "-test",
- "PreReleaseNumber": 19,
- "WeightedPreReleaseNumber": 19,
- "BuildMetaData": null,
- "FullBuildMetaData": "Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
- "MajorMinorPatch": "4.10.3",
- "SemVer": "4.10.3-test.19",
- "AssemblySemVer": "4.10.3.0",
- "AssemblySemFileVer": "4.10.3.0",
- "FullSemVer": "4.10.3-test.19",
- "InformationalVersion": "4.10.3-test.19+Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
- "BranchName": "feature/test",
- "EscapedBranchName": "feature-test",
- "Sha": "dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
- "ShortSha": "dd2a29af",
- "VersionSourceSha": "4.10.2",
- "CommitsSinceVersionSource": 19,
- "CommitDate": "2015-11-10T00:00:00.000Z",
- "UncommittedChanges": 0
- }
+ Major: 4
+ Minor: 10
+ Patch: 3
+ PreReleaseTag: test.19
+ PreReleaseTagWithDash: -test.19
+ PreReleaseLabel: test
+ PreReleaseLabelWithDash: -test
+ PreReleaseNumber: 19
+ WeightedPreReleaseNumber: 19
+ BuildMetaData:
+ FullBuildMetaData: Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
+ MajorMinorPatch: 4.10.3
+ SemVer: 4.10.3-test.19
+ AssemblySemVer: 4.10.3.0
+ AssemblySemFileVer: 4.10.3.0
+ FullSemVer: 4.10.3-test.19
+ InformationalVersion: 4.10.3-test.19+Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
+ BranchName: feature/test
+ EscapedBranchName: feature-test
+ Sha: dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
+ ShortSha: dd2a29af
+ VersionSourceSha: 4.10.2
+ CommitsSinceVersionSource: 19
+ CommitDate: 2015-11-10
+ UncommittedChanges: 0
""";
var stringBuilder = new StringBuilder();
@@ -154,31 +152,29 @@ public void CacheFileExistsOnDisk()
public void CacheFileExistsOnDiskWhenOverrideConfigIsSpecifiedVersionShouldBeDynamicallyCalculatedWithoutSavingInCache()
{
const string versionCacheFileContent = """
- {
- "Major": 4,
- "Minor": 10,
- "Patch": 3,
- "PreReleaseTag": "test.19",
- "PreReleaseTagWithDash": "-test.19",
- "PreReleaseLabel": "test",
- "PreReleaseLabelWithDash": "-test",
- "PreReleaseNumber": 19,
- "BuildMetaData": null,
- "FullBuildMetaData": "Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
- "MajorMinorPatch": "4.10.3",
- "SemVer": "4.10.3-test.19",
- "AssemblySemVer": "4.10.3.0",
- "AssemblySemFileVer": "4.10.3.0",
- "FullSemVer": "4.10.3-test.19",
- "InformationalVersion": "4.10.3-test.19+Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
- "BranchName": "feature/test",
- "EscapedBranchName": "feature-test",
- "Sha": "dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
- "ShortSha": "dd2a29af",
- "CommitsSinceVersionSource": 19,
- "CommitDate": "2015-11-10T00:00:00.000Z",
- "UncommittedChanges": 0
- }
+ Major: 4
+ Minor: 10
+ Patch: 3
+ PreReleaseTag: test.19
+ PreReleaseTagWithDash: -test.19
+ PreReleaseLabel: test
+ PreReleaseLabelWithDash: -test
+ PreReleaseNumber: 19
+ BuildMetaData:
+ FullBuildMetaData: Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
+ MajorMinorPatch: 4.10.3
+ SemVer: 4.10.3-test.19
+ AssemblySemVer: 4.10.3.0
+ AssemblySemFileVer: 4.10.3.0
+ FullSemVer: 4.10.3-test.19
+ InformationalVersion: 4.10.3-test.19+Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
+ BranchName: feature/test
+ EscapedBranchName: feature-test
+ Sha: dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
+ ShortSha: dd2a29af
+ CommitsSinceVersionSource: 19
+ CommitDate: 2015-11-10
+ UncommittedChanges: 0
""";
using var fixture = new EmptyRepositoryFixture();
@@ -232,7 +228,7 @@ public void CacheFileIsMissing()
gitVersionCalculator.CalculateVersionVariables();
var logsMessages = stringBuilder.ToString();
- logsMessages.ShouldContain(".json not found", Case.Insensitive, logsMessages);
+ logsMessages.ShouldContain(".yml not found", Case.Insensitive, logsMessages);
}
[TestCase(ConfigurationFileLocator.DefaultFileName)]
@@ -240,33 +236,31 @@ public void CacheFileIsMissing()
public void ConfigChangeInvalidatesCache(string configFileName)
{
const string versionCacheFileContent = """
- {
- "Major": 4,
- "Minor": 10,
- "Patch": 3,
- "PreReleaseTag": "test.19",
- "PreReleaseTagWithDash": "-test.19",
- "PreReleaseLabel": "test",
- "PreReleaseLabelWithDash": "-test",
- "PreReleaseNumber": 19,
- "WeightedPreReleaseNumber": 19,
- "BuildMetaData": null,
- "FullBuildMetaData": "Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
- "MajorMinorPatch": "4.10.3",
- "SemVer": "4.10.3-test.19",
- "AssemblySemVer": "4.10.3.0",
- "AssemblySemFileVer": "4.10.3.0",
- "FullSemVer": "4.10.3-test.19",
- "InformationalVersion": "4.10.3-test.19+Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
- "BranchName": "feature/test",
- "EscapedBranchName": "feature-test",
- "Sha": "dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
- "ShortSha": "dd2a29af",
- "VersionSourceSha": "4.10.2",
- "CommitsSinceVersionSource": 19,
- "CommitDate": "2015-11-10T00:00:00.000Z",
- "UncommittedChanges": 0
- }
+ Major: 4
+ Minor: 10
+ Patch: 3
+ PreReleaseTag: test.19
+ PreReleaseTagWithDash: -test.19
+ PreReleaseLabel: test
+ PreReleaseLabelWithDash: -test
+ PreReleaseNumber: 19
+ WeightedPreReleaseNumber: 19
+ BuildMetaData:
+ FullBuildMetaData: Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
+ MajorMinorPatch: 4.10.3
+ SemVer: 4.10.3-test.19
+ AssemblySemVer: 4.10.3.0
+ AssemblySemFileVer: 4.10.3.0
+ FullSemVer: 4.10.3-test.19
+ InformationalVersion: 4.10.3-test.19+Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
+ BranchName: feature/test
+ EscapedBranchName: feature-test
+ Sha: dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
+ ShortSha: dd2a29af
+ VersionSourceSha: 4.10.2
+ CommitsSinceVersionSource: 19
+ CommitDate: 2015-11-10
+ UncommittedChanges: 0
""";
using var fixture = new EmptyRepositoryFixture();
@@ -302,33 +296,31 @@ public void ConfigChangeInvalidatesCache(string configFileName)
public void NoCacheBypassesCache()
{
const string versionCacheFileContent = """
- {
- "Major": 4,
- "Minor": 10,
- "Patch": 3,
- "PreReleaseTag": "test.19",
- "PreReleaseTagWithDash": "-test.19",
- "PreReleaseLabel": "test",
- "PreReleaseLabelWithDash": "-test",
- "PreReleaseNumber": 19,
- "WeightedPreReleaseNumber": 19,
- "BuildMetaData": null,
- "FullBuildMetaData": "Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
- "MajorMinorPatch": "4.10.3",
- "SemVer": "4.10.3-test.19",
- "AssemblySemVer": "4.10.3.0",
- "AssemblySemFileVer": "4.10.3.0",
- "FullSemVer": "4.10.3-test.19",
- "InformationalVersion": "4.10.3-test.19+Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
- "BranchName": "feature/test",
- "EscapedBranchName": "feature-test",
- "Sha": "dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
- "ShortSha": "dd2a29af",
- "VersionSourceSha": "4.10.2",
- "CommitsSinceVersionSource": 19,
- "CommitDate": "2015-11-10T00:00:00.000Z",
- "UncommittedChanges": 0
- }
+ Major: 4
+ Minor: 10
+ Patch: 3
+ PreReleaseTag: test.19
+ PreReleaseTagWithDash: -test.19
+ PreReleaseLabel: test
+ PreReleaseLabelWithDash: -test
+ PreReleaseNumber: 19
+ WeightedPreReleaseNumber: 19
+ BuildMetaData:
+ FullBuildMetaData: Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
+ MajorMinorPatch: 4.10.3
+ SemVer: 4.10.3-test.19
+ AssemblySemVer: 4.10.3.0
+ AssemblySemFileVer: 4.10.3.0
+ FullSemVer: 4.10.3-test.19
+ InformationalVersion: 4.10.3-test.19+Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
+ BranchName: feature/test
+ EscapedBranchName: feature-test
+ Sha: dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
+ ShortSha: dd2a29af
+ VersionSourceSha: 4.10.2
+ CommitsSinceVersionSource: 19
+ CommitDate: 2015-11-10
+ UncommittedChanges: 0
""";
using var fixture = new EmptyRepositoryFixture();
diff --git a/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCache.cs b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCache.cs
index 340ce21ece..352f6a68e6 100644
--- a/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCache.cs
+++ b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCache.cs
@@ -91,5 +91,5 @@ private string PrepareCacheDirectory()
return cacheDir;
}
- private static string GetCacheFileName(GitVersionCacheKey key, string cacheDir) => PathHelper.Combine(cacheDir, string.Concat(key.Value, ".json"));
+ private static string GetCacheFileName(GitVersionCacheKey key, string cacheDir) => PathHelper.Combine(cacheDir, string.Concat(key.Value, ".yml"));
}
diff --git a/src/GitVersion.Output/GitVersion.Output.csproj b/src/GitVersion.Output/GitVersion.Output.csproj
index da36e3d835..60b7379e65 100644
--- a/src/GitVersion.Output/GitVersion.Output.csproj
+++ b/src/GitVersion.Output/GitVersion.Output.csproj
@@ -8,7 +8,11 @@
-
+
+
+
+
+
diff --git a/src/GitVersion.Output/Serializer/VersionVariableSerializer.cs b/src/GitVersion.Output/Serializer/VersionVariableSerializer.cs
index 734cb6b263..0f9a279a1a 100644
--- a/src/GitVersion.Output/Serializer/VersionVariableSerializer.cs
+++ b/src/GitVersion.Output/Serializer/VersionVariableSerializer.cs
@@ -87,14 +87,19 @@ private static GitVersionVariables FromDictionary(IEnumerable>(reader);
+ return FromDictionary(dictionary);
}
private void ToFileInternal(GitVersionVariables gitVersionVariables, string filePath)
{
- var json = ToJson(gitVersionVariables);
- fileSystem.WriteAllText(filePath, json);
+ var dictionary = gitVersionVariables.ToDictionary(x => x.Key, x => x.Value);
+ using var stream = fileSystem.OpenWrite(filePath);
+ using var sw = new StreamWriter(stream);
+ var serializer = new YamlDotNet.Serialization.Serializer();
+ serializer.Serialize(sw, dictionary);
}
private static JsonSerializerOptions JsonSerializerOptions() => new() { WriteIndented = true, Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping, Converters = { new VersionVariablesJsonStringConverter() } };