@@ -15,8 +15,10 @@ static class Program
1515
1616 public static void Main ( string [ ] args )
1717 {
18- var buildNumber = Environment . GetEnvironmentVariable ( "TRAVIS_BUILD_NUMBER" ) ?? "0" ;
19- var versionSuffix = "build" + buildNumber . PadLeft ( 5 , '0' ) ;
18+ var buildNumber = GetBuildNumber ( ) ;
19+ var branch = GetBranch ( ) ;
20+ var commitHash = GetCommitHash ( ) ;
21+ var buildMetadata = $ "build.{ buildNumber } .{ branch } .{ commitHash } ";
2022 var apiKey = Environment . GetEnvironmentVariable ( "MYGET_API_KEY" ) ;
2123
2224 Target ( Clean , ( ) =>
@@ -27,7 +29,11 @@ public static void Main(string[] args)
2729 }
2830 } ) ;
2931
30- Target ( Build , ( ) => Run ( "dotnet" , "build src/SqlStreamStore.HAL.sln -c Release" ) ) ;
32+ Target (
33+ Build ,
34+ ( ) => Run (
35+ "dotnet" ,
36+ $ "build src/SqlStreamStore.HAL.sln -c Release /p:BuildMetadata={ buildMetadata } ") ) ;
3137
3238 Target (
3339 RunTests ,
@@ -38,30 +44,49 @@ public static void Main(string[] args)
3844
3945 Target (
4046 Pack ,
41- DependsOn ( Build ) ,
42- ( ) => Run ( "dotnet" ,
43- $ "pack src/SqlStreamStore.HAL -c Release -o ../../{ ArtifactsDir } --no-build --version-suffix { versionSuffix } ") ) ;
44-
45- Target ( Publish , DependsOn ( Pack ) , ( ) =>
46- {
47- var packagesToPush = Directory . GetFiles ( ArtifactsDir , "*.nupkg" , SearchOption . TopDirectoryOnly ) ;
48- Console . WriteLine ( $ "Found packages to publish: { string . Join ( "; " , packagesToPush ) } ") ;
49-
50- if ( string . IsNullOrWhiteSpace ( apiKey ) )
51- {
52- Console . WriteLine ( "MyGet API key not available. Packages will not be pushed." ) ;
53- return ;
54- }
47+ DependsOn ( Build ) ,
48+ ( ) => Run (
49+ "dotnet" ,
50+ $ "pack src/SqlStreamStore.HAL -c Release -o ../../{ ArtifactsDir } --no-build") ) ;
5551
56- foreach ( var packageToPush in packagesToPush )
57- {
58- Run ( "dotnet" ,
59- $ "nuget push { packageToPush } -s https://www.myget.org/F/sqlstreamstore/api/v3/index.json -k { apiKey } ") ;
60- }
61- } ) ;
52+ Target (
53+ Publish ,
54+ DependsOn ( Pack ) ,
55+ ( ) => {
56+ var packagesToPush = Directory . GetFiles ( ArtifactsDir , "*.nupkg" , SearchOption . TopDirectoryOnly ) ;
57+ Console . WriteLine ( $ "Found packages to publish: { string . Join ( "; " , packagesToPush ) } ") ;
58+
59+ if ( string . IsNullOrWhiteSpace ( apiKey ) )
60+ {
61+ Console . WriteLine ( "MyGet API key not available. Packages will not be pushed." ) ;
62+ return ;
63+ }
64+
65+ foreach ( var packageToPush in packagesToPush )
66+ {
67+ Run (
68+ "dotnet" ,
69+ $ "nuget push { packageToPush } -s https://www.myget.org/F/sqlstreamstore/api/v3/index.json -k { apiKey } ") ;
70+ }
71+ } ) ;
6272
6373 Target ( "default" , DependsOn ( Clean , RunTests , Publish ) ) ;
6474
6575 RunTargets ( args ) ;
6676 }
67- }
77+
78+ private static string GetBranch ( )
79+ => ( Environment . GetEnvironmentVariable ( "TRAVIS_PULL_REQUEST" ) ? . ToLower ( ) == "false"
80+ ? null
81+ : $ "pr-{ Environment . GetEnvironmentVariable ( "TRAVIS_PULL_REQUEST" ) } ")
82+ ?? Environment . GetEnvironmentVariable ( "TRAVIS_BRANCH" )
83+ ?? "none" ;
84+
85+ private static string GetCommitHash ( )
86+ => Environment . GetEnvironmentVariable ( "TRAVIS_PULL_REQUEST_SHA" )
87+ ?? Environment . GetEnvironmentVariable ( "TRAVIS_COMMIT" )
88+ ?? "none" ;
89+
90+ private static string GetBuildNumber ( )
91+ => ( Environment . GetEnvironmentVariable ( "TRAVIS_BUILD_NUMBER" ) ?? "0" ) . PadLeft ( 5 , '0' ) ;
92+ }
0 commit comments