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() } };