Created Release Process (markdown)

Daniel Chao
2024-01-23 07:20:23 -08:00
parent 28d678e60c
commit a432be317b

52
Release-Process.md Normal file

@@ -0,0 +1,52 @@
== Prerequisites
* CI main builds are green
* release notes and changelog update have been merged
== Before Release
. pkl-lang/pkl-lang.github.io (main branch)
.. run `gw validateLocalSite`.
... It's okay if there are errors like `Unexpected HTTP status code 404 for external link https://pkl-lang.org/pkl/<new-version>-dev/...` because we do not publish docs for unreleased versions of Pkl.
.. do a quick manual check of the generated site (esp. the release notes)
. pkl-lang/pkl (main branch)
.. gradle.properties: update `version` as necessary
.. docs/antora.yml: update `version` (no suffix for release, `-rc.n` suffix for RC) and `prerelease` properties (`true` -> `false`)
.. docs/modules/ROOT/partials/component-attributes.adoc: update top two properties
.. docs/modules/release-notes/<current>.adoc: update `:version-minor` as necessary
.. pkl-core/src/main/java/org/pkl/core/runtime/VmLanguage.java: update `version` annotation attribute
.. to be on the safe side, do a file search for latest dev version and replace as necessary
.. commit "Prepare x.y.z release" but do not push yet
... avoids issue where docs build fails because main branch and tag have same Antora component version
== Perform/Validate Release
. pkl-lang/pkl
.. run `git tag -a x.y.z -m "Release version x.y.z"`
.. push to origin (`git push origin refs/tags/x.y.z`) and wait for pkl-lang/pkl release build to finish
. pkl-lang/pkl-lang.github.io (main branch)
.. src/site-remote.yml:
... If new major version: add new tag
... If new patch version: update the tag name of the major version (e.g. 0.24.0 -> 0.24.1)
.. commit "Add x.y.z docs" and push to origin
.. once CI build is complete, do a quick manual check of https://pkl-lang.org/main/current
. pkl-lang/pkl-examples (main branch)
.. update Pkl version (search and replace)
.. make sure that `gw build` succeeds and push to origin
. send Slack and email announcements
== After Release
. pkl-lang/pkl (main branch)
.. docs/antora.yml: Update `version` (use -dev suffix) and `prerelease` properties (`false` -> `true`)
.. docs/modules/ROOT/partials/component-attributes.adoc: update top two properties
.. gradle.properties: set `version` to next dev version (do not use -dev or -SNAPSHOT suffix)
.. pkl-core/src/main/java/org/pkl/core/runtime/VmLanguage.java: update `version` annotation attribute (use `-dev` suffix)
.. stdlib/: update `minPklVersion` of all stdlib modules (do not use `-dev` suffix)
.. changelog.adoc: add the next release version and date
.. create a new release notes file in docs/modules/release-notes/pages/<next-version>.adoc
.. update `docs/nav.adoc` and `docs/modules/release-notes/pages/index.adoc` to link to the next version
.. to be on the safe side, do a file search for current release version and replace as necessary
.. commit "Start next dev iteration", and push to origin
. release new versions of pkl-spring, and pkl-intellij (update to latest version of Pkl)
. release new versions of pkl-vscode, pkl-neovim if grammar has changed