Browse Source

Build: automate publish to archive

pull/469/head
Christoph Ruegg 10 years ago
parent
commit
88a7c2c4f7
  1. 13
      build.fsx
  2. 28
      build/build-framework.fsx

13
build.fsx

@ -571,6 +571,12 @@ Target "PublishMirrors" (fun _ -> publishMirrors())
Target "PublishDocs" (fun _ -> publishDocs numericsRelease)
Target "PublishApi" (fun _ -> publishApi numericsRelease)
Target "PublishArchive" (fun _ -> publishArchive "out/packages/Zip" "out/packages/NuGet" [coreBundle; coreSignedBundle])
Target "MklPublishArchive" (fun _ -> publishArchive "out/MKL/packages/Zip" "out/MKL/packages/NuGet" [mklWinBundle; mklLinuxBundle])
Target "CudaPublishArchive" (fun _ -> publishArchive "out/CUDA/packages/Zip" "out/CUDA/packages/NuGet" [cudaWinBundle])
Target "OpenBlasPublishArchive" (fun _ -> publishArchive "out/OpenBLAS/packages/Zip" "out/OpenBLAS/packages/NuGet" [openBlasWinBundle])
Target "DataPublishArchive" (fun _ -> publishArchive "out/Data/packages/Zip" "out/Data/packages/NuGet" [dataBundle])
Target "PublishNuGet" (fun _ -> !! "out/packages/NuGet/*.nupkg" -- "out/packages/NuGet/*.symbols.nupkg" |> publishNuGet)
Target "MklPublishNuGet" (fun _ -> !! "out/MKL/packages/NuGet/*.nupkg" |> publishNuGet)
Target "CudaPublishNuGet" (fun _ -> !! "out/CUDA/packages/NuGet/*.nupkg" |> publishNuGet)
@ -579,24 +585,29 @@ Target "DataPublishNuGet" (fun _ -> !! "out/Data/packages/NuGet/*.nupkg" |> publ
Target "Publish" DoNothing
"PublishTag" ==> "Publish"
"PublishNuGet" ==> "Publish"
"PublishDocs" ==> "Publish"
"PublishApi" ==> "Publish"
"PublishArchive" ==> "Publish"
"PublishNuGet" ==> "Publish"
Target "MklPublish" DoNothing
"MklPublishTag" ==> "MklPublish"
"MklPublishArchive" ==> "MklPublish"
"MklPublishNuGet" ==> "MklPublish"
Target "CudaPublish" DoNothing
"CudaPublishTag" ==> "CudaPublish"
"CudaPublishArchive" ==> "CudaPublish"
"CudaPublishNuGet" ==> "CudaPublish"
Target "OpenBlasPublish" DoNothing
"OpenBlasPublishTag" ==> "OpenBlasPublish"
"OpenBlasPublishArchive" ==> "OpenBlasPublish"
"OpenBlasPublishNuGet" ==> "OpenBlasPublish"
Target "DataPublish" DoNothing
"DataPublishTag" ==> "DataPublish"
"DataPublishArchive" ==> "DataPublish"
"DataPublishNuGet" ==> "DataPublish"

28
build/build-framework.fsx

@ -347,3 +347,31 @@ let publishApi (release:Release) =
Git.Staging.StageAll repo
Git.Commit.Commit repo (sprintf "Numerics: %s api update" release.PackageVersion)
Git.Branches.pushBranch repo "origin" "master"
let publishNuGetToArchive archivePath nupkgFile (pack:Package) =
let tempDir = Path.GetTempPath() </> Path.GetRandomFileName()
let archiveDir = archivePath </> pack.Id </> pack.Release.PackageVersion
CleanDirs [tempDir; archiveDir]
nupkgFile |> CopyFile archiveDir
use sha512 = System.Security.Cryptography.SHA512.Create()
let hash = File.ReadAllBytes nupkgFile |> sha512.ComputeHash |> Convert.ToBase64String
File.WriteAllText ((archiveDir </> (Path.GetFileName(nupkgFile) + ".sha512")), hash)
ZipHelper.Unzip tempDir nupkgFile
!! (tempDir </> "*.nuspec") |> Copy archiveDir
DeleteDir tempDir
let publishArchive zipOutPath nugetOutPath (bundles:Bundle list) =
let archivePath = (environVarOrFail "MathNetReleaseArchive") </> "Math.NET Numerics"
if directoryExists archivePath |> not then failwith "Release archive directory does not exists. Safety Check failed."
for bundle in bundles do
let zipFile = zipOutPath </> sprintf "%s-%s.zip" bundle.Id bundle.Release.PackageVersion
if FileSystemHelper.fileExists zipFile then
zipFile |> CopyFile (archivePath </> "Zip")
for package in bundles |> List.collect (fun b -> b.Packages) do
let nupkgFile = nugetOutPath </> sprintf "%s.%s.nupkg" package.Id package.Release.PackageVersion
if FileSystemHelper.fileExists nupkgFile then
trace nupkgFile
publishNuGetToArchive (archivePath </> "NuGet") nupkgFile package
let symbolsFile = nugetOutPath </> sprintf "%s.%s.symbols.nupkg" package.Id package.Release.PackageVersion
if FileSystemHelper.fileExists symbolsFile then
symbolsFile |> CopyFile (archivePath </> "Symbols")

Loading…
Cancel
Save