11// Install modules
2- #module nuget : ? package = Cake . DotNetTool . Module & version = 0.1 .0
2+ #module nuget : ? package = Cake . DotNetTool . Module & version = 0.2 .0
33
44// Install addins.
5- #addin "nuget:?package=Cake.Gitter&version=0.9 .0"
6- #addin "nuget:?package=Cake.Docker&version=0.9.6 "
7- #addin "nuget:?package=Cake.Npm&version=0.15 .0"
8- #addin "nuget:?package=Cake.Incubator&version=3 .0.0 "
5+ #addin "nuget:?package=Cake.Gitter&version=0.10 .0"
6+ #addin "nuget:?package=Cake.Docker&version=0.9.9 "
7+ #addin "nuget:?package=Cake.Npm&version=0.16 .0"
8+ #addin "nuget:?package=Cake.Incubator&version=4 .0.2 "
99#addin "nuget:?package=Cake.Json&version=3.0.0"
1010#addin "nuget:?package=Cake.Tfx&version=0.8.0"
1111#addin "nuget:?package=Cake.Gem&version=0.7.0"
1212#addin "nuget:?package=Cake.Coverlet&version=2.2.1"
1313#addin "nuget:?package=Cake.Codecov&version=0.5.0"
1414#addin "nuget:?package=Newtonsoft.Json&version=9.0.1"
15+ #addin "nuget:?package=xunit.assert&version=2.4.1"
1516
1617// Install tools.
17- #tool "nuget:?package=NUnit.ConsoleRunner&version=3.9.0"
18- #tool "nuget:?package=GitReleaseNotes&version=0.7.1"
18+ #tool "nuget:?package=NUnit.ConsoleRunner&version=3.10.0"
1919#tool "nuget:?package=ILRepack&version=2.0.16"
20- #tool "nuget:?package=Codecov&version=1.1 .0"
21- #tool "nuget:?package=nuget.commandline&version=4.9.2 "
20+ #tool "nuget:?package=Codecov&version=1.4 .0"
21+ #tool "nuget:?package=nuget.commandline&version=4.9.4 "
2222
2323// Install .NET Core Global tools.
2424#tool "dotnet:?package=GitReleaseManager.Tool&version=0.8.0"
2727#load "./build/parameters.cake"
2828#load "./build/utils.cake"
2929
30+ using Xunit;
3031//////////////////////////////////////////////////////////////////////
3132// PARAMETERS
3233//////////////////////////////////////////////////////////////////////
@@ -208,19 +209,19 @@ Task("Copy-Files")
208209 . Does < BuildParameters > ( ( parameters ) =>
209210{
210211 // .NET Core
211- var netCoreDir = parameters . Paths . Directories . ArtifactsBinNetCore . Combine ( "tools" ) ;
212+ var coreFxDir = parameters . Paths . Directories . ArtifactsBinCoreFx . Combine ( "tools" ) ;
212213 DotNetCorePublish ( "./src/GitVersionExe/GitVersionExe.csproj" , new DotNetCorePublishSettings
213214 {
214- Framework = parameters . NetCoreVersion ,
215+ Framework = parameters . CoreFxVersion ,
215216 NoRestore = true ,
216217 Configuration = parameters . Configuration ,
217- OutputDirectory = netCoreDir ,
218+ OutputDirectory = coreFxDir ,
218219 MSBuildSettings = parameters . MSBuildSettings
219220 } ) ;
220221
221222 // Copy license & Copy GitVersion.XML (since publish does not do this anymore)
222- CopyFileToDirectory ( "./LICENSE" , netCoreDir ) ;
223- CopyFileToDirectory ( $ "./src/GitVersionExe/bin/{ parameters . Configuration } /{ parameters . NetCoreVersion } /GitVersion.xml", netCoreDir ) ;
223+ CopyFileToDirectory ( "./LICENSE" , coreFxDir ) ;
224+ CopyFileToDirectory ( $ "./src/GitVersionExe/bin/{ parameters . Configuration } /{ parameters . CoreFxVersion } /GitVersion.xml", coreFxDir ) ;
224225
225226 // .NET 4.0
226227 DotNetCorePublish ( "./src/GitVersionExe/GitVersionExe.csproj" , new DotNetCorePublishSettings
@@ -233,14 +234,14 @@ Task("Copy-Files")
233234 MSBuildSettings = parameters . MSBuildSettings
234235 } ) ;
235236
236- var ilMergDir = parameters . Paths . Directories . ArtifactsBinFullFxILMerge ;
237+ var ilMergeDir = parameters . Paths . Directories . ArtifactsBinFullFxILMerge ;
237238 var portableDir = parameters . Paths . Directories . ArtifactsBinFullFxPortable . Combine ( "tools" ) ;
238239 var cmdlineDir = parameters . Paths . Directories . ArtifactsBinFullFxCmdline . Combine ( "tools" ) ;
239240
240241 // Portable
241- PublishILRepackedGitVersionExe ( true , parameters . Paths . Directories . ArtifactsBinFullFx , ilMergDir , portableDir , parameters . Configuration , parameters . FullFxVersion ) ;
242+ PublishILRepackedGitVersionExe ( true , parameters . Paths . Directories . ArtifactsBinFullFx , ilMergeDir , portableDir , parameters . Configuration , parameters . FullFxVersion ) ;
242243 // Commandline
243- PublishILRepackedGitVersionExe ( false , parameters . Paths . Directories . ArtifactsBinFullFx , ilMergDir , cmdlineDir , parameters . Configuration , parameters . FullFxVersion ) ;
244+ PublishILRepackedGitVersionExe ( false , parameters . Paths . Directories . ArtifactsBinFullFx , ilMergeDir , cmdlineDir , parameters . Configuration , parameters . FullFxVersion ) ;
244245
245246 // Vsix
246247 var tfsPath = new DirectoryPath ( "./src/GitVersionTfsTask/GitVersionTask" ) ;
@@ -250,9 +251,9 @@ Task("Copy-Files")
250251 CopyDirectory ( portableDir . Combine ( "lib" ) , tfsPath . Combine ( "lib" ) ) ;
251252
252253 // Vsix dotnet core
253- var tfsNetCorePath = new DirectoryPath ( "./src/GitVersionTfsTask/GitVersionNetCoreTask" ) ;
254- EnsureDirectoryExists ( tfsNetCorePath ) ;
255- CopyDirectory ( netCoreDir , tfsNetCorePath . Combine ( "netcore" ) ) ;
254+ var tfsCoreFxPath = new DirectoryPath ( "./src/GitVersionTfsTask/GitVersionNetCoreTask" ) ;
255+ EnsureDirectoryExists ( tfsCoreFxPath ) ;
256+ CopyDirectory ( coreFxDir , tfsCoreFxPath . Combine ( "netcore" ) ) ;
256257
257258 // Ruby Gem
258259 var gemPath = new DirectoryPath ( "./src/GitVersionRubyGem/bin" ) ;
@@ -398,9 +399,9 @@ Task("Zip-Files")
398399 Zip ( cmdlineDir , parameters . Paths . Files . ZipArtifactPathDesktop , fullFxFiles ) ;
399400
400401 // .NET Core
401- var netCoreDir = parameters . Paths . Directories . ArtifactsBinNetCore . Combine ( "tools" ) ;
402- var coreclrFiles = GetFiles ( netCoreDir . FullPath + "/**/*" ) ;
403- Zip ( netCoreDir , parameters . Paths . Files . ZipArtifactPathCoreClr , coreclrFiles ) ;
402+ var coreFxDir = parameters . Paths . Directories . ArtifactsBinCoreFx . Combine ( "tools" ) ;
403+ var coreclrFiles = GetFiles ( coreFxDir . FullPath + "/**/*" ) ;
404+ Zip ( coreFxDir , parameters . Paths . Files . ZipArtifactPathCoreClr , coreclrFiles ) ;
404405} ) ;
405406
406407Task( "Docker-Build" )
@@ -409,17 +410,45 @@ Task("Docker-Build")
409410 . IsDependentOn ( "Copy-Files" )
410411 . Does < BuildParameters > ( ( parameters ) =>
411412{
412- if ( parameters . IsRunningOnWindows )
413+ var images = parameters . IsRunningOnWindows
414+ ? parameters . Docker . Windows
415+ : parameters . IsRunningOnLinux
416+ ? parameters . Docker . Linux
417+ : Array . Empty < DockerImage > ( ) ;
418+
419+ foreach ( var dockerImage in images )
413420 {
414- DockerBuild ( "windows" , "nano" , "netcoreapp2.1" , parameters ) ;
415- DockerBuild ( "windows" , "windowsservercore" , "net472" , parameters ) ;
421+ DockerBuild ( dockerImage , parameters ) ;
416422 }
417- else if ( parameters . IsRunningOnLinux )
423+ } ) ;
424+
425+ Task ( "Docker-Test" )
426+ . WithCriteria < BuildParameters > ( ( context , parameters ) => ! parameters . IsRunningOnMacOS , "Docker can be tested only on Windows or Linux agents." )
427+ . WithCriteria < BuildParameters > ( ( context , parameters ) => parameters . IsStableRelease ( ) || parameters . IsPreRelease ( ) , "Docker-Test works only for releases." )
428+ . IsDependentOn ( "Docker-Build" )
429+ . Does < BuildParameters > ( ( parameters ) =>
430+ {
431+ var currentDir = MakeAbsolute ( Directory ( "." ) ) ;
432+ var containerDir = parameters . IsRunningOnWindows ? "c:/repo" : "/repo" ;
433+ var settings = new DockerContainerRunSettings
418434 {
419- DockerBuild ( "linux" , "debian" , "netcoreapp2.1" , parameters ) ;
420- DockerBuild ( "linux" , "debian" , "net472" , parameters ) ;
421- DockerBuild ( "linux" , "centos7" , "netcoreapp2.1" , parameters ) ;
422- DockerBuild ( "linux" , "fedora27" , "netcoreapp2.1" , parameters ) ;
435+ Rm = true ,
436+ Volume = new [ ] { $ "{ currentDir } :{ containerDir } " }
437+ } ;
438+
439+ var images = parameters . IsRunningOnWindows
440+ ? parameters . Docker . Windows
441+ : parameters . IsRunningOnLinux
442+ ? parameters . Docker . Linux
443+ : Array . Empty < DockerImage > ( ) ;
444+
445+ foreach ( var dockerImage in images )
446+ {
447+ var tags = GetDockerTags ( dockerImage , parameters ) ;
448+ foreach ( var tag in tags )
449+ {
450+ DockerTestRun ( settings , parameters , tag , containerDir ) ;
451+ }
423452 }
424453} ) ;
425454
@@ -585,7 +614,7 @@ Task("Publish-Tfs")
585614 } ;
586615
587616 TfxExtensionPublish ( parameters . Paths . Files . VsixOutputFilePath , settings ) ;
588- TfxExtensionPublish ( parameters . Paths . Files . VsixNetCoreOutputFilePath , settings ) ;
617+ TfxExtensionPublish ( parameters . Paths . Files . VsixCoreFxOutputFilePath , settings ) ;
589618} )
590619. OnError ( exception =>
591620{
@@ -628,6 +657,7 @@ Task("Publish-DockerHub")
628657 . WithCriteria < BuildParameters > ( ( context , parameters ) => parameters . IsRunningOnAzurePipeline , "Publish-DockerHub works only on AzurePipeline." )
629658 . WithCriteria < BuildParameters > ( ( context , parameters ) => parameters . IsStableRelease ( ) || parameters . IsPreRelease ( ) , "Publish-DockerHub works only for releases." )
630659 . IsDependentOn ( "Docker-Build" )
660+ . IsDependentOn ( "Docker-Test" )
631661 . Does < BuildParameters > ( ( parameters ) =>
632662{
633663 var username = parameters . Credentials . Docker . UserName ;
@@ -642,17 +672,15 @@ Task("Publish-DockerHub")
642672
643673 DockerLogin ( parameters . Credentials . Docker . UserName , parameters . Credentials . Docker . Password ) ;
644674
645- if ( parameters . IsRunningOnWindows )
646- {
647- DockerPush ( "windows" , "nano" , "netcoreapp2.1" , parameters ) ;
648- DockerPush ( "windows" , "windowsservercore" , "net472" , parameters ) ;
649- }
650- else if ( parameters . IsRunningOnLinux )
675+ var images = parameters . IsRunningOnWindows
676+ ? parameters . Docker . Windows
677+ : parameters . IsRunningOnLinux
678+ ? parameters . Docker . Linux
679+ : Array . Empty < DockerImage > ( ) ;
680+
681+ foreach ( var dockerImage in images )
651682 {
652- DockerPush ( "linux" , "debian" , "netcoreapp2.1" , parameters ) ;
653- DockerPush ( "linux" , "debian" , "net472" , parameters ) ;
654- DockerPush ( "linux" , "centos7" , "netcoreapp2.1" , parameters ) ;
655- DockerPush ( "linux" , "fedora27" , "netcoreapp2.1" , parameters ) ;
683+ DockerPush ( dockerImage , parameters ) ;
656684 }
657685
658686 DockerLogout ( ) ;
0 commit comments