Skip to content

Commit 7f0ba03

Browse files
committed
Attempted fixes to the versioning of packages
1 parent 2502d52 commit 7f0ba03

2 files changed

Lines changed: 60 additions & 23 deletions

File tree

.github/workflows/release.yml

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ jobs:
122122
final-version: ${{ steps.version-override.outputs.FINAL_VERSION }}
123123
final-nuget-version: ${{ steps.version-override.outputs.FINAL_NUGET_VERSION }}
124124
final-assembly-version: ${{ steps.version-override.outputs.FINAL_ASSEMBLY_VERSION }}
125+
final-file-version: ${{ steps.version-override.outputs.FINAL_FILE_VERSION }}
125126
final-informational-version: ${{ steps.version-override.outputs.FINAL_INFORMATIONAL_VERSION }}
126127
use-tag-version: ${{ steps.version-override.outputs.USE_TAG_VERSION }}
127128

@@ -157,8 +158,12 @@ jobs:
157158
echo "FINAL_VERSION=$VALIDATED_VERSION" >> $GITHUB_OUTPUT
158159
echo "FINAL_NUGET_VERSION=$VALIDATED_VERSION" >> $GITHUB_OUTPUT
159160
# For assembly version, remove pre-release and build metadata
160-
ASSEMBLY_VERSION="${VALIDATED_VERSION%%[-+]*}"
161+
ASSEMBLY_VERSION="${VALIDATED_VERSION%%[-+]*}.0"
162+
if [[ ! "$ASSEMBLY_VERSION" =~ \.[0-9]+$ ]]; then
163+
ASSEMBLY_VERSION="${ASSEMBLY_VERSION}.0"
164+
fi
161165
echo "FINAL_ASSEMBLY_VERSION=$ASSEMBLY_VERSION" >> $GITHUB_OUTPUT
166+
echo "FINAL_FILE_VERSION=$ASSEMBLY_VERSION" >> $GITHUB_OUTPUT
162167
echo "FINAL_INFORMATIONAL_VERSION=$VALIDATED_VERSION" >> $GITHUB_OUTPUT
163168
echo "USE_TAG_VERSION=true" >> $GITHUB_OUTPUT
164169
else
@@ -167,6 +172,7 @@ jobs:
167172
echo "FINAL_VERSION=${{ steps.gitversion.outputs.SemVer }}" >> $GITHUB_OUTPUT
168173
echo "FINAL_NUGET_VERSION=${{ steps.gitversion.outputs.NuGetVersion }}" >> $GITHUB_OUTPUT
169174
echo "FINAL_ASSEMBLY_VERSION=${{ steps.gitversion.outputs.AssemblySemVer }}" >> $GITHUB_OUTPUT
175+
echo "FINAL_FILE_VERSION=${{ steps.gitversion.outputs.AssemblySemFileVer }}" >> $GITHUB_OUTPUT
170176
echo "FINAL_INFORMATIONAL_VERSION=${{ steps.gitversion.outputs.InformationalVersion }}" >> $GITHUB_OUTPUT
171177
echo "USE_TAG_VERSION=false" >> $GITHUB_OUTPUT
172178
fi
@@ -184,6 +190,7 @@ jobs:
184190
echo " SemVer: ${{ steps.gitversion.outputs.SemVer }}"
185191
echo " NuGetVersion: ${{ steps.gitversion.outputs.NuGetVersion }}"
186192
echo " AssemblySemVer: ${{ steps.gitversion.outputs.AssemblySemVer }}"
193+
echo " AssemblySemFileVer: ${{ steps.gitversion.outputs.AssemblySemFileVer }}"
187194
echo " InformationalVersion: ${{ steps.gitversion.outputs.InformationalVersion }}"
188195
echo " PreReleaseTag: ${{ steps.gitversion.outputs.PreReleaseTag }}"
189196
echo " PreReleaseNumber: ${{ steps.gitversion.outputs.PreReleaseNumber }}"
@@ -192,6 +199,7 @@ jobs:
192199
echo " Version: ${{ steps.version-override.outputs.FINAL_VERSION }}"
193200
echo " NuGet Version: ${{ steps.version-override.outputs.FINAL_NUGET_VERSION }}"
194201
echo " Assembly Version: ${{ steps.version-override.outputs.FINAL_ASSEMBLY_VERSION }}"
202+
echo " File Version: ${{ steps.version-override.outputs.FINAL_FILE_VERSION }}"
195203
echo " Informational Version: ${{ steps.version-override.outputs.FINAL_INFORMATIONAL_VERSION }}"
196204
197205
build:
@@ -227,25 +235,27 @@ jobs:
227235
with:
228236
dotnet-version: ${{ matrix.dotnet }}
229237

230-
- name: Debug Environment Variables
238+
- name: Display Build Version Info
231239
run: |
232-
echo "🔍 Build Environment Debug:"
233-
echo "GitVersion_SemVer: ${{ needs.calculate-version.outputs.final-version }}"
234-
echo "GitVersion_NuGetVersion: ${{ needs.calculate-version.outputs.final-nuget-version }}"
235-
echo "GitVersion_AssemblySemVer: ${{ needs.calculate-version.outputs.final-assembly-version }}"
236-
echo "GitVersion_InformationalVersion: ${{ needs.calculate-version.outputs.final-informational-version }}"
240+
echo "🔍 Release Build Version Information:"
241+
echo "SemVer: ${{ needs.calculate-version.outputs.final-version }}"
242+
echo "NuGet Version: ${{ needs.calculate-version.outputs.final-nuget-version }}"
243+
echo "Assembly Version: ${{ needs.calculate-version.outputs.final-assembly-version }}"
244+
echo "File Version: ${{ needs.calculate-version.outputs.final-file-version }}"
245+
echo "Informational Version: ${{ needs.calculate-version.outputs.final-informational-version }}"
237246
238247
- name: Restore dependencies
239248
run: dotnet restore -p:TargetFramework=${{ matrix.dotnet-framework }}
240249

241250
- name: Build
242-
run: dotnet build --no-restore -c Release -f ${{ matrix.dotnet-framework }}
243-
env:
244-
GitVersion_SemVer: ${{ needs.calculate-version.outputs.final-version }}
245-
GitVersion_AssemblySemVer: ${{ needs.calculate-version.outputs.final-assembly-version }}
246-
GitVersion_AssemblySemFileVer: ${{ needs.calculate-version.outputs.final-assembly-version }}
247-
GitVersion_InformationalVersion: ${{ needs.calculate-version.outputs.final-informational-version }}
248-
GitVersion_NuGetVersion: ${{ needs.calculate-version.outputs.final-nuget-version }}
251+
run: |
252+
dotnet build --no-restore -c Release -f ${{ matrix.dotnet-framework }} \
253+
-p:Version="${{ needs.calculate-version.outputs.final-nuget-version }}" \
254+
-p:PackageVersion="${{ needs.calculate-version.outputs.final-nuget-version }}" \
255+
-p:AssemblyVersion="${{ needs.calculate-version.outputs.final-assembly-version }}" \
256+
-p:FileVersion="${{ needs.calculate-version.outputs.final-file-version }}" \
257+
-p:InformationalVersion="${{ needs.calculate-version.outputs.final-informational-version }}" \
258+
-p:UseGitVersion=false
249259
250260
- name: Test
251261
run: dotnet test --no-build --verbosity normal -c Release -f ${{ matrix.dotnet-framework }} --collect:"XPlat Code Coverage" --results-directory ./coverage
@@ -318,6 +328,7 @@ jobs:
318328
echo "| Version | \`${{ needs.calculate-version.outputs.final-version }}\` |" >> $GITHUB_STEP_SUMMARY
319329
echo "| NuGet Version | \`${{ needs.calculate-version.outputs.final-nuget-version }}\` |" >> $GITHUB_STEP_SUMMARY
320330
echo "| Assembly Version | \`${{ needs.calculate-version.outputs.final-assembly-version }}\` |" >> $GITHUB_STEP_SUMMARY
331+
echo "| File Version | \`${{ needs.calculate-version.outputs.final-file-version }}\` |" >> $GITHUB_STEP_SUMMARY
321332
echo "| Used Tag Version | ${{ needs.calculate-version.outputs.use-tag-version == 'true' && '✅ Yes' || '❌ No (GitVersion)' }} |" >> $GITHUB_STEP_SUMMARY
322333
echo "| Trigger | ${{ needs.validate-release.outputs.is-manual == 'true' && '🖱️ Manual' || '🏷️ Tag Push' }} |" >> $GITHUB_STEP_SUMMARY
323334
echo "| NuGet.org | ${{ needs.validate-release.outputs.should-publish == 'true' && '✅ Published' || '❌ Skipped' }} |" >> $GITHUB_STEP_SUMMARY

src/Directory.Build.props

Lines changed: 35 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,34 +29,60 @@
2929
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
3030
</PropertyGroup>
3131

32-
<!-- GitVersion Integration - Only when enabled -->
33-
<ItemGroup Condition="'$(UseGitVersion)' != 'false'">
32+
<!-- GitVersion Integration - Only when explicitly enabled -->
33+
<ItemGroup Condition="'$(UseGitVersion)' == 'true'">
3434
<PackageReference Include="GitVersion.MsBuild" Version="6.0.5" PrivateAssets="All" />
3535
</ItemGroup>
3636

37-
<!-- GitVersion Properties - Only set when GitVersion is enabled and variables are available -->
38-
<PropertyGroup Condition="'$(UseGitVersion)' != 'false' And '$(GitVersion_SemVer)' != ''">
37+
<!-- GitVersion Properties - Only set when GitVersion is explicitly enabled and variables are available -->
38+
<PropertyGroup Condition="'$(UseGitVersion)' == 'true' And '$(GitVersion_SemVer)' != '' And '$(GitVersion_NuGetVersion)' != ''">
3939
<Version>$(GitVersion_SemVer)</Version>
4040
<AssemblyVersion>$(GitVersion_AssemblySemVer)</AssemblyVersion>
4141
<FileVersion>$(GitVersion_AssemblySemFileVer)</FileVersion>
4242
<InformationalVersion>$(GitVersion_InformationalVersion)</InformationalVersion>
4343
<PackageVersion>$(GitVersion_NuGetVersion)</PackageVersion>
4444
</PropertyGroup>
4545

46-
<!-- Fallback Version Properties - Used when GitVersion is disabled or variables are not available -->
47-
<PropertyGroup Condition="'$(UseGitVersion)' == 'false' Or '$(GitVersion_SemVer)' == ''">
48-
<!-- Version defaults - these will be overridden by explicit MSBuild properties in CI/CD -->
46+
<!-- Explicit Version Properties - Used when versions are passed as MSBuild properties (CI/CD scenarios) -->
47+
<!-- These properties will override GitVersion properties if both are present -->
48+
<PropertyGroup Condition="'$(UseGitVersion)' != 'true'">
49+
<!-- Priority 1: Use explicitly provided MSBuild properties -->
4950
<Version Condition="'$(Version)' == ''">1.0.0-dev</Version>
5051
<PackageVersion Condition="'$(PackageVersion)' == ''">$(Version)</PackageVersion>
5152
<AssemblyVersion Condition="'$(AssemblyVersion)' == ''">1.0.0.0</AssemblyVersion>
52-
<FileVersion Condition="'$(FileVersion)' == ''">$(AssemblyVersion)</FileVersion>
53+
<FileVersion Condition="'$(FileVersion)' == ''">1.0.0.0</FileVersion>
5354
<InformationalVersion Condition="'$(InformationalVersion)' == ''">$(Version)</InformationalVersion>
5455
</PropertyGroup>
5556

57+
<!-- Fallback Version Properties - Safety net for any scenario where versions are still empty -->
58+
<PropertyGroup>
59+
<!-- Ensure we always have valid version properties -->
60+
<Version Condition="'$(Version)' == '' Or '$(Version)' == '0.0.0'">1.0.0-dev</Version>
61+
<PackageVersion Condition="'$(PackageVersion)' == '' Or '$(PackageVersion)' == '0.0.0'">$(Version)</PackageVersion>
62+
<AssemblyVersion Condition="'$(AssemblyVersion)' == '' Or '$(AssemblyVersion)' == '0.0.0.0'">1.0.0.0</AssemblyVersion>
63+
<FileVersion Condition="'$(FileVersion)' == '' Or '$(FileVersion)' == '0.0.0.0'">$(AssemblyVersion)</FileVersion>
64+
<InformationalVersion Condition="'$(InformationalVersion)' == ''">$(Version)</InformationalVersion>
65+
</PropertyGroup>
66+
67+
<!-- SourceLink Integration - Support both .NET 8 and .NET 9 -->
5668
<ItemGroup>
57-
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="All" Condition="$(TargetFramework) == 'net8.0'" />
69+
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="All" />
5870
</ItemGroup>
5971

72+
<!-- Debug Version Properties - Only in Debug builds for troubleshooting -->
73+
<Target Name="DebugVersionProperties" BeforeTargets="CoreCompile" Condition="'$(Configuration)' == 'Debug' And '$(DesignTimeBuild)' != 'true'">
74+
<Message Text="?? Version Properties Debug:" Importance="high" />
75+
<Message Text=" UseGitVersion: $(UseGitVersion)" Importance="high" />
76+
<Message Text=" Version: $(Version)" Importance="high" />
77+
<Message Text=" PackageVersion: $(PackageVersion)" Importance="high" />
78+
<Message Text=" AssemblyVersion: $(AssemblyVersion)" Importance="high" />
79+
<Message Text=" FileVersion: $(FileVersion)" Importance="high" />
80+
<Message Text=" InformationalVersion: $(InformationalVersion)" Importance="high" />
81+
<Message Text=" GitVersion_SemVer: $(GitVersion_SemVer)" Importance="high" />
82+
<Message Text=" GitVersion_NuGetVersion: $(GitVersion_NuGetVersion)" Importance="high" />
83+
<Message Text=" GitVersion_AssemblySemVer: $(GitVersion_AssemblySemVer)" Importance="high" />
84+
</Target>
85+
6086
<ItemGroup>
6187
<None Include="..\..\deveel-logo.png">
6288
<Pack>True</Pack>

0 commit comments

Comments
 (0)