From 328a9193504fc96f1079dfaecc0bb55eb42c86f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=20Wyman=20=E2=88=9E?= Date: Thu, 5 Jul 2018 14:04:07 -0400 Subject: [PATCH] build: consolidate signing in installer project. Consolodate all signing operations in the Installer project. Signing take a long time, stretching builds which take a minute or two to complete into a build which takes tens of minutes to complete. The majority of the added time is due to signing request submission overhead. Therefore, batching requests for signing minimizes the additional time. Correctly consolidating signing means adding a new Components sub-project to the Installer project. Given that signing submissions can only happen once per project, and that the individual binaries need to be signed prior to 'setup.exe' and 'gcmw-*.zip' files can be generated; a prior signing submission must happen - thus the Components project. Additionally, there is no longer a reason to retain the "MicroBuild" dependencies in the other projects, no a reason to include the "MicroBuild" targets and props. --- .../Test/Bitbucket.Authentication.Test.csproj | 5 +- Bitbucket.Authentication/Test/app.config | 11 + Bitbucket.Authentication/Test/packages.config | 2 +- Cli/Askpass/Cli-Askpass.csproj | 16 +- Cli/Askpass/packages.config | 1 - Cli/Manager/Cli-Manager.csproj | 17 +- Cli/Manager/packages.config | 1 - GitCredentialManager.sln | 5 - Installer/Components.proj | 154 +++++++++++ Installer/Installer.proj | 241 +++++++++--------- ...alStudioTeamServices.Authentication.nuspec | 4 +- Installer/packages.config | 1 + .../Src/Microsoft.Alm.Authentication.csproj | 15 +- .../Src/packages.config | 1 - ...alStudioTeamServices.Authentication.csproj | 49 +--- .../Src/packages.config | 2 - vsts-tt.yml | 12 +- 17 files changed, 314 insertions(+), 223 deletions(-) create mode 100644 Bitbucket.Authentication/Test/app.config create mode 100644 Installer/Components.proj rename {VisualStudioTeamServices.Authentication/Src => Installer}/VisualStudioTeamServices.Authentication.nuspec (82%) diff --git a/Bitbucket.Authentication/Test/Bitbucket.Authentication.Test.csproj b/Bitbucket.Authentication/Test/Bitbucket.Authentication.Test.csproj index ddcfa0e..c06f21f 100644 --- a/Bitbucket.Authentication/Test/Bitbucket.Authentication.Test.csproj +++ b/Bitbucket.Authentication/Test/Bitbucket.Authentication.Test.csproj @@ -29,8 +29,8 @@ - - ..\..\packages\System.Threading.Tasks.Extensions.4.3.0\lib\portable-net45+win8+wp8+wpa81\System.Threading.Tasks.Extensions.dll + + ..\..\packages\System.Threading.Tasks.Extensions.4.4.0\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll ..\..\packages\System.ValueTuple.4.4.0\lib\net461\System.ValueTuple.dll @@ -73,6 +73,7 @@ xunit.runner.json Always + diff --git a/Bitbucket.Authentication/Test/app.config b/Bitbucket.Authentication/Test/app.config new file mode 100644 index 0000000..7d8c922 --- /dev/null +++ b/Bitbucket.Authentication/Test/app.config @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Bitbucket.Authentication/Test/packages.config b/Bitbucket.Authentication/Test/packages.config index 46fdfe4..776e83b 100644 --- a/Bitbucket.Authentication/Test/packages.config +++ b/Bitbucket.Authentication/Test/packages.config @@ -3,7 +3,7 @@ - + diff --git a/Cli/Askpass/Cli-Askpass.csproj b/Cli/Askpass/Cli-Askpass.csproj index 1db5021..feb2353 100644 --- a/Cli/Askpass/Cli-Askpass.csproj +++ b/Cli/Askpass/Cli-Askpass.csproj @@ -1,14 +1,12 @@  - Properties git-askpass true - - + Exe {19770407-B33A-4EBE-92B8-04C93F43CAE0} Cli-Askpass @@ -21,7 +19,6 @@ ..\..\Assets\gcmicon.ico $(MSBuildThisFileDirectory) $(ProjectDir)$(OutputPath) - $(OutputPath)\$(AssemblyName).exe @@ -68,12 +65,8 @@ - - false - - - false - + + @@ -98,9 +91,6 @@ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - \ No newline at end of file diff --git a/Cli/Askpass/packages.config b/Cli/Askpass/packages.config index e0b8a96..1d3adae 100644 --- a/Cli/Askpass/packages.config +++ b/Cli/Askpass/packages.config @@ -1,5 +1,4 @@  - \ No newline at end of file diff --git a/Cli/Manager/Cli-Manager.csproj b/Cli/Manager/Cli-Manager.csproj index 29a51e7..ad681e9 100644 --- a/Cli/Manager/Cli-Manager.csproj +++ b/Cli/Manager/Cli-Manager.csproj @@ -1,13 +1,12 @@  - Properties git-credential-manager true - + Exe {19770407-63D4-40A8-A9DF-F1C4B473308A} Cli-Manager @@ -20,7 +19,6 @@ ..\..\Assets\gcmicon.ico $(MSBuildThisFileDirectory) $(ProjectDir)$(OutputPath) - $(OutputPath)\$(AssemblyName).exe @@ -56,15 +54,7 @@ false - - false - - - - - Microsoft - false - + @@ -73,9 +63,6 @@ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - \ No newline at end of file diff --git a/Cli/Manager/packages.config b/Cli/Manager/packages.config index 5966b57..644ec00 100644 --- a/Cli/Manager/packages.config +++ b/Cli/Manager/packages.config @@ -1,6 +1,5 @@  - diff --git a/GitCredentialManager.sln b/GitCredentialManager.sln index bbd473f..a01c2f6 100644 --- a/GitCredentialManager.sln +++ b/GitCredentialManager.sln @@ -46,8 +46,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GitHub.Authentication.Test" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GcmParentWindowTest", "GcmParentWindowTest\GcmParentWindowTest.csproj", "{2F110EEF-14BA-4324-9DA4-C7D16469B064}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Installer", "Installer\Installer.proj", "{19770407-3808-4B17-9EE0-21DD3468F875}" -EndProject Global GlobalSection(SharedMSBuildProjectFiles) = preSolution Shared\Win32\Microsoft.Alm.Win32.projitems*{19770407-37cd-41ac-b50c-cf885bbce344}*SharedItemsImports = 13 @@ -116,9 +114,6 @@ Global {2F110EEF-14BA-4324-9DA4-C7D16469B064}.Debug|Any CPU.Build.0 = Debug|Any CPU {2F110EEF-14BA-4324-9DA4-C7D16469B064}.Release|Any CPU.ActiveCfg = Debug|Any CPU {2F110EEF-14BA-4324-9DA4-C7D16469B064}.Release|Any CPU.Build.0 = Debug|Any CPU - {19770407-3808-4B17-9EE0-21DD3468F875}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {19770407-3808-4B17-9EE0-21DD3468F875}.Release|Any CPU.ActiveCfg = Release|Any CPU - {19770407-3808-4B17-9EE0-21DD3468F875}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Installer/Components.proj b/Installer/Components.proj new file mode 100644 index 0000000..a2db7c1 --- /dev/null +++ b/Installer/Components.proj @@ -0,0 +1,154 @@ + + + + + + + + {19770407-1214-0415-1230-21DD3468F875} + $(MSBuildProjectDirectory) + GCMW-Components + v4.6.2 + + + + Debug + Any CPU + $([System.IO.Directory]::GetParent($(ProjectDir))) + $(SolutionDir)\Assets + $(SolutionDir)\Docs + + + + bin\Debug + bin\Release + $(ProjectDir)\obj + + + $(IntermediateOutputPath) + + + + + + {19770407-B33A-4EBE-92B8-04C93F43CAE0} + Cli-Askpass + + + {19770407-63D4-40A8-A9DF-F1C4B473308A} + Cli-Manager + + + {EE663736-5BAD-4CA6-A4F8-99978925AD8A} + Bitbucket.Authentication + + + {CF306116-BBF0-4CC7-AFCE-A506AC4752CB} + GitHub.Authentication + + + {19770407-B493-459D-BB4F-04FBEFB1BA13} + Microsoft.Alm.Authentication + + + {19770407-D7D8-4A37-914C-F552FF4B90D4} + VisualStudioTeamServices.Authentication + + + + + + + Microsoft + + + Microsoft + + + Microsoft + + + Microsoft + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + + + + + + \ No newline at end of file diff --git a/Installer/Installer.proj b/Installer/Installer.proj index 7ad46df..bf871c5 100644 --- a/Installer/Installer.proj +++ b/Installer/Installer.proj @@ -1,8 +1,11 @@  - - - - + + + + + {19770407-3808-4B17-9EE0-21DD3468F875} @@ -10,13 +13,15 @@ Installer v4.6.2 + Debug - Any CPU + Any CPU $([System.IO.Directory]::GetParent($(ProjectDir))) $(SolutionDir)\Assets $(SolutionDir)\Docs + bin\Debug bin\Release @@ -24,154 +29,158 @@ $(SolutionDir)\Deploy $(OutputPath) + $([System.IO.File]::ReadAllText($(SolutionDir)\Cli\Manager\Properties\AssemblyInfo.cs)) $([System.IO.File]::ReadAllText($(SolutionDir)\VisualStudioTeamServices.Authentication\Src\Properties\AssemblyInfo.cs)) ^\s*\[assembly\s*:\s*AssemblyVersion\s*\(\s*\s*"(\d+\.\d+\.\d+)\.?\d*\s*"\s*\) $([System.Text.RegularExpressions.Regex]::Match($(GcmProps), $(Pattern), System.Text.RegularExpressions.RegexOptions.Multiline).Groups[1].Value) $([System.Text.RegularExpressions.Regex]::Match($(PkgProps), $(Pattern), System.Text.RegularExpressions.RegexOptions.Multiline).Groups[1].Value) + VisualStudioTeamServices.Authentication + + ^\s*\[assembly: AssemblyDescription\s*\(\s*"\s*([^"]+)\s*"\s*\) + $([System.Text.RegularExpressions.Regex]::Match($(PkgProps), $(Pattern), System.Text.RegularExpressions.RegexOptions.Multiline).Groups[1].Value) + ^\s*\[assembly: AssemblyProduct\s*\(\s*"\s*([^"]+)\s*"\s*\) + $([System.Text.RegularExpressions.Regex]::Match($(PkgProps), $(Pattern), System.Text.RegularExpressions.RegexOptions.Multiline).Groups[1].Value) + ^\s*\[assembly: AssemblyTitle\s*\(\s*"\s*([^"]+)\s*"\s*\) + $([System.Text.RegularExpressions.Regex]::Match($(PkgProps), $(Pattern), System.Text.RegularExpressions.RegexOptions.Multiline).Groups[1].Value) + $(OutputPath)\GCMW-$(GcmVersion).exe $(OutputPath)\VisualStudioTeamServices.Authentication.$(PkgVersion).nupkg + $(OutputPath)\gcmw-v$(GcmVersion).zip + + - - {19770407-B33A-4EBE-92B8-04C93F43CAE0} - Cli-Askpass - - - {19770407-63D4-40A8-A9DF-F1C4B473308A} - Cli-Manager - - - {EE663736-5BAD-4CA6-A4F8-99978925AD8A} - Bitbucket.Authentication - - - {CF306116-BBF0-4CC7-AFCE-A506AC4752CB} - GitHub.Authentication - - - {19770407-B493-459D-BB4F-04FBEFB1BA13} - Microsoft.Alm.Authentication - - - {19770407-D7D8-4A37-914C-F552FF4B90D4} - VisualStudioTeamServices.Authentication + + {19770407-1214-0415-1230-21DD3468F875} + GCMW-Components + + - - false - - - false - - - false - - - false - - - - - false - - - false - - - false - - - false - - - false - - - false - - - false - - - false - - - false - - - - - Microsoft - false - Microsoft - false Nuget - false + - - false - + + - - - + + + + + + + + - + + + + + + + + + + + + + + + + nuget.exe + + + -unsigned + $(OutputPath.TrimEnd('\')) + + + + ..\packages\NuGet.CommandLine.4.6.2\tools\NuGet.exe + + + - - false - - - false - - - false - - - false - - + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + - - + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - - - - + + + + + + + - + + - - + + + \ No newline at end of file diff --git a/VisualStudioTeamServices.Authentication/Src/VisualStudioTeamServices.Authentication.nuspec b/Installer/VisualStudioTeamServices.Authentication.nuspec similarity index 82% rename from VisualStudioTeamServices.Authentication/Src/VisualStudioTeamServices.Authentication.nuspec rename to Installer/VisualStudioTeamServices.Authentication.nuspec index 8d56191..c188d88 100644 --- a/VisualStudioTeamServices.Authentication/Src/VisualStudioTeamServices.Authentication.nuspec +++ b/Installer/VisualStudioTeamServices.Authentication.nuspec @@ -23,7 +23,7 @@ - - + + \ No newline at end of file diff --git a/Installer/packages.config b/Installer/packages.config index 6fd7a0f..38a0080 100644 --- a/Installer/packages.config +++ b/Installer/packages.config @@ -3,6 +3,7 @@ + diff --git a/Microsoft.Alm.Authentication/Src/Microsoft.Alm.Authentication.csproj b/Microsoft.Alm.Authentication/Src/Microsoft.Alm.Authentication.csproj index e82b91c..b5655fc 100644 --- a/Microsoft.Alm.Authentication/Src/Microsoft.Alm.Authentication.csproj +++ b/Microsoft.Alm.Authentication/Src/Microsoft.Alm.Authentication.csproj @@ -1,7 +1,6 @@  - Properties @@ -17,7 +16,6 @@ $(MSBuildThisFileDirectory) $(ProjectDir)$(OutputPath) - $(OutputPath)\$(AssemblyName).dll @@ -64,15 +62,7 @@ - - false - - - - - Microsoft - false - + @@ -81,9 +71,6 @@ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - \ No newline at end of file diff --git a/Microsoft.Alm.Authentication/Src/packages.config b/Microsoft.Alm.Authentication/Src/packages.config index 3bbbc7d..3394201 100644 --- a/Microsoft.Alm.Authentication/Src/packages.config +++ b/Microsoft.Alm.Authentication/Src/packages.config @@ -1,5 +1,4 @@  - \ No newline at end of file diff --git a/VisualStudioTeamServices.Authentication/Src/VisualStudioTeamServices.Authentication.csproj b/VisualStudioTeamServices.Authentication/Src/VisualStudioTeamServices.Authentication.csproj index 3887491..15f9271 100644 --- a/VisualStudioTeamServices.Authentication/Src/VisualStudioTeamServices.Authentication.csproj +++ b/VisualStudioTeamServices.Authentication/Src/VisualStudioTeamServices.Authentication.csproj @@ -1,12 +1,11 @@  - Properties VisualStudioTeamServices.Authentication - + Library {19770407-D7D8-4A37-914C-F552FF4B90D4} VisualStudioTeamServices.Authentication @@ -17,7 +16,6 @@ $(MSBuildThisFileDirectory) $(ProjectDir)$(OutputPath) - $(OutputPath)\$(AssemblyName).dll @@ -57,57 +55,14 @@ - - false - + - - - Microsoft - false - - - - - - $([System.IO.File]::ReadAllText('$(ProjectDir)\Properties\AssemblyInfo.cs')) - ^\s*\[assembly:\s*AssemblyVersion\s*\(\s*"\s*([^"]+)\s*"\s*\) - $([System.Text.RegularExpressions.Regex]::Match($(In), $(Pattern), System.Text.RegularExpressions.RegexOptions.Multiline).Groups[1].Value) - ^\s*\[assembly: AssemblyDescription\s*\(\s*"\s*([^"]+)\s*"\s*\) - $([System.Text.RegularExpressions.Regex]::Match($(In), $(Pattern), System.Text.RegularExpressions.RegexOptions.Multiline).Groups[1].Value) - ^\s*\[assembly: AssemblyProduct\s*\(\s*"\s*([^"]+)\s*"\s*\) - $([System.Text.RegularExpressions.Regex]::Match($(In), $(Pattern), System.Text.RegularExpressions.RegexOptions.Multiline).Groups[1].Value) - ^\s*\[assembly: AssemblyTitle\s*\(\s*"\s*([^"]+)\s*"\s*\) - $([System.Text.RegularExpressions.Regex]::Match($(In), $(Pattern), System.Text.RegularExpressions.RegexOptions.Multiline).Groups[1].Value) - - - - nuget.exe - - -unsigned - $(OutputPath.TrimEnd('\')) - - - ..\..\packages\NuGet.CommandLine.4.6.2\tools\NuGet.exe - - - - - - - - - This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - \ No newline at end of file diff --git a/VisualStudioTeamServices.Authentication/Src/packages.config b/VisualStudioTeamServices.Authentication/Src/packages.config index 235c068..40bf36f 100644 --- a/VisualStudioTeamServices.Authentication/Src/packages.config +++ b/VisualStudioTeamServices.Authentication/Src/packages.config @@ -1,7 +1,5 @@  - - \ No newline at end of file diff --git a/vsts-tt.yml b/vsts-tt.yml index 0af0a31..1dd7562 100644 --- a/vsts-tt.yml +++ b/vsts-tt.yml @@ -24,6 +24,12 @@ phases: restoreSolution: '$(Build.Solution)' verbosityRestore: 'quiet' + - task: NuGetCommand@2 + displayName: NuGet restore + inputs: + command: custom + arguments: restore '$(Build.SourcesDirectory)\$(Build.Target)' '-SolutionDirectory $(Build.SourcesDirectory)' + - ${{ parameters.MicrobuildSetup }} - task: MSBuild@1 @@ -53,19 +59,19 @@ phases: - task: PublishBuildArtifacts@1 displayName: 'Publish Artifact: Binary Log' continueOnError: true - condition: and(succeeded(), eq(variables['system.pullrequest.isfork'], false)) + condition: eq(variables['system.pullrequest.isfork'], false) inputs: pathtoPublish: '$(Build.SourcesDirectory)\gcmw-$(build.buildNumber).binlog' artifactName: '$(build.buildNumber).binlog' publishLocation: Container - task: PublishBuildArtifacts@1 - displayName: 'Publish Artifact: Deploy Folder' + displayName: 'Publish Artifact: Binaries' continueOnError: true condition: and(succeeded(), eq(variables['system.pullrequest.isfork'], false)) inputs: pathtoPublish: '$(Build.SourcesDirectory)\Deploy\' - artifactName: '$(Build.BuildNumber)-Artifacts' + artifactName: '$(Build.BuildNumber).output' publishLocation: Container - task: DeleteFiles@1