Skip to content

Commit

Permalink
Better signed build automation
Browse files Browse the repository at this point in the history
Motivation
Since signed assemblies became part of the release they slowed down release cycle due to extended effort necessary to prepare nuget packages with signed assemblies.

Modifications
- introduced "Signed" solution configuration
- optional Test Friends (turned off in Signed)
- re-signing support in build script

Result
New releases can be produced quicker with less effort.
  • Loading branch information
nayato committed Apr 8, 2016
1 parent ed028ed commit 13863df
Show file tree
Hide file tree
Showing 8 changed files with 111 additions and 10 deletions.
27 changes: 26 additions & 1 deletion DotNetty.sln
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.23107.0
VisualStudioVersion = 14.0.24720.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotNetty.Common", "src\DotNetty.Common\DotNetty.Common.csproj", "{DE58FE41-5E99-44E5-86BC-FC9ED8761DAF}"
EndProject
Expand Down Expand Up @@ -59,72 +59,97 @@ Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
Signed|Any CPU = Signed|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{DE58FE41-5E99-44E5-86BC-FC9ED8761DAF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DE58FE41-5E99-44E5-86BC-FC9ED8761DAF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DE58FE41-5E99-44E5-86BC-FC9ED8761DAF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DE58FE41-5E99-44E5-86BC-FC9ED8761DAF}.Release|Any CPU.Build.0 = Release|Any CPU
{DE58FE41-5E99-44E5-86BC-FC9ED8761DAF}.Signed|Any CPU.ActiveCfg = Signed|Any CPU
{DE58FE41-5E99-44E5-86BC-FC9ED8761DAF}.Signed|Any CPU.Build.0 = Signed|Any CPU
{5DE3C557-48BF-4CDB-9F47-474D343DD841}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5DE3C557-48BF-4CDB-9F47-474D343DD841}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5DE3C557-48BF-4CDB-9F47-474D343DD841}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5DE3C557-48BF-4CDB-9F47-474D343DD841}.Release|Any CPU.Build.0 = Release|Any CPU
{5DE3C557-48BF-4CDB-9F47-474D343DD841}.Signed|Any CPU.ActiveCfg = Release|Any CPU
{5DE3C557-48BF-4CDB-9F47-474D343DD841}.Signed|Any CPU.Build.0 = Release|Any CPU
{8218C9EE-0A4A-432F-A12A-B54202F97B05}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8218C9EE-0A4A-432F-A12A-B54202F97B05}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8218C9EE-0A4A-432F-A12A-B54202F97B05}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8218C9EE-0A4A-432F-A12A-B54202F97B05}.Release|Any CPU.Build.0 = Release|Any CPU
{8218C9EE-0A4A-432F-A12A-B54202F97B05}.Signed|Any CPU.ActiveCfg = Signed|Any CPU
{8218C9EE-0A4A-432F-A12A-B54202F97B05}.Signed|Any CPU.Build.0 = Signed|Any CPU
{2ABD244E-EF8F-460D-9C30-39116499E6E4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2ABD244E-EF8F-460D-9C30-39116499E6E4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2ABD244E-EF8F-460D-9C30-39116499E6E4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2ABD244E-EF8F-460D-9C30-39116499E6E4}.Release|Any CPU.Build.0 = Release|Any CPU
{2ABD244E-EF8F-460D-9C30-39116499E6E4}.Signed|Any CPU.ActiveCfg = Release|Any CPU
{2ABD244E-EF8F-460D-9C30-39116499E6E4}.Signed|Any CPU.Build.0 = Release|Any CPU
{58FFEA83-C956-49F9-9435-18332AD0E0D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{58FFEA83-C956-49F9-9435-18332AD0E0D1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{58FFEA83-C956-49F9-9435-18332AD0E0D1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{58FFEA83-C956-49F9-9435-18332AD0E0D1}.Release|Any CPU.Build.0 = Release|Any CPU
{58FFEA83-C956-49F9-9435-18332AD0E0D1}.Signed|Any CPU.ActiveCfg = Signed|Any CPU
{58FFEA83-C956-49F9-9435-18332AD0E0D1}.Signed|Any CPU.Build.0 = Signed|Any CPU
{B509D8B8-BD4A-46B1-916B-685DE387D01B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B509D8B8-BD4A-46B1-916B-685DE387D01B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B509D8B8-BD4A-46B1-916B-685DE387D01B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B509D8B8-BD4A-46B1-916B-685DE387D01B}.Release|Any CPU.Build.0 = Release|Any CPU
{B509D8B8-BD4A-46B1-916B-685DE387D01B}.Signed|Any CPU.ActiveCfg = Release|Any CPU
{09628314-F44E-445E-9F0D-CBE33B736AC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{09628314-F44E-445E-9F0D-CBE33B736AC3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{09628314-F44E-445E-9F0D-CBE33B736AC3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{09628314-F44E-445E-9F0D-CBE33B736AC3}.Release|Any CPU.Build.0 = Release|Any CPU
{09628314-F44E-445E-9F0D-CBE33B736AC3}.Signed|Any CPU.ActiveCfg = Release|Any CPU
{09628314-F44E-445E-9F0D-CBE33B736AC3}.Signed|Any CPU.Build.0 = Release|Any CPU
{6E76FCAF-C7C8-4F45-8C95-0FD42F2AC83B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6E76FCAF-C7C8-4F45-8C95-0FD42F2AC83B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6E76FCAF-C7C8-4F45-8C95-0FD42F2AC83B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6E76FCAF-C7C8-4F45-8C95-0FD42F2AC83B}.Release|Any CPU.Build.0 = Release|Any CPU
{6E76FCAF-C7C8-4F45-8C95-0FD42F2AC83B}.Signed|Any CPU.ActiveCfg = Release|Any CPU
{6E76FCAF-C7C8-4F45-8C95-0FD42F2AC83B}.Signed|Any CPU.Build.0 = Release|Any CPU
{94E10283-E26E-441A-A2A7-D9671A6E9818}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{94E10283-E26E-441A-A2A7-D9671A6E9818}.Debug|Any CPU.Build.0 = Debug|Any CPU
{94E10283-E26E-441A-A2A7-D9671A6E9818}.Release|Any CPU.ActiveCfg = Release|Any CPU
{94E10283-E26E-441A-A2A7-D9671A6E9818}.Release|Any CPU.Build.0 = Release|Any CPU
{94E10283-E26E-441A-A2A7-D9671A6E9818}.Signed|Any CPU.ActiveCfg = Release|Any CPU
{F9566A9E-FABB-4A57-BF20-C1842AB87012}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F9566A9E-FABB-4A57-BF20-C1842AB87012}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F9566A9E-FABB-4A57-BF20-C1842AB87012}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F9566A9E-FABB-4A57-BF20-C1842AB87012}.Release|Any CPU.Build.0 = Release|Any CPU
{F9566A9E-FABB-4A57-BF20-C1842AB87012}.Signed|Any CPU.ActiveCfg = Release|Any CPU
{F6019665-4C5E-4769-911A-FA1E83549BF5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F6019665-4C5E-4769-911A-FA1E83549BF5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F6019665-4C5E-4769-911A-FA1E83549BF5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F6019665-4C5E-4769-911A-FA1E83549BF5}.Release|Any CPU.Build.0 = Release|Any CPU
{F6019665-4C5E-4769-911A-FA1E83549BF5}.Signed|Any CPU.ActiveCfg = Release|Any CPU
{1BC30CEA-312E-41ED-A338-75FBC01C8C91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1BC30CEA-312E-41ED-A338-75FBC01C8C91}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1BC30CEA-312E-41ED-A338-75FBC01C8C91}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1BC30CEA-312E-41ED-A338-75FBC01C8C91}.Release|Any CPU.Build.0 = Release|Any CPU
{1BC30CEA-312E-41ED-A338-75FBC01C8C91}.Signed|Any CPU.ActiveCfg = Release|Any CPU
{C24AB93F-41E9-4291-BA8F-E9D3CF6C2EBC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C24AB93F-41E9-4291-BA8F-E9D3CF6C2EBC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C24AB93F-41E9-4291-BA8F-E9D3CF6C2EBC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C24AB93F-41E9-4291-BA8F-E9D3CF6C2EBC}.Release|Any CPU.Build.0 = Release|Any CPU
{C24AB93F-41E9-4291-BA8F-E9D3CF6C2EBC}.Signed|Any CPU.ActiveCfg = Release|Any CPU
{BA163586-F875-4488-9188-53A4A14DFD34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BA163586-F875-4488-9188-53A4A14DFD34}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BA163586-F875-4488-9188-53A4A14DFD34}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BA163586-F875-4488-9188-53A4A14DFD34}.Release|Any CPU.Build.0 = Release|Any CPU
{BA163586-F875-4488-9188-53A4A14DFD34}.Signed|Any CPU.ActiveCfg = Release|Any CPU
{D0D45DCD-EF82-43FA-8B95-D85D50378806}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D0D45DCD-EF82-43FA-8B95-D85D50378806}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D0D45DCD-EF82-43FA-8B95-D85D50378806}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D0D45DCD-EF82-43FA-8B95-D85D50378806}.Release|Any CPU.Build.0 = Release|Any CPU
{D0D45DCD-EF82-43FA-8B95-D85D50378806}.Signed|Any CPU.ActiveCfg = Release|Any CPU
{EDF30087-8B53-4432-84B8-D21BD9F49E95}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EDF30087-8B53-4432-84B8-D21BD9F49E95}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EDF30087-8B53-4432-84B8-D21BD9F49E95}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EDF30087-8B53-4432-84B8-D21BD9F49E95}.Release|Any CPU.Build.0 = Release|Any CPU
{EDF30087-8B53-4432-84B8-D21BD9F49E95}.Signed|Any CPU.ActiveCfg = Release|Any CPU
{EDF30087-8B53-4432-84B8-D21BD9F49E95}.Signed|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
51 changes: 45 additions & 6 deletions build.fsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,15 @@ open System.IO
open Fake
open Fake.FileUtils
open Fake.TaskRunnerHelper
open Fake.StrongNamingHelper

//--------------------------------------------------------------------------------
// Information about the project for Nuget and Assembly info files
//-------------------------------------------------------------------------------

let product = "DotNetty"
let authors = [ "Microsoft Azure" ]
let copyright = "Copyright © 2015"
let copyright = "Copyright © 2016"
let company = "DotNetty"
let description = "High performance, reactive TCP / UDP socket middleware for .NET"
let tags = ["socket";"sockets";"UDP";"TCP";"Netty";"DotNetty"]
Expand Down Expand Up @@ -70,7 +71,7 @@ open AssemblyInfoFile
Target "AssemblyInfo" (fun _ ->
let version = release.AssemblyVersion

let signKey = getBuildParamOrDefault "signkey" ""
let signKey = getBuildParamOrDefault "signKey" ""
let delaySign =
match signKey with
| s as string when s.Length > 0 -> Some(true)
Expand All @@ -94,6 +95,15 @@ Target "Build" (fun _ ->
|> ignore
)

//--------------------------------------------------------------------------------
// Build the solution

Target "BuildSignedConfig" (fun _ ->
!!"DotNetty.sln"
|> MSBuild "" "Rebuild" ["Configuration", "Signed"]
|> ignore
)

//--------------------------------------------------------------------------------
// Copy the build output to bin directory
//--------------------------------------------------------------------------------
Expand All @@ -113,8 +123,28 @@ Target "CopyOutput" (fun _ ->
|> List.iter copyOutput
)

//--------------------------------------------------------------------------------
// Copy the build output to bin directory
//--------------------------------------------------------------------------------

Target "ResignAssemblies" (fun _ ->
let reSignKey = getBuildParamOrDefault "reSignKey" ""
let copyOutput project =
let src = "src" @@ project @@ "bin" @@ "Release" @@ project + ".dll"
StrongName (fun x -> x) ("-Ra " + src + " " + reSignKey)
[ "DotNetty.Buffers"
"DotNetty.Common"
"DotNetty.Transport"
"DotNetty.Codecs"
"DotNetty.Handlers"
"DotNetty.Codecs.Mqtt"
]
|> List.iter copyOutput
)

Target "BuildRelease" DoNothing
Target "BuildReleaseMono" DoNothing
Target "BuildSigned" DoNothing

//--------------------------------------------------------------------------------
// Tests targets
Expand Down Expand Up @@ -145,9 +175,10 @@ module Nuget =
let getDependencies project =
match project with
| "DotNetty.Common" -> []
| "DotNetty.Transport" -> ["DotNetty.Buffers", release.NugetVersion]
| "DotNetty.Codecs" -> ["DotNetty.Transport", release.NugetVersion]
| codecs when (codecs.StartsWith("DotNetty.Codecs.")) -> ["DotNetty.Codecs", release.NugetVersion]
| "DotNetty.Transport" -> ["DotNetty.Common", release.NugetVersion] @ ["DotNetty.Buffers", release.NugetVersion]
| "DotNetty.Codecs" -> ["DotNetty.Common", release.NugetVersion] @ ["DotNetty.Buffers", release.NugetVersion] @ ["DotNetty.Transport", release.NugetVersion]
| "DotNetty.Handlers" -> ["DotNetty.Common", release.NugetVersion] @ ["DotNetty.Buffers", release.NugetVersion] @ ["DotNetty.Transport", release.NugetVersion] @ ["DotNetty.Codecs", release.NugetVersion]
| codecs when (codecs.StartsWith("DotNetty.Codecs.")) -> ["DotNetty.Common", release.NugetVersion] @ ["DotNetty.Buffers", release.NugetVersion] @ ["DotNetty.Transport", release.NugetVersion] @ ["DotNetty.Codecs", release.NugetVersion]
| _ -> ["DotNetty.Common", release.NugetVersion]

// used to add -pre suffix to pre-release packages
Expand Down Expand Up @@ -288,6 +319,10 @@ Target "CreateNuget" <| fun _ ->
Target "PublishNuget" <| fun _ ->
publishNugetPackages()

Target "NugetSigned" <| fun _ ->
createNugetPackages()
publishNugetPackages()

//--------------------------------------------------------------------------------
// Help
//--------------------------------------------------------------------------------
Expand Down Expand Up @@ -359,11 +394,15 @@ Target "All" DoNothing
// build dependencies
"Clean" ==> "AssemblyInfo" ==> "RestorePackages" ==> "Build" ==> "CopyOutput" ==> "BuildRelease"

// build dependencies
"Clean" ==> "AssemblyInfo" ==> "RestorePackages" ==> "BuildSignedConfig" ==> "ResignAssemblies" ==> "BuildSigned"

// tests dependencies
"CleanTests" ==> "RunTests"
"CleanNuget" ==> "BuildRelease" ==> "Nuget"

// nuget dependencies
"CleanNuget" ==> "BuildRelease" ==> "Nuget"
"CleanNuget" ==> "BuildSigned" ==> "NugetSigned"

"BuildRelease" ==> "All"
"RunTests" ==> "All"
Expand Down
9 changes: 9 additions & 0 deletions src/DotNetty.Codecs.Mqtt/DotNetty.Codecs.Mqtt.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,15 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Signed|AnyCPU'">
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE;NOTEST</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
Expand Down
6 changes: 5 additions & 1 deletion src/DotNetty.Codecs.Mqtt/Properties/Friends.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,8 @@

using System.Runtime.CompilerServices;

[assembly: InternalsVisibleTo("DotNetty.Codecs.Mqtt.Tests")]
#if !NOTEST

[assembly: InternalsVisibleTo("DotNetty.Codecs.Mqtt.Tests")]

#endif
9 changes: 9 additions & 0 deletions src/DotNetty.Common/DotNetty.Common.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,15 @@
<CodeContractsReferenceAssembly>%28none%29</CodeContractsReferenceAssembly>
<CodeContractsAnalysisWarningLevel>0</CodeContractsAnalysisWarningLevel>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Signed|AnyCPU'">
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE;NOTEST</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
Expand Down
5 changes: 4 additions & 1 deletion src/DotNetty.Common/Properties/Friends.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,8 @@

using System.Runtime.CompilerServices;

[assembly:InternalsVisibleTo("DotNetty.Common.Tests")]
#if !NOTEST

[assembly: InternalsVisibleTo("DotNetty.Common.Tests")]

#endif
9 changes: 9 additions & 0 deletions src/DotNetty.Transport/DotNetty.Transport.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,15 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Signed|AnyCPU'">
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE;NOTEST</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
Expand Down
5 changes: 4 additions & 1 deletion src/DotNetty.Transport/Properties/Friends.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,8 @@

using System.Runtime.CompilerServices;

[assembly:InternalsVisibleTo("DotNetty.Transport.Tests")]
#if !NOTEST

[assembly: InternalsVisibleTo("DotNetty.Transport.Tests")]

#endif

0 comments on commit 13863df

Please sign in to comment.