Skip to content

Commit 030694e

Browse files
committed
Merge pull request #3810 from arturcic/feature/yaml-cache
Switch cache format from JSON back to YAML
2 parents a58abfd + 1c87a40 commit 030694e

File tree

6 files changed

+118
-117
lines changed

6 files changed

+118
-117
lines changed

.github/actions/docker-manifests/action.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ runs:
3232
-
3333
name: '[Docker Publish Manifests] DockerHub'
3434
shell: pwsh
35-
run: dotnet run/docker.dll --target=DockerManifest --arch=amd64 --docker_dotnetversion=${{ inputs.targetFramework }} --docker_distro=${{ inputs.distro }} --docker_registry dockerhub
35+
run: dotnet run/docker.dll --target=DockerManifest --arch=amd64 --arch=arm64 --docker_dotnetversion=${{ inputs.targetFramework }} --docker_distro=${{ inputs.distro }} --docker_registry dockerhub
3636
-
3737
name: Login to GitHub
3838
uses: docker/login-action@v2
@@ -43,4 +43,4 @@ runs:
4343
-
4444
name: '[Docker Publish Manifests] GitHub'
4545
shell: pwsh
46-
run: dotnet run/docker.dll --target=DockerManifest --arch=amd64 --docker_dotnetversion=${{ inputs.targetFramework }} --docker_distro=${{ inputs.distro }} --docker_registry github
46+
run: dotnet run/docker.dll --target=DockerManifest --arch=amd64 --arch=arm64 --docker_dotnetversion=${{ inputs.targetFramework }} --docker_distro=${{ inputs.distro }} --docker_registry github

.github/workflows/ci.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ jobs:
6262
strategy:
6363
fail-fast: false
6464
matrix:
65-
arch: [ amd64 ]
65+
arch: [ amd64, amd64 ]
6666

6767
uses: ./.github/workflows/_artifacts_linux.yml
6868
with:
@@ -76,7 +76,7 @@ jobs:
7676
strategy:
7777
fail-fast: false
7878
matrix:
79-
arch: [ amd64 ]
79+
arch: [ amd64, amd64 ]
8080

8181
uses: ./.github/workflows/_docker.yml
8282
with:

src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs

Lines changed: 99 additions & 107 deletions
Original file line numberDiff line numberDiff line change
@@ -92,33 +92,31 @@ public void CacheKeyForWorktree()
9292
public void CacheFileExistsOnDisk()
9393
{
9494
const string versionCacheFileContent = """
95-
{
96-
"Major": 4,
97-
"Minor": 10,
98-
"Patch": 3,
99-
"PreReleaseTag": "test.19",
100-
"PreReleaseTagWithDash": "-test.19",
101-
"PreReleaseLabel": "test",
102-
"PreReleaseLabelWithDash": "-test",
103-
"PreReleaseNumber": 19,
104-
"WeightedPreReleaseNumber": 19,
105-
"BuildMetaData": null,
106-
"FullBuildMetaData": "Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
107-
"MajorMinorPatch": "4.10.3",
108-
"SemVer": "4.10.3-test.19",
109-
"AssemblySemVer": "4.10.3.0",
110-
"AssemblySemFileVer": "4.10.3.0",
111-
"FullSemVer": "4.10.3-test.19",
112-
"InformationalVersion": "4.10.3-test.19+Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
113-
"BranchName": "feature/test",
114-
"EscapedBranchName": "feature-test",
115-
"Sha": "dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
116-
"ShortSha": "dd2a29af",
117-
"VersionSourceSha": "4.10.2",
118-
"CommitsSinceVersionSource": 19,
119-
"CommitDate": "2015-11-10T00:00:00.000Z",
120-
"UncommittedChanges": 0
121-
}
95+
Major: 4
96+
Minor: 10
97+
Patch: 3
98+
PreReleaseTag: test.19
99+
PreReleaseTagWithDash: -test.19
100+
PreReleaseLabel: test
101+
PreReleaseLabelWithDash: -test
102+
PreReleaseNumber: 19
103+
WeightedPreReleaseNumber: 19
104+
BuildMetaData:
105+
FullBuildMetaData: Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
106+
MajorMinorPatch: 4.10.3
107+
SemVer: 4.10.3-test.19
108+
AssemblySemVer: 4.10.3.0
109+
AssemblySemFileVer: 4.10.3.0
110+
FullSemVer: 4.10.3-test.19
111+
InformationalVersion: 4.10.3-test.19+Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
112+
BranchName: feature/test
113+
EscapedBranchName: feature-test
114+
Sha: dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
115+
ShortSha: dd2a29af
116+
VersionSourceSha: 4.10.2
117+
CommitsSinceVersionSource: 19
118+
CommitDate: 2015-11-10
119+
UncommittedChanges: 0
122120
""";
123121

124122
var stringBuilder = new StringBuilder();
@@ -154,31 +152,29 @@ public void CacheFileExistsOnDisk()
154152
public void CacheFileExistsOnDiskWhenOverrideConfigIsSpecifiedVersionShouldBeDynamicallyCalculatedWithoutSavingInCache()
155153
{
156154
const string versionCacheFileContent = """
157-
{
158-
"Major": 4,
159-
"Minor": 10,
160-
"Patch": 3,
161-
"PreReleaseTag": "test.19",
162-
"PreReleaseTagWithDash": "-test.19",
163-
"PreReleaseLabel": "test",
164-
"PreReleaseLabelWithDash": "-test",
165-
"PreReleaseNumber": 19,
166-
"BuildMetaData": null,
167-
"FullBuildMetaData": "Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
168-
"MajorMinorPatch": "4.10.3",
169-
"SemVer": "4.10.3-test.19",
170-
"AssemblySemVer": "4.10.3.0",
171-
"AssemblySemFileVer": "4.10.3.0",
172-
"FullSemVer": "4.10.3-test.19",
173-
"InformationalVersion": "4.10.3-test.19+Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
174-
"BranchName": "feature/test",
175-
"EscapedBranchName": "feature-test",
176-
"Sha": "dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
177-
"ShortSha": "dd2a29af",
178-
"CommitsSinceVersionSource": 19,
179-
"CommitDate": "2015-11-10T00:00:00.000Z",
180-
"UncommittedChanges": 0
181-
}
155+
Major: 4
156+
Minor: 10
157+
Patch: 3
158+
PreReleaseTag: test.19
159+
PreReleaseTagWithDash: -test.19
160+
PreReleaseLabel: test
161+
PreReleaseLabelWithDash: -test
162+
PreReleaseNumber: 19
163+
BuildMetaData:
164+
FullBuildMetaData: Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
165+
MajorMinorPatch: 4.10.3
166+
SemVer: 4.10.3-test.19
167+
AssemblySemVer: 4.10.3.0
168+
AssemblySemFileVer: 4.10.3.0
169+
FullSemVer: 4.10.3-test.19
170+
InformationalVersion: 4.10.3-test.19+Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
171+
BranchName: feature/test
172+
EscapedBranchName: feature-test
173+
Sha: dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
174+
ShortSha: dd2a29af
175+
CommitsSinceVersionSource: 19
176+
CommitDate: 2015-11-10
177+
UncommittedChanges: 0
182178
""";
183179

184180
using var fixture = new EmptyRepositoryFixture();
@@ -232,41 +228,39 @@ public void CacheFileIsMissing()
232228
gitVersionCalculator.CalculateVersionVariables();
233229

234230
var logsMessages = stringBuilder.ToString();
235-
logsMessages.ShouldContain(".json not found", Case.Insensitive, logsMessages);
231+
logsMessages.ShouldMatch("(?s).*Cache file.*(?-s) not found.*");
236232
}
237233

238234
[TestCase(ConfigurationFileLocator.DefaultFileName)]
239235
[TestCase(ConfigurationFileLocator.DefaultAlternativeFileName)]
240236
public void ConfigChangeInvalidatesCache(string configFileName)
241237
{
242238
const string versionCacheFileContent = """
243-
{
244-
"Major": 4,
245-
"Minor": 10,
246-
"Patch": 3,
247-
"PreReleaseTag": "test.19",
248-
"PreReleaseTagWithDash": "-test.19",
249-
"PreReleaseLabel": "test",
250-
"PreReleaseLabelWithDash": "-test",
251-
"PreReleaseNumber": 19,
252-
"WeightedPreReleaseNumber": 19,
253-
"BuildMetaData": null,
254-
"FullBuildMetaData": "Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
255-
"MajorMinorPatch": "4.10.3",
256-
"SemVer": "4.10.3-test.19",
257-
"AssemblySemVer": "4.10.3.0",
258-
"AssemblySemFileVer": "4.10.3.0",
259-
"FullSemVer": "4.10.3-test.19",
260-
"InformationalVersion": "4.10.3-test.19+Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
261-
"BranchName": "feature/test",
262-
"EscapedBranchName": "feature-test",
263-
"Sha": "dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
264-
"ShortSha": "dd2a29af",
265-
"VersionSourceSha": "4.10.2",
266-
"CommitsSinceVersionSource": 19,
267-
"CommitDate": "2015-11-10T00:00:00.000Z",
268-
"UncommittedChanges": 0
269-
}
239+
Major: 4
240+
Minor: 10
241+
Patch: 3
242+
PreReleaseTag: test.19
243+
PreReleaseTagWithDash: -test.19
244+
PreReleaseLabel: test
245+
PreReleaseLabelWithDash: -test
246+
PreReleaseNumber: 19
247+
WeightedPreReleaseNumber: 19
248+
BuildMetaData:
249+
FullBuildMetaData: Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
250+
MajorMinorPatch: 4.10.3
251+
SemVer: 4.10.3-test.19
252+
AssemblySemVer: 4.10.3.0
253+
AssemblySemFileVer: 4.10.3.0
254+
FullSemVer: 4.10.3-test.19
255+
InformationalVersion: 4.10.3-test.19+Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
256+
BranchName: feature/test
257+
EscapedBranchName: feature-test
258+
Sha: dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
259+
ShortSha: dd2a29af
260+
VersionSourceSha: 4.10.2
261+
CommitsSinceVersionSource: 19
262+
CommitDate: 2015-11-10
263+
UncommittedChanges: 0
270264
""";
271265

272266
using var fixture = new EmptyRepositoryFixture();
@@ -302,33 +296,31 @@ public void ConfigChangeInvalidatesCache(string configFileName)
302296
public void NoCacheBypassesCache()
303297
{
304298
const string versionCacheFileContent = """
305-
{
306-
"Major": 4,
307-
"Minor": 10,
308-
"Patch": 3,
309-
"PreReleaseTag": "test.19",
310-
"PreReleaseTagWithDash": "-test.19",
311-
"PreReleaseLabel": "test",
312-
"PreReleaseLabelWithDash": "-test",
313-
"PreReleaseNumber": 19,
314-
"WeightedPreReleaseNumber": 19,
315-
"BuildMetaData": null,
316-
"FullBuildMetaData": "Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
317-
"MajorMinorPatch": "4.10.3",
318-
"SemVer": "4.10.3-test.19",
319-
"AssemblySemVer": "4.10.3.0",
320-
"AssemblySemFileVer": "4.10.3.0",
321-
"FullSemVer": "4.10.3-test.19",
322-
"InformationalVersion": "4.10.3-test.19+Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
323-
"BranchName": "feature/test",
324-
"EscapedBranchName": "feature-test",
325-
"Sha": "dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f",
326-
"ShortSha": "dd2a29af",
327-
"VersionSourceSha": "4.10.2",
328-
"CommitsSinceVersionSource": 19,
329-
"CommitDate": "2015-11-10T00:00:00.000Z",
330-
"UncommittedChanges": 0
331-
}
299+
Major: 4
300+
Minor: 10
301+
Patch: 3
302+
PreReleaseTag: test.19
303+
PreReleaseTagWithDash: -test.19
304+
PreReleaseLabel: test
305+
PreReleaseLabelWithDash: -test
306+
PreReleaseNumber: 19
307+
WeightedPreReleaseNumber: 19
308+
BuildMetaData:
309+
FullBuildMetaData: Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
310+
MajorMinorPatch: 4.10.3
311+
SemVer: 4.10.3-test.19
312+
AssemblySemVer: 4.10.3.0
313+
AssemblySemFileVer: 4.10.3.0
314+
FullSemVer: 4.10.3-test.19
315+
InformationalVersion: 4.10.3-test.19+Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
316+
BranchName: feature/test
317+
EscapedBranchName: feature-test
318+
Sha: dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
319+
ShortSha: dd2a29af
320+
VersionSourceSha: 4.10.2
321+
CommitsSinceVersionSource: 19
322+
CommitDate: 2015-11-10
323+
UncommittedChanges: 0
332324
""";
333325

334326
using var fixture = new EmptyRepositoryFixture();

src/GitVersion.Core/VersionCalculation/Caching/GitVersionCache.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,5 +91,5 @@ private string PrepareCacheDirectory()
9191
return cacheDir;
9292
}
9393

94-
private static string GetCacheFileName(GitVersionCacheKey key, string cacheDir) => PathHelper.Combine(cacheDir, string.Concat(key.Value, ".json"));
94+
private static string GetCacheFileName(GitVersionCacheKey key, string cacheDir) => PathHelper.Combine(cacheDir, string.Concat(key.Value, ".yml"));
9595
}

src/GitVersion.Output/GitVersion.Output.csproj

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,11 @@
88
<EmbeddedResource Include="*\AddFormats\**\*.*" />
99
<EmbeddedResource Include="*\Templates\**\*.*" />
1010
</ItemGroup>
11-
11+
12+
<ItemGroup>
13+
<PackageReference Include="YamlDotNet" />
14+
</ItemGroup>
15+
1216
<ItemGroup>
1317
<InternalsVisibleTo Include="GitVersion.App.Tests" />
1418
<InternalsVisibleTo Include="GitVersion.Output.Tests" />

src/GitVersion.Output/Serializer/VersionVariableSerializer.cs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,14 +87,19 @@ private static GitVersionVariables FromDictionary(IEnumerable<KeyValuePair<strin
8787

8888
private GitVersionVariables FromFileInternal(string filePath)
8989
{
90-
var json = fileSystem.ReadAllText(filePath);
91-
return FromJson(json);
90+
using var stream = fileSystem.OpenRead(filePath);
91+
using var reader = new StreamReader(stream);
92+
var dictionary = new YamlDotNet.Serialization.Deserializer().Deserialize<Dictionary<string, string>>(reader);
93+
return FromDictionary(dictionary);
9294
}
9395

9496
private void ToFileInternal(GitVersionVariables gitVersionVariables, string filePath)
9597
{
96-
var json = ToJson(gitVersionVariables);
97-
fileSystem.WriteAllText(filePath, json);
98+
var dictionary = gitVersionVariables.ToDictionary(x => x.Key, x => x.Value);
99+
using var stream = fileSystem.OpenWrite(filePath);
100+
using var sw = new StreamWriter(stream);
101+
var serializer = new YamlDotNet.Serialization.Serializer();
102+
serializer.Serialize(sw, dictionary);
98103
}
99104

100105
private static JsonSerializerOptions JsonSerializerOptions() => new() { WriteIndented = true, Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping, Converters = { new VersionVariablesJsonStringConverter() } };

0 commit comments

Comments
 (0)