Skip to content

Commit

Permalink
Move to project-specific versions and releasenotes
Browse files Browse the repository at this point in the history
  • Loading branch information
kMutagene committed Aug 21, 2023
1 parent 2dfd46f commit 7576ca6
Show file tree
Hide file tree
Showing 15 changed files with 639 additions and 201 deletions.
8 changes: 8 additions & 0 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
### 1.0.0+

Starting from 1.0.0, Versions of the packages in this project are decoupled, meaning this single release notes page does not work anymore.

For the individual package release notes, please refer to these files:
- [ControlledVocabulary](./src/ControlledVocabulary/RELEASE_NOTES.md)
- [ARCTokenization](./src/ARCTokenization/RELEASE_NOTES.md)

### 1.0.0+e7faa34 (Released 2023-8-17)
* Additions:
* [[#e7faa34](https://github.com/nfdi4plants/ArcGraphModel/commit/e7faa348c1d8128205a40e2186914380c466fed6)] Add ConvertTokens tests
Expand Down
94 changes: 82 additions & 12 deletions build/BasicTasks.fs
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,11 @@ open BlackFox.Fake
open Fake.IO
open Fake.DotNet
open Fake.IO.Globbing.Operators
open System.IO
open Fake.IO

open ProjectInfo

let setPrereleaseTag = BuildTask.create "SetPrereleaseTag" [] {
printfn "Please enter pre-release package suffix"
let suffix = System.Console.ReadLine()
prereleaseSuffix <- suffix
prereleaseTag <- (sprintf "%s-%s" stableVersionTag suffix)
isPrerelease <- true
}

let clean = BuildTask.create "Clean" [] {
!! "src/**/bin"
++ "src/**/obj"
Expand All @@ -24,7 +18,83 @@ let clean = BuildTask.create "Clean" [] {
|> Shell.cleanDirs
}

let build = BuildTask.create "Build" [clean] {
solutionFile
|> DotNet.build id
}

/// Buildtask for setting a prerelease tag (also sets the mutable isPrerelease to true, and the PackagePrereleaseTag of all project infos accordingly.)
let setPrereleaseTag =
BuildTask.create "SetPrereleaseTag" [] {
printfn "Please enter pre-release package suffix"
let suffix = System.Console.ReadLine()
prereleaseSuffix <- suffix
isPrerelease <- true
projects
|> List.iter (fun p ->
p.PackagePrereleaseTag <- (sprintf "%s-%s" p.PackageVersionTag suffix)
)
//
prereleaseTag <- (sprintf "%s-%s" CoreProject.PackageVersionTag suffix)
}

let buildOntologies =
BuildTask.create "BuildOntologies" [clean] {
structuralOntologySources
|> List.iter (fun ontologySource ->
ontologySource
|> File.read
|> Seq.map (fun line -> line.Trim())
|> File.write false (ontologySource.Replace(".yml", ".obo"))
)
}


/// builds the solution file (dotnet build solution.sln)
let buildSolution =
BuildTask.create "BuildSolution" [ clean ; buildOntologies ] {
solutionFile
|> DotNet.build (fun p ->
let msBuildParams =
{p.MSBuildParams with
Properties = ([
"warnon", "3390"
])
}
{
p with
MSBuildParams = msBuildParams
}
)
}

/// builds the individual project files (dotnet build project.*proj)
///
/// The following MSBuild params are set for each project accordingly to the respective ProjectInfo:
///
/// - AssemblyVersion
///
/// - AssemblyInformationalVersion
///
/// - warnon:3390 for xml doc formatting warnings on compilation
let build = BuildTask.create "Build" [clean; buildOntologies] {
projects
|> List.iter (fun pInfo ->
let proj = pInfo.ProjFile
proj
|> DotNet.build (fun p ->
let msBuildParams =
{p.MSBuildParams with
Properties = ([
"AssemblyVersion", pInfo.AssemblyVersion
"InformationalVersion", pInfo.AssemblyInformationalVersion
"warnon", "3390"
])
}
{
p with
MSBuildParams = msBuildParams
}
// Use this if you want to speed up your build. Especially helpful in large projects
// Ensure that the order in your project list is correct (e.g. projects that are depended on are built first)
//|> DotNet.Options.withCustomParams (Some "--no-dependencies")
)
)
}

15 changes: 4 additions & 11 deletions build/Build.fs
Original file line number Diff line number Diff line change
Expand Up @@ -16,37 +16,30 @@ open TestTasks
open PackageTasks
open DocumentationTasks
open ReleaseTasks
open ReleaseNotesTasks

/// Full release of nuget package, git tag, and documentation for the stable version.
let _release =
BuildTask.createEmpty
"Release"
[clean; build; runTests; pack; buildDocs; createTag; publishNuget; releaseDocs]
[clean; buildOntologies; build; runTests; pack; buildDocs; createTag; publishNuget; releaseDocs]

/// Full release of nuget package, git tag, and documentation for the prerelease version.
let _preRelease =
BuildTask.createEmpty
"PreRelease"
[setPrereleaseTag; clean; build; runTests; packPrerelease; buildDocsPrerelease; createPrereleaseTag; publishNugetPrerelease; prereleaseDocs]
[setPrereleaseTag; clean; buildOntologies; build; runTests; packPrerelease; buildDocsPrerelease; createPrereleaseTag; publishNugetPrerelease; prereleaseDocs]

/// Full release of nuget package for the prerelease version.
let _releaseNoDocs =
BuildTask.createEmpty
"ReleaseNoDocs"
[clean; build; runTests; pack; createTag; publishNuget;]
[clean; build; buildOntologies; runTests; pack; createTag; publishNuget;]

/// Full release of nuget package for the prerelease version.
let _preReleaseNoDocs =
BuildTask.createEmpty
"PreReleaseNoDocs"
[setPrereleaseTag; clean; build; runTests; packPrerelease; createPrereleaseTag; publishNugetPrerelease]

/// Full release of nuget package for the prerelease version.
let releaseNotes =
BuildTask.createEmpty
"ReleaseNotes"
[updateReleaseNotes]
[setPrereleaseTag; clean; buildOntologies; build; runTests; packPrerelease; createPrereleaseTag; publishNugetPrerelease]

[<EntryPoint>]
let main args =
Expand Down
71 changes: 44 additions & 27 deletions build/DocumentationTasks.fs
Original file line number Diff line number Diff line change
Expand Up @@ -6,30 +6,47 @@ open BasicTasks

open BlackFox.Fake

let buildDocs = BuildTask.create "BuildDocs" [build] {
printfn "building docs with stable version %s" stableVersionTag
runDotNet
(sprintf "fsdocs build --eval --clean --properties Configuration=Release --parameters fsdocs-package-version %s" stableVersionTag)
"./"
}

let buildDocsPrerelease = BuildTask.create "BuildDocsPrerelease" [setPrereleaseTag; build] {
printfn "building docs with prerelease version %s" prereleaseTag
runDotNet
(sprintf "fsdocs build --eval --clean --properties Configuration=Release --parameters fsdocs-package-version %s" prereleaseTag)
"./"
}

let watchDocs = BuildTask.create "WatchDocs" [build] {
printfn "watching docs with stable version %s" stableVersionTag
runDotNet
(sprintf "fsdocs watch --eval --clean --properties Configuration=Release --parameters fsdocs-package-version %s" stableVersionTag)
"./"
}

let watchDocsPrerelease = BuildTask.create "WatchDocsPrerelease" [setPrereleaseTag; build] {
printfn "watching docs with prerelease version %s" prereleaseTag
runDotNet
(sprintf "fsdocs watch --eval --clean --properties Configuration=Release --parameters fsdocs-package-version %s" prereleaseTag)
"./"
}

let buildDocs =
BuildTask.create "BuildDocs" [ build ] {
printfn "building docs with stable version %s" stableDocsVersionTag

runDotNet
(sprintf
"fsdocs build --eval --clean --properties Configuration=Release --parameters fsdocs-package-version %s"
stableDocsVersionTag)
"./"
}

let buildDocsPrerelease =
BuildTask.create "BuildDocsPrerelease" [ setPrereleaseTag; build ] {
printfn "building docs with prerelease version %s" prereleaseTag

runDotNet
(sprintf
"fsdocs build --eval --clean --properties Configuration=Release --parameters fsdocs-package-version %s"
prereleaseTag)
"./"
}

let watchDocs =
BuildTask.create "WatchDocs" [ build ] {
printfn "watching docs with stable version %s" stableDocsVersionTag

runDotNet
(sprintf
"fsdocs watch --eval --clean --properties Configuration=Release --parameters fsdocs-package-version %s"
stableDocsVersionTag)
"./"
}

let watchDocsPrerelease =
BuildTask.create "WatchDocsPrerelease" [ setPrereleaseTag; build ] {
printfn "watching docs with prerelease version %s" prereleaseTag

runDotNet
(sprintf
"fsdocs watch --eval --clean --properties Configuration=Release --parameters fsdocs-package-version %s"
prereleaseTag)
"./"
}
141 changes: 94 additions & 47 deletions build/PackageTasks.fs
Original file line number Diff line number Diff line change
Expand Up @@ -8,57 +8,104 @@ open TestTasks

open BlackFox.Fake
open Fake.Core
open Fake.DotNet
open Fake.IO.Globbing.Operators

open System.Text.RegularExpressions

/// https://github.com/Freymaurer/Fake.Extensions.Release#release-notes-in-nuget
let private replaceCommitLink input =
let commitLinkPattern = @"\[\[#[a-z0-9]*\]\(.*\)\] "
Regex.Replace(input,commitLinkPattern,"")

let pack = BuildTask.create "Pack" [clean; build; runTests] {
if promptYesNo (sprintf "creating stable package with version %s OK?" stableVersionTag )
then
!! "src/**/*.*proj"
-- "src/bin/*"
|> Seq.iter (Fake.DotNet.DotNet.pack (fun p ->
let pack = BuildTask.create "Pack" [ clean; build; runTests ] {
projects
|> List.iter (fun pInfo ->
if promptYesNo $"creating stable package for {pInfo.Name}{System.Environment.NewLine}\tpackage version: {pInfo.PackageVersionTag}{System.Environment.NewLine}\tassembly version: {pInfo.AssemblyVersion}{System.Environment.NewLine}\tassembly informational version: {pInfo.AssemblyInformationalVersion}{System.Environment.NewLine} OK?" then
pInfo.ProjFile
|> Fake.DotNet.DotNet.pack (fun p ->
let msBuildParams =
{p.MSBuildParams with
Properties = ([
"Version",stableVersionTag
"PackageReleaseNotes", (release.Notes |> List.map replaceCommitLink |> String.concat "\r\n" )
] @ p.MSBuildParams.Properties)
}
{
p with
MSBuildParams = msBuildParams
OutputPath = Some pkgDir
match pInfo.ReleaseNotes with
| Some r ->
{ p.MSBuildParams with
Properties =
([
"Version",pInfo.PackageVersionTag
"AssemblyVersion", pInfo.AssemblyVersion
"AssemblyInformationalVersion", pInfo.AssemblyVersion
"PackageReleaseNotes", (r.Notes |> String.concat "\r\n")
"TargetsForTfmSpecificContentInPackage", "" //https://github.com/dotnet/fsharp/issues/12320
]
@ p.MSBuildParams.Properties)
}
| _ ->
{ p.MSBuildParams with
Properties =
([
"Version",pInfo.PackageVersionTag
"AssemblyVersion", pInfo.AssemblyVersion
"AssemblyInformationalVersion", pInfo.AssemblyVersion
"TargetsForTfmSpecificContentInPackage", "" //https://github.com/dotnet/fsharp/issues/12320
]
@ p.MSBuildParams.Properties)
}


{ p with
MSBuildParams = msBuildParams
OutputPath = Some pkgDir
NoBuild = true
}
))
else failwith "aborted"
}
|> DotNet.Options.withCustomParams (Some "--no-dependencies")
)
else
failwith "aborted"
)
}

let packPrerelease = BuildTask.create "PackPrerelease" [setPrereleaseTag; clean; build; runTests] {
if promptYesNo (sprintf "package tag will be %s OK?" prereleaseTag )
then
!! "src/**/*.*proj"
-- "src/bin/*"
|> Seq.iter (Fake.DotNet.DotNet.pack (fun p ->
let msBuildParams =
{p.MSBuildParams with
Properties = ([
"Version", prereleaseTag
"PackageReleaseNotes", (release.Notes |> List.map replaceCommitLink |> String.toLines )
] @ p.MSBuildParams.Properties)
let packPrerelease =
BuildTask.create
"PackPrerelease"
[
clean
build
runTests
] {
projects
|> List.iter (fun pInfo ->
printfn $"Please enter pre-release package suffix for {pInfo.Name}"
let prereleaseSuffix = System.Console.ReadLine()
pInfo.PackagePrereleaseTag <- sprintf "%s-%s" pInfo.PackageVersionTag prereleaseSuffix
if promptYesNo $"creating prerelease package for {pInfo.Name}{System.Environment.NewLine}\tpackage version: {pInfo.PackagePrereleaseTag}{System.Environment.NewLine}\tassembly version: {pInfo.AssemblyVersion}{System.Environment.NewLine}\tassembly informational version: {pInfo.AssemblyInformationalVersion}{System.Environment.NewLine} OK?" then
pInfo.ProjFile
|> Fake.DotNet.DotNet.pack (fun p ->
let msBuildParams =
match pInfo.ReleaseNotes with
| Some r ->
{ p.MSBuildParams with
Properties =
([
"Version",pInfo.PackagePrereleaseTag
"AssemblyVersion", pInfo.AssemblyVersion
"InformationalVersion", pInfo.AssemblyInformationalVersion
"PackageReleaseNotes", (r.Notes |> String.concat "\r\n")
"TargetsForTfmSpecificContentInPackage", "" //https://github.com/dotnet/fsharp/issues/12320
])
}
{
p with
VersionSuffix = Some prereleaseSuffix
OutputPath = Some pkgDir
MSBuildParams = msBuildParams
}
))
else
failwith "aborted"
}
| _ ->
{ p.MSBuildParams with
Properties =
([
"Version",pInfo.PackagePrereleaseTag
"AssemblyVersion", pInfo.AssemblyVersion
"InformationalVersion", pInfo.AssemblyInformationalVersion
"TargetsForTfmSpecificContentInPackage", "" //https://github.com/dotnet/fsharp/issues/12320
])
}

{ p with
VersionSuffix = Some prereleaseSuffix
OutputPath = Some pkgDir
MSBuildParams = msBuildParams
NoBuild = true
}
|> DotNet.Options.withCustomParams (Some "--no-dependencies")
)
else
failwith "aborted"
)
}
Loading

0 comments on commit 7576ca6

Please sign in to comment.