@@ -11,6 +11,8 @@ open Fake.BuildServer
1111open Fake.Core
1212open Fake.DotNet
1313open Fake.IO
14+ open Fake.Api
15+ open Fake.Tools
1416
1517BuildServer.install [ AppVeyor.Installer ]
1618// --------------------------------------------------------------------------------------
@@ -41,15 +43,8 @@ let docsDir = Path.Combine(__SOURCE_DIRECTORY__, "docsrc", "_public")
4143
4244// Read release notes & version info from RELEASE_NOTES.md
4345let release = ReleaseNotes.load (__ SOURCE_ DIRECTORY__ + " /RELEASE_NOTES.md" )
44- let isAppVeyorBuild = AppVeyor.detect()
4546let isVersionTag ( tag : string ) = Version.TryParse tag |> fst
46- let hasRepoVersionTag = isAppVeyorBuild && AppVeyor.Environment.RepoTag && isVersionTag AppVeyor.Environment.RepoTagName
47- let assemblyVersion = if hasRepoVersionTag then AppVeyor.Environment.RepoTagName else release.NugetVersion
48-
49- let buildVersion =
50- if hasRepoVersionTag then assemblyVersion
51- else if isAppVeyorBuild then sprintf " %s -b%s " assemblyVersion AppVeyor.Environment.BuildNumber
52- else assemblyVersion
47+ let assemblyVersion = release.NugetVersion
5348
5449Target.create " Clean" ( fun _ ->
5550 Shell.cleanDir releaseDir
@@ -62,10 +57,6 @@ Target.create "Restore" (fun _ ->
6257 runDotnet __ SOURCE_ DIRECTORY__ " restore" " FSharp.Compiler.Service.sln -v n"
6358)
6459
65- Target.create " BuildVersion" ( fun _ ->
66- Shell.Exec( " appveyor" , sprintf " UpdateBuild -Version \" %s \" " buildVersion) |> ignore
67- )
68-
6960Target.create " Build" ( fun _ ->
7061 runDotnet __ SOURCE_ DIRECTORY__ " build" " ../src/buildtools/buildtools.proj -v n -c Proto"
7162 let fslexPath = Path.GetFullPath <| Path.Combine(__ SOURCE_ DIRECTORY__, " ../artifacts/bin/fslex/Proto/netcoreapp3.1/fslex.dll" )
@@ -99,10 +90,14 @@ Target.create "GenerateDocs" (fun _ ->
9990
10091open Fake.IO .Globbing .Operators
10192
102- Target.create " PublishNuGet" ( fun _ ->
103- let apikey = lazy ( Environment.environVarOrDefault " nuget-apikey" ( UserInput.getUserPassword " Nuget API Key: " ))
93+ let packagesPatterns =
10494 !! ( sprintf " %s /*.%s .nupkg" releaseDir release.NugetVersion)
10595 ++ ( sprintf " %s /FSharp.DependencyManager.Nuget.%s .nupkg" packagesDir release.NugetVersion)
96+
97+ Target.create " PublishNuGet" ( fun _ ->
98+ let apikey = lazy ( Environment.environVarOrDefault " NUGET_APIKEY" ( UserInput.getUserPassword " Nuget API Key: " ))
99+
100+ packagesPatterns
106101 |> Seq.iter ( fun nupkg ->
107102 DotNet.nugetPush ( fun p -> {
108103 p with
@@ -161,6 +156,24 @@ Target.create "ValidateVersionBump" (fun _ ->
161156""" intendedVersion parsedComputedVersion computedMagnitude apiDiffs
162157)
163158
159+ Target.create " CreateRelease" ( fun _ ->
160+ async {
161+ let client = GitHub.createClientWithToken ( Environment.environVarOrDefault " GITHUB_TOKEN" ( UserInput.getUserPassword " Github API Token: " ))
162+ let currentSha = Git.Information.getCurrentSHA1 " "
163+ let releaseParams ( input : GitHub.CreateReleaseParams ) =
164+ { input with
165+ Name = sprintf " Release %s " release.NugetVersion
166+ Body = release.Notes |> String.concat " \n "
167+ TargetCommitish = currentSha }
168+ let artifacts = packagesPatterns
169+ let! release = GitHub.createRelease " fsharp" " FSharp.Compiler.Service" assemblyVersion releaseParams client
170+ let! _release = GitHub.uploadFiles artifacts ( async.Return release)
171+ return ()
172+ }
173+ |> Async.RunSynchronously
174+ )
175+
176+
164177// --------------------------------------------------------------------------------------
165178// Run all targets by default. Invoke 'build <Target>' to override
166179
@@ -173,7 +186,6 @@ Target.create "TestAndNuGet" ignore
173186open Fake.Core .TargetOperators
174187
175188" Start"
176- =?> ( " BuildVersion" , isAppVeyorBuild)
177189 ==> " Restore"
178190 ==> " Clean"
179191 ==> " Build"
0 commit comments