1
- /* ****************************************
2
- Publishing workflow
3
- -------------------
4
-
5
- - Update CHANGELOG.md
6
- - Run a normal build with Cake
7
- - Push to devel and FF merge to master
8
- - Switch to master
9
- - Run a Publish build with Cake
10
- - Switch back to devel branch
11
- **************************************** */
12
-
13
- #addin "Cake.FileHelpers"
14
- #addin "Octokit"
15
- using Octokit ;
16
-
17
1
var target = Argument ( "target" , "Default" ) ;
18
- var configuration = Argument ( "configuration" , "Release" ) ;
19
- var isRunningOnUnix = IsRunningOnUnix ( ) ;
20
- var isRunningOnWindows = IsRunningOnWindows ( ) ;
21
- var isRunningOnAppVeyor = AppVeyor . IsRunningOnAppVeyor ;
22
- var isPullRequest = AppVeyor . Environment . PullRequest . IsPullRequest ;
23
- var buildNumber = AppVeyor . Environment . Build . Number ;
24
- var releaseNotes = ParseReleaseNotes ( "./CHANGELOG.md" ) ;
25
- var version = releaseNotes . Version . ToString ( ) ;
26
- var buildDir = Directory ( "./src/AngleSharp.Xml/bin" ) + Directory ( configuration ) ;
27
- var buildResultDir = Directory ( "./bin" ) + Directory ( version ) ;
28
- var nugetRoot = buildResultDir + Directory ( "nuget" ) ;
29
-
30
- // Initialization
31
- // ----------------------------------------
32
-
33
- Setup ( _ =>
2
+ var projectName = "AngleSharp.Xml" ;
3
+ var solutionName = "AngleSharp.Xml" ;
4
+ var frameworks = new Dictionary < String , String >
34
5
{
35
- Information ( "Building version {0} of AngleSharp.Xml." , version ) ;
36
- Information ( "For the publish target the following environment variables need to be set:" ) ;
37
- Information ( " NUGET_API_KEY, GITHUB_API_TOKEN" ) ;
38
- } ) ;
39
-
40
- // Tasks
41
- // ----------------------------------------
42
-
43
- Task ( "Clean" )
44
- . Does ( ( ) =>
45
- {
46
- CleanDirectories ( new DirectoryPath [ ] { buildDir , buildResultDir , nugetRoot } ) ;
47
- } ) ;
48
-
49
- Task ( "Restore-Packages" )
50
- . IsDependentOn ( "Clean" )
51
- . Does ( ( ) =>
52
- {
53
- NuGetRestore ( "./src/AngleSharp.Xml.sln" , new NuGetRestoreSettings
54
- {
55
- ToolPath = "tools/nuget.exe" ,
56
- } ) ;
57
- } ) ;
58
-
59
- Task ( "Build" )
60
- . IsDependentOn ( "Restore-Packages" )
61
- . Does ( ( ) =>
62
- {
63
- ReplaceRegexInFiles ( "./src/Directory.Build.props" , "(?<=<Version>)(.+?)(?=</Version>)" , version ) ;
64
- DotNetCoreBuild ( "./src/AngleSharp.Xml.sln" , new DotNetCoreBuildSettings
65
- {
66
- Configuration = configuration ,
67
- } ) ;
68
- } ) ;
69
-
70
- Task ( "Run-Unit-Tests" )
71
- . IsDependentOn ( "Build" )
72
- . Does ( ( ) =>
73
- {
74
- var settings = new DotNetCoreTestSettings
75
- {
76
- Configuration = configuration ,
77
- } ;
78
-
79
- if ( isRunningOnAppVeyor )
80
- {
81
- settings . TestAdapterPath = Directory ( "." ) ;
82
- settings . Logger = "Appveyor" ;
83
- // TODO Finds a way to exclude tests not allowed to run on appveyor
84
- // Not used in current code
85
- //settings.Where = "cat != ExcludeFromAppVeyor";
86
- }
87
-
88
- DotNetCoreTest ( "./src/AngleSharp.Xml.Tests/" , settings ) ;
89
- } ) ;
90
-
91
- Task ( "Copy-Files" )
92
- . IsDependentOn ( "Build" )
93
- . Does ( ( ) =>
94
- {
95
- var mapping = new Dictionary < String , String >
96
- {
97
- { "netstandard1.3" , "netstandard1.3" } ,
98
- } ;
99
-
100
- foreach ( var item in mapping )
101
- {
102
- var targetDir = nugetRoot + Directory ( "lib" ) + Directory ( item . Key ) ;
103
- CreateDirectory ( targetDir ) ;
104
- CopyFiles ( new FilePath [ ]
105
- {
106
- buildDir + Directory ( item . Value ) + File ( "AngleSharp.Xml.dll" ) ,
107
- buildDir + Directory ( item . Value ) + File ( "AngleSharp.Xml.xml" ) ,
108
- } , targetDir ) ;
109
- }
110
-
111
- CopyFiles ( new FilePath [ ] { "src/AngleSharp.Xml.nuspec" } , nugetRoot ) ;
112
- } ) ;
113
-
114
- Task ( "Create-Package" )
115
- . IsDependentOn ( "Copy-Files" )
116
- . Does ( ( ) =>
117
- {
118
- var nugetExe = GetFiles ( "./tools/**/nuget.exe" ) . FirstOrDefault ( )
119
- ?? ( isRunningOnAppVeyor ? GetFiles ( "C:\\ Tools\\ NuGet3\\ nuget.exe" ) . FirstOrDefault ( ) : null )
120
- ?? throw new InvalidOperationException ( "Could not find nuget.exe." ) ;
121
-
122
- var nuspec = nugetRoot + File ( "AngleSharp.Xml.nuspec" ) ;
123
-
124
- NuGetPack ( nuspec , new NuGetPackSettings
125
- {
126
- Version = version ,
127
- OutputDirectory = nugetRoot ,
128
- Symbols = false ,
129
- Properties = new Dictionary < String , String >
130
- {
131
- { "Configuration" , configuration } ,
132
- } ,
133
- } ) ;
134
- } ) ;
135
-
136
- Task ( "Publish-Package" )
137
- . IsDependentOn ( "Create-Package" )
138
- . IsDependentOn ( "Run-Unit-Tests" )
139
- . Does ( ( ) =>
140
- {
141
- var apiKey = EnvironmentVariable ( "NUGET_API_KEY" ) ;
142
-
143
- if ( String . IsNullOrEmpty ( apiKey ) )
144
- {
145
- throw new InvalidOperationException ( "Could not resolve the NuGet API key." ) ;
146
- }
147
-
148
- foreach ( var nupkg in GetFiles ( nugetRoot . Path . FullPath + "/*.nupkg" ) )
149
- {
150
- NuGetPush ( nupkg , new NuGetPushSettings
151
- {
152
- Source = "https://nuget.org/api/v2/package" ,
153
- ApiKey = apiKey ,
154
- } ) ;
155
- }
156
- } ) ;
157
-
158
- Task ( "Publish-Release" )
159
- . IsDependentOn ( "Publish-Package" )
160
- . IsDependentOn ( "Run-Unit-Tests" )
161
- . Does ( ( ) =>
162
- {
163
- var githubToken = EnvironmentVariable ( "GITHUB_API_TOKEN" ) ;
164
-
165
- if ( String . IsNullOrEmpty ( githubToken ) )
166
- {
167
- throw new InvalidOperationException ( "Could not resolve AngleSharp GitHub token." ) ;
168
- }
169
-
170
- var github = new GitHubClient ( new ProductHeaderValue ( "AngleSharpCakeBuild" ) )
171
- {
172
- Credentials = new Credentials ( githubToken ) ,
173
- } ;
174
-
175
- var newRelease = github . Repository . Release ;
176
- newRelease . Create ( "AngleSharp" , "AngleSharp.Xml" , new NewRelease ( "v" + version )
177
- {
178
- Name = version ,
179
- Body = String . Join ( Environment . NewLine , releaseNotes . Notes ) ,
180
- Prerelease = false ,
181
- TargetCommitish = "master" ,
182
- } ) . Wait ( ) ;
183
- } ) ;
184
-
185
- Task ( "Update-AppVeyor-Build-Number" )
186
- . WithCriteria ( ( ) => isRunningOnAppVeyor )
187
- . Does ( ( ) =>
188
- {
189
- var num = AppVeyor . Environment . Build . Number ;
190
- AppVeyor . UpdateBuildVersion ( $ "{ version } -{ num } ") ;
191
- } ) ;
192
-
193
- // Targets
194
- // ----------------------------------------
195
-
196
- Task ( "Package" )
197
- . IsDependentOn ( "Run-Unit-Tests" )
198
- . IsDependentOn ( "Create-Package" ) ;
199
-
200
- Task ( "Default" )
201
- . IsDependentOn ( "Package" ) ;
202
-
203
- Task ( "Publish" )
204
- . IsDependentOn ( "Publish-Package" )
205
- . IsDependentOn ( "Publish-Release" ) ;
206
-
207
- Task ( "AppVeyor" )
208
- . IsDependentOn ( "Run-Unit-Tests" )
209
- . IsDependentOn ( "Update-AppVeyor-Build-Number" ) ;
6
+ { "netstandard1.3" , "netstandard1.3" } ,
7
+ } ;
210
8
211
- // Execution
212
- // ----------------------------------------
9
+ #load tools / anglesharp. cake
213
10
214
- RunTarget ( target ) ;
11
+ RunTarget( target ) ;
0 commit comments