@@ -38,7 +38,7 @@ Task("Test")
38
38
. IsDependentOn ( "Build" )
39
39
. Does < BuildParameters > ( ( parameters ) =>
40
40
{
41
- var frameworks = new [ ] { parameters . CoreFxVersion21 , parameters . FullFxVersion } ;
41
+ var frameworks = new [ ] { parameters . CoreFxVersion21 , parameters . CoreFxVersion30 , parameters . FullFxVersion472 } ;
42
42
var testResultsPath = parameters . Paths . Directories . TestResultsOutput ;
43
43
44
44
foreach ( var framework in frameworks )
@@ -71,7 +71,7 @@ Task("Test")
71
71
CoverletOutputName = $ "{ projectName } .coverage.xml"
72
72
} ;
73
73
74
- if ( IsRunningOnUnix ( ) && string . Equals ( framework , parameters . FullFxVersion ) )
74
+ if ( IsRunningOnUnix ( ) && string . Equals ( framework , parameters . FullFxVersion472 ) )
75
75
{
76
76
settings . Filter = "TestCategory!=NoMono" ;
77
77
}
@@ -119,70 +119,83 @@ Task("Test")
119
119
#endregion
120
120
121
121
#region Pack
122
-
123
- Task ( "Copy-Files" )
122
+ Task ( "Pack-Prepare" )
124
123
. IsDependentOn ( "Test" )
125
124
. Does < BuildParameters > ( ( parameters ) =>
126
125
{
127
- // .NET Core
128
- var coreFxDir = parameters . Paths . Directories . ArtifactsBinCoreFx21 . Combine ( "tools" ) ;
129
- DotNetCorePublish ( "./src/GitVersionExe/GitVersionExe.csproj" , new DotNetCorePublishSettings
126
+ // publish single file for all native runtimes (self contained)
127
+ foreach ( var runtime in parameters . NativeRuntimes )
130
128
{
131
- Framework = parameters . CoreFxVersion21 ,
132
- NoRestore = false ,
133
- Configuration = parameters . Configuration ,
134
- OutputDirectory = coreFxDir ,
135
- MSBuildSettings = parameters . MSBuildSettings
136
- } ) ;
129
+ var runtimeName = runtime . Value ;
137
130
138
- // Copy license & Copy GitVersion.XML (since publish does not do this anymore)
139
- CopyFileToDirectory ( "./LICENSE" , coreFxDir ) ;
140
- CopyFileToDirectory ( $ "./src/GitVersionExe/bin/{ parameters . Configuration } /{ parameters . CoreFxVersion21 } /GitVersion.xml", coreFxDir ) ;
131
+ var settings = new DotNetCorePublishSettings
132
+ {
133
+ Framework = parameters . CoreFxVersion30 ,
134
+ Runtime = runtimeName ,
135
+ NoRestore = false ,
136
+ Configuration = parameters . Configuration ,
137
+ OutputDirectory = parameters . Paths . Directories . Native . Combine ( runtimeName ) ,
138
+ MSBuildSettings = parameters . MSBuildSettings ,
139
+ } ;
141
140
142
- // .NET Framework
143
- DotNetCorePublish ( "./src/GitVersionExe/GitVersionExe.csproj" , new DotNetCorePublishSettings
144
- {
145
- Framework = parameters . FullFxVersion ,
146
- NoBuild = true ,
147
- NoRestore = false ,
148
- Configuration = parameters . Configuration ,
149
- OutputDirectory = parameters . Paths . Directories . ArtifactsBinFullFx ,
150
- MSBuildSettings = parameters . MSBuildSettings
151
- } ) ;
141
+ settings . ArgumentCustomization =
142
+ arg => arg
143
+ . Append ( "/p:PublishSingleFile=true" )
144
+ . Append ( "/p:PublishTrimmed=true" )
145
+ . Append ( "/p:IncludeSymbolsInSingleFile= true" ) ;
146
+
147
+ DotNetCorePublish ( "./src/GitVersionExe/GitVersionExe.csproj" , settings ) ;
148
+ }
149
+
150
+ var frameworks = new [ ] { parameters . CoreFxVersion21 , parameters . CoreFxVersion30 , parameters . FullFxVersion472 } ;
152
151
153
- DotNetCorePublish ( "./src/GitVersionTask/GitVersionTask.csproj" , new DotNetCorePublishSettings
152
+ // publish Framework-dependent deployment
153
+ foreach ( var framework in frameworks )
154
154
{
155
- Framework = parameters . FullFxVersion ,
156
- NoBuild = true ,
157
- NoRestore = true ,
158
- Configuration = parameters . Configuration ,
159
- MSBuildSettings = parameters . MSBuildSettings
160
- } ) ;
155
+ var settings = new DotNetCorePublishSettings
156
+ {
157
+ Framework = framework ,
158
+ NoRestore = false ,
159
+ Configuration = parameters . Configuration ,
160
+ OutputDirectory = parameters . Paths . Directories . ArtifactsBin . Combine ( framework ) ,
161
+ MSBuildSettings = parameters . MSBuildSettings ,
162
+ } ;
163
+
164
+ DotNetCorePublish ( "./src/GitVersionExe/GitVersionExe.csproj" , settings ) ;
165
+ }
166
+
167
+ frameworks = new [ ] { parameters . CoreFxVersion21 , parameters . FullFxVersion472 } ;
161
168
162
- // .NET Core
163
- DotNetCorePublish ( "./src/GitVersionTask/GitVersionTask.csproj" , new DotNetCorePublishSettings
169
+ // MsBuild Task
170
+ foreach ( var framework in frameworks )
164
171
{
165
- Framework = parameters . CoreFxVersion21 ,
166
- NoBuild = true ,
167
- NoRestore = true ,
168
- Configuration = parameters . Configuration ,
169
- MSBuildSettings = parameters . MSBuildSettings
170
- } ) ;
171
- var ilMergeDir = parameters . Paths . Directories . ArtifactsBinFullFxILMerge ;
172
- var portableDir = parameters . Paths . Directories . ArtifactsBinFullFxPortable . Combine ( "tools" ) ;
173
- var cmdlineDir = parameters . Paths . Directories . ArtifactsBinFullFxCmdline . Combine ( "tools" ) ;
174
-
175
- // Portable
176
- PublishILRepackedGitVersionExe ( true , ilMergeDir , portableDir , parameters ) ;
177
- // Commandline
178
- PublishILRepackedGitVersionExe ( false , ilMergeDir , cmdlineDir , parameters ) ;
179
-
180
- // Ruby Gem
181
- var gemPath = new DirectoryPath ( "./src/GitVersionRubyGem/bin" ) ;
182
- EnsureDirectoryExists ( gemPath ) ;
183
- CopyFileToDirectory ( portableDir + "/" + "LibGit2Sharp.dll.config" , gemPath ) ;
184
- CopyFileToDirectory ( portableDir + "/" + "GitVersion.exe" , gemPath ) ;
185
- CopyDirectory ( portableDir . Combine ( "lib" ) , gemPath . Combine ( "lib" ) ) ;
172
+ DotNetCorePublish ( "./src/GitVersionTask/GitVersionTask.csproj" , new DotNetCorePublishSettings
173
+ {
174
+ Framework = framework ,
175
+ Configuration = parameters . Configuration ,
176
+ MSBuildSettings = parameters . MSBuildSettings
177
+ } ) ;
178
+ }
179
+
180
+ var sourceDir = parameters . Paths . Directories . Native . Combine ( parameters . NativeRuntimes [ PlatformFamily . Windows ] ) ;
181
+ var sourceFiles = GetFiles ( sourceDir + "/*.*" ) ;
182
+
183
+ // RubyGem
184
+ var gemDir = new DirectoryPath ( "./src/GitVersionRubyGem/bin" ) ;
185
+ EnsureDirectoryExists ( gemDir ) ;
186
+ CopyFiles ( sourceFiles , gemDir ) ;
187
+
188
+ // Cmdline and Portable
189
+ var cmdlineDir = parameters . Paths . Directories . ArtifactsBinCmdline . Combine ( "tools" ) ;
190
+ var portableDir = parameters . Paths . Directories . ArtifactsBinPortable . Combine ( "tools" ) ;
191
+
192
+ EnsureDirectoryExists ( cmdlineDir ) ;
193
+ EnsureDirectoryExists ( portableDir ) ;
194
+
195
+ CopyFiles ( sourceFiles , cmdlineDir ) ;
196
+
197
+ sourceFiles += GetFiles ( "./nuspec/*.ps1" ) + GetFiles ( "./nuspec/*.txt" ) ;
198
+ CopyFiles ( sourceFiles , portableDir ) ;
186
199
} ) ;
187
200
188
201
Task ( "Pack-Vsix" )
@@ -204,7 +217,6 @@ Task("Pack-Vsix")
204
217
UpdateTaskVersion ( new FilePath ( workDir + "/GitVersionTask/task.json" ) , taskId , parameters . Version . GitVersion ) ;
205
218
206
219
// build and pack
207
-
208
220
var settings = new TfxExtensionCreateSettings
209
221
{
210
222
ToolPath = workDir + "/node_modules/.bin/" + ( parameters . IsRunningOnWindows ? "tfx.cmd" : "tfx" ) ,
@@ -217,7 +229,7 @@ Task("Pack-Vsix")
217
229
} ) ;
218
230
219
231
Task ( "Pack-Gem" )
220
- . IsDependentOn ( "Copy-Files " )
232
+ . IsDependentOn ( "Pack-Prepare " )
221
233
. Does < BuildParameters > ( ( parameters ) =>
222
234
{
223
235
var workDir = "./src/GitVersionRubyGem" ;
@@ -237,7 +249,7 @@ Task("Pack-Gem")
237
249
} ) ;
238
250
239
251
Task ( "Pack-Nuget" )
240
- . IsDependentOn ( "Copy-Files " )
252
+ . IsDependentOn ( "Pack-Prepare " )
241
253
. Does < BuildParameters > ( ( parameters ) =>
242
254
{
243
255
foreach ( var package in parameters . Packages . Nuget )
@@ -263,8 +275,6 @@ Task("Pack-Nuget")
263
275
{
264
276
Configuration = parameters . Configuration ,
265
277
OutputDirectory = parameters . Paths . Directories . NugetRoot ,
266
- NoBuild = true ,
267
- NoRestore = true ,
268
278
MSBuildSettings = parameters . MSBuildSettings
269
279
} ;
270
280
@@ -278,41 +288,38 @@ Task("Pack-Nuget")
278
288
Task ( "Pack-Chocolatey" )
279
289
. WithCriteria < BuildParameters > ( ( context , parameters ) => parameters . IsRunningOnWindows , "Pack-Chocolatey works only on Windows agents." )
280
290
. WithCriteria < BuildParameters > ( ( context , parameters ) => parameters . IsMainBranch , "Pack-Chocolatey works only for main branch." )
281
- . IsDependentOn ( "Copy-Files " )
291
+ . IsDependentOn ( "Pack-Prepare " )
282
292
. Does < BuildParameters > ( ( parameters ) =>
283
293
{
284
294
foreach ( var package in parameters . Packages . Chocolatey )
285
295
{
286
296
if ( FileExists ( package . NuspecPath ) ) {
287
297
var artifactPath = MakeAbsolute ( parameters . PackagesBuildMap [ package . Id ] ) . FullPath ;
288
298
289
- var files = GetFiles ( artifactPath + "/**/*.*" )
290
- . Select ( file => new ChocolateyNuSpecContent { Source = file . FullPath , Target = file . FullPath . Replace ( artifactPath , "" ) } ) ;
291
- var txtFiles = ( GetFiles ( "./nuspec/*.txt" ) + GetFiles ( "./nuspec/*.ps1" ) )
292
- . Select ( file => new ChocolateyNuSpecContent { Source = file . FullPath , Target = file . GetFilename ( ) . ToString ( ) } ) ;
293
-
294
- ChocolateyPack ( package . NuspecPath , new ChocolateyPackSettings {
299
+ var chocolateySettings = new ChocolateyPackSettings
300
+ {
295
301
Verbose = true ,
296
302
Version = parameters . Version . SemVersion ,
297
303
OutputDirectory = parameters . Paths . Directories . NugetRoot ,
298
- Files = files . Concat ( txtFiles ) . ToArray ( )
299
- } ) ;
304
+ Files = GetFiles ( artifactPath + "/**/*.*" )
305
+ . Select ( file => new ChocolateyNuSpecContent { Source = file . FullPath , Target = file . FullPath . Replace ( artifactPath , "" ) } )
306
+ . ToArray ( )
307
+ } ;
308
+ ChocolateyPack ( package . NuspecPath , chocolateySettings ) ;
300
309
}
301
310
}
302
311
} ) ;
303
312
304
313
Task ( "Zip-Files" )
305
- . IsDependentOn ( "Copy-Files " )
314
+ . IsDependentOn ( "Pack-Prepare " )
306
315
. Does < BuildParameters > ( ( parameters ) =>
307
316
{
308
- // .NET Framework
309
- var cmdlineDir = parameters . Paths . Directories . ArtifactsBinFullFxCmdline . Combine ( "tools" ) ;
310
- var fullFxFiles = GetFiles ( cmdlineDir . FullPath + "/**/*" ) ;
311
- Zip ( cmdlineDir , parameters . Paths . Files . ZipArtifactPathDesktop , fullFxFiles ) ;
312
-
313
- // .NET Core
314
- var coreFxDir = parameters . Paths . Directories . ArtifactsBinCoreFx21 . Combine ( "tools" ) ;
315
- var coreclrFiles = GetFiles ( coreFxDir . FullPath + "/**/*" ) ;
316
- Zip ( coreFxDir , parameters . Paths . Files . ZipArtifactPathCoreClr , coreclrFiles ) ;
317
+ foreach ( var runtime in parameters . NativeRuntimes )
318
+ {
319
+ var sourceDir = parameters . Paths . Directories . Native . Combine ( runtime . Value ) ;
320
+ var fileName = $ "gitversion-{ runtime . Key } -{ parameters . Version . SemVersion } .tar.gz". ToLower ( ) ;
321
+ var tarFile = parameters . Paths . Directories . Artifacts . CombineWithFilePath ( fileName ) ;
322
+ GZipCompress ( sourceDir , tarFile ) ;
323
+ }
317
324
} ) ;
318
325
#endregion
0 commit comments