From 9cbaa3481fe702e69b22aca24aae6a562bdc3360 Mon Sep 17 00:00:00 2001 From: Nicholas Blumhardt Date: Mon, 24 Jul 2017 10:16:24 +1000 Subject: [PATCH] Jump through many hoops to ensure version is always set correctly --- Build.ps1 | 42 +++++++------------ piggy.sln | 14 ------- .../Datalust.Piggy.Setup.wixproj | 1 - setup/Datalust.Piggy.Setup/Product.wxs | 2 +- .../Cli/Commands/VersionCommand.cs | 8 +++- .../Cli/Commands/VersionCommandTests.cs | 19 +++++++++ .../Datalust.Piggy.Tests.csproj | 2 - 7 files changed, 43 insertions(+), 45 deletions(-) create mode 100644 test/Datalust.Piggy.Tests/Cli/Commands/VersionCommandTests.cs diff --git a/Build.ps1 b/Build.ps1 index 9b3fc08..1b25556 100644 --- a/Build.ps1 +++ b/Build.ps1 @@ -8,18 +8,6 @@ function Restore-Packages & dotnet restore } -function Update-AssemblyInfo($version) -{ - $versionPattern = "[0-9]+(\.([0-9]+|\*)){3}" - - foreach ($file in ls ./src/*/Properties/AssemblyInfo.cs) - { - (cat $file) | foreach { - % {$_ -replace $versionPattern, "$version.0" } - } | sc -Encoding "UTF8" $file - } -} - function Update-WixVersion($version) { $defPattern = "define Version = ""0\.0\.0""" @@ -31,20 +19,16 @@ function Update-WixVersion($version) } | sc -Encoding "UTF8" $product } -function Execute-MSBuild +function Execute-MSBuild($version) { - & msbuild ./piggy.sln /t:Rebuild /p:Configuration=Release /p:Platform=x64 + & msbuild ./piggy.sln /t:Rebuild /p:Configuration=Release /p:Platform=x64 /p:VersionPrefix=$version if($LASTEXITCODE -ne 0) { exit 2 } } function Execute-Tests { - pushd ./test/Datalust.Piggy.Tests - - & dotnet test -c Release + & dotnet test ./test/Datalust.Piggy.Tests/Datalust.Piggy.Tests.csproj -c Release /p:Configuration=Release /p:Platform=x64 /p:VersionPrefix=$version if($LASTEXITCODE -ne 0) { exit 3 } - - popd } function Create-ArtifactDir @@ -56,20 +40,20 @@ function Publish-Gzips($version) { $rids = @("ubuntu.14.04-x64", "ubuntu.16.04-x64", "rhel.7-x64", "osx.10.12-x64") foreach ($rid in $rids) { - & dotnet publish src/Datalust.Piggy/Datalust.Piggy.csproj -c Release -r $rid - if($LASTEXITCODE -ne 0) { exit 3 } + & dotnet publish src/Datalust.Piggy/Datalust.Piggy.csproj -c Release -r $rid /p:VersionPrefix=$version + if($LASTEXITCODE -ne 0) { exit 4 } # Make sure the archive contains a reasonable root filename mv ./src/Datalust.Piggy/bin/Release/netcoreapp1.1/$rid/publish/ ./src/Datalust.Piggy/bin/Release/netcoreapp1.1/$rid/piggy-$version-$rid/ & ./build/7-zip/7za.exe a -ttar piggy-$version-$rid.tar ./src/Datalust.Piggy/bin/Release/netcoreapp1.1/$rid/piggy-$version-$rid/ - if($LASTEXITCODE -ne 0) { exit 3 } + if($LASTEXITCODE -ne 0) { exit 5 } # Back to the original directory name mv ./src/Datalust.Piggy/bin/Release/netcoreapp1.1/$rid/piggy-$version-$rid/ ./src/Datalust.Piggy/bin/Release/netcoreapp1.1/$rid/publish/ & ./build/7-zip/7za.exe a -tgzip ./artifacts/piggy-$version-$rid.tar.gz piggy-$version-$rid.tar - if($LASTEXITCODE -ne 0) { exit 3 } + if($LASTEXITCODE -ne 0) { exit 6 } rm piggy-$version-$rid.tar } @@ -77,18 +61,24 @@ function Publish-Gzips($version) function Publish-Msi($version) { + & dotnet publish src/Datalust.Piggy/Datalust.Piggy.csproj -c Release -r win10-x64 /p:VersionPrefix=$version + if($LASTEXITCODE -ne 0) { exit 7 } + + & msbuild ./setup/Datalust.Piggy.Setup/Datalust.Piggy.Setup.wixproj /t:Rebuild /p:Configuration=Release /p:Platform=x64 /p:Version=$version + if($LASTEXITCODE -ne 0) { exit 8 } + mv ./setup/Datalust.Piggy.Setup/bin/Release/piggy.msi ./artifacts/piggy-$version.msi } Push-Location $PSScriptRoot -$version = @{ $true = $env:APPVEYOR_BUILD_VERSION; $false = "0.0.0" }[$env:APPVEYOR_BUILD_VERSION -ne $NULL]; +$version = @{ $true = $env:APPVEYOR_BUILD_VERSION; $false = "99.99.99" }[$env:APPVEYOR_BUILD_VERSION -ne $NULL]; +Write-Output "Building version $version" Clean-Output Restore-Packages -Update-AssemblyInfo($version) Update-WixVersion($version) -Execute-MSBuild +Execute-MSBuild($version) Execute-Tests Create-ArtifactDir Publish-Gzips($version) diff --git a/piggy.sln b/piggy.sln index fa9c3b1..c421441 100644 --- a/piggy.sln +++ b/piggy.sln @@ -37,44 +37,30 @@ Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU Release|x64 = Release|x64 - Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {8250E09A-7479-4322-A251-DABFD9F129B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8250E09A-7479-4322-A251-DABFD9F129B6}.Debug|Any CPU.Build.0 = Debug|Any CPU {8250E09A-7479-4322-A251-DABFD9F129B6}.Debug|x64.ActiveCfg = Debug|x64 {8250E09A-7479-4322-A251-DABFD9F129B6}.Debug|x64.Build.0 = Debug|x64 - {8250E09A-7479-4322-A251-DABFD9F129B6}.Debug|x86.ActiveCfg = Debug|Any CPU - {8250E09A-7479-4322-A251-DABFD9F129B6}.Debug|x86.Build.0 = Debug|Any CPU {8250E09A-7479-4322-A251-DABFD9F129B6}.Release|Any CPU.ActiveCfg = Release|Any CPU {8250E09A-7479-4322-A251-DABFD9F129B6}.Release|Any CPU.Build.0 = Release|Any CPU {8250E09A-7479-4322-A251-DABFD9F129B6}.Release|x64.ActiveCfg = Release|x64 {8250E09A-7479-4322-A251-DABFD9F129B6}.Release|x64.Build.0 = Release|x64 - {8250E09A-7479-4322-A251-DABFD9F129B6}.Release|x86.ActiveCfg = Release|Any CPU - {8250E09A-7479-4322-A251-DABFD9F129B6}.Release|x86.Build.0 = Release|Any CPU {E3291CB6-F4A9-4A01-9E65-B70E2A32B0D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E3291CB6-F4A9-4A01-9E65-B70E2A32B0D5}.Debug|Any CPU.Build.0 = Debug|Any CPU {E3291CB6-F4A9-4A01-9E65-B70E2A32B0D5}.Debug|x64.ActiveCfg = Debug|x64 {E3291CB6-F4A9-4A01-9E65-B70E2A32B0D5}.Debug|x64.Build.0 = Debug|x64 - {E3291CB6-F4A9-4A01-9E65-B70E2A32B0D5}.Debug|x86.ActiveCfg = Debug|Any CPU - {E3291CB6-F4A9-4A01-9E65-B70E2A32B0D5}.Debug|x86.Build.0 = Debug|Any CPU {E3291CB6-F4A9-4A01-9E65-B70E2A32B0D5}.Release|Any CPU.ActiveCfg = Release|Any CPU {E3291CB6-F4A9-4A01-9E65-B70E2A32B0D5}.Release|Any CPU.Build.0 = Release|Any CPU {E3291CB6-F4A9-4A01-9E65-B70E2A32B0D5}.Release|x64.ActiveCfg = Release|x64 {E3291CB6-F4A9-4A01-9E65-B70E2A32B0D5}.Release|x64.Build.0 = Release|x64 - {E3291CB6-F4A9-4A01-9E65-B70E2A32B0D5}.Release|x86.ActiveCfg = Release|Any CPU - {E3291CB6-F4A9-4A01-9E65-B70E2A32B0D5}.Release|x86.Build.0 = Release|Any CPU {5E28D963-3523-49DE-B03B-E76684258415}.Debug|Any CPU.ActiveCfg = Debug|x64 {5E28D963-3523-49DE-B03B-E76684258415}.Debug|x64.ActiveCfg = Debug|x64 - {5E28D963-3523-49DE-B03B-E76684258415}.Debug|x86.ActiveCfg = Debug|x64 {5E28D963-3523-49DE-B03B-E76684258415}.Release|Any CPU.ActiveCfg = Release|x64 - {5E28D963-3523-49DE-B03B-E76684258415}.Release|Any CPU.Build.0 = Release|x64 {5E28D963-3523-49DE-B03B-E76684258415}.Release|x64.ActiveCfg = Release|x64 - {5E28D963-3523-49DE-B03B-E76684258415}.Release|x64.Build.0 = Release|x64 - {5E28D963-3523-49DE-B03B-E76684258415}.Release|x86.ActiveCfg = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/setup/Datalust.Piggy.Setup/Datalust.Piggy.Setup.wixproj b/setup/Datalust.Piggy.Setup/Datalust.Piggy.Setup.wixproj index 3a388e4..ea93964 100644 --- a/setup/Datalust.Piggy.Setup/Datalust.Piggy.Setup.wixproj +++ b/setup/Datalust.Piggy.Setup/Datalust.Piggy.Setup.wixproj @@ -47,7 +47,6 @@ - ..\..\src\Datalust.Piggy\bin\$(Configuration)\netcoreapp1.1\win10-x64\publish BasePath=..\..\src\Datalust.Piggy\bin\$(Configuration)\netcoreapp1.1\win10-x64\publish diff --git a/setup/Datalust.Piggy.Setup/Product.wxs b/setup/Datalust.Piggy.Setup/Product.wxs index 68cd650..0f5804f 100644 --- a/setup/Datalust.Piggy.Setup/Product.wxs +++ b/setup/Datalust.Piggy.Setup/Product.wxs @@ -1,6 +1,6 @@  - + diff --git a/src/Datalust.Piggy/Cli/Commands/VersionCommand.cs b/src/Datalust.Piggy/Cli/Commands/VersionCommand.cs index 2d14bcf..82d68f5 100644 --- a/src/Datalust.Piggy/Cli/Commands/VersionCommand.cs +++ b/src/Datalust.Piggy/Cli/Commands/VersionCommand.cs @@ -8,9 +8,15 @@ class VersionCommand : Command { protected override int Run() { - var version = typeof(VersionCommand).GetTypeInfo().Assembly.GetCustomAttribute().InformationalVersion; + var version = GetVersion(); Console.WriteLine(version); return 0; } + + public static string GetVersion() + { + return typeof(VersionCommand).GetTypeInfo().Assembly + .GetCustomAttribute().InformationalVersion; + } } } diff --git a/test/Datalust.Piggy.Tests/Cli/Commands/VersionCommandTests.cs b/test/Datalust.Piggy.Tests/Cli/Commands/VersionCommandTests.cs new file mode 100644 index 0000000..4258265 --- /dev/null +++ b/test/Datalust.Piggy.Tests/Cli/Commands/VersionCommandTests.cs @@ -0,0 +1,19 @@ +using Datalust.Piggy.Cli.Commands; +using Xunit; + +namespace Datalust.Piggy.Tests.Cli.Commands +{ + public class VersionCommandTests + { +#if !DEBUG + [Fact] + public void VersionIsSet() + { + var version = VersionCommand.GetVersion(); + Assert.False(string.IsNullOrEmpty(version)); + Assert.NotEqual("1.0.0", version); + Assert.NotEqual("0.0.0", version); + } +#endif + } +} diff --git a/test/Datalust.Piggy.Tests/Datalust.Piggy.Tests.csproj b/test/Datalust.Piggy.Tests/Datalust.Piggy.Tests.csproj index 5f703d9..e8a538e 100644 --- a/test/Datalust.Piggy.Tests/Datalust.Piggy.Tests.csproj +++ b/test/Datalust.Piggy.Tests/Datalust.Piggy.Tests.csproj @@ -4,8 +4,6 @@ netcoreapp1.1 - -