This is the Release plan and TODO list for LSP4J release v1.1.0.
Items at the beginning of development
- Create an Endgame Issue to track the release. As a starting point use documentation/releasing.md.
- Add the Endgame label and Milestone for the release
- Make sure any previous edits made to Endgame issues of previous releases are updated in documentation/releasing.md
- Ensure all previous Endgame issues are done.
- Create a New milestone for the release
- Check CHANGELOG.md is up to date. The changelog should have a version entry, release date, API Breakages and other information consistent with current entries in the changelog.
- Check README.md is up to date. In particular that the planned release and which versions of DAP and LSP are support is listed.
- Increment version of all feature.xml, pom.xml and any other place full version is used. (Easiest way is global find and replace, e.g.
s/1.0.0/1.1.0/g,s/0.24.0/1.0.0/gand review changes.) Ensure that-SNAPSHOTis restored in the gradle/versions.gradle and releng/pom.xml - Enable
cd releng && ./deploy-build.sh'in releng/build.Jenkinsfile - Ensure the CI build is stable - it is always better to release a "Green Dot" build
Items in the days ahead of Release day:
- Create release on PMI
- Schedule the release and if needed schedule a release review on the PMI. A release review is needed every 12 months, not with each release.
- Check CHANGELOG.md is up to date. The changelog should have a version entry, release date, API Breakages and other information consistent with current entries in the changelog.
- Check README.md is up to date. In particular that the planned release and which versions of DAP and LSP are support is listed.
- Check all closed PRs and Issues to make sure their milestone is set. (Note: this was not until after 0.10.0 release so many old PRs and Issues have no milestone, therefore only consider items back to approx 5 Nov 2020). This search may be useful to identify such closed issues
- Create and analyse a
japicmpreport and publish it as part of the build. Ensure that the API versions are incremented accurately based on the report. The reports are part of the build in japicmp-report and generated byreleng/runjapicmp.sh - Update links in changelog for japicmp from the nightly to the final location
Items on Release day:
- Prepare the repo for release by:
- removing
-SNAPSHOTfrom gradle/versions.gradle - removing
-SNAPSHOTfrom releng/pom.xml entries in<dependencies>section. - disabling
cd releng && ./deploy-build.sh'in releng/build.Jenkinsfile - see commit https://github.com/eclipse-lsp4j/lsp4j/commit/328ce8a4c89b0cd84fb62118f459b6cf79b09e90 for a past example
- removing
- Push the above change
- Run the CI build
- Mark the build as Keep Forever and add to the description
v1.1.0 - Deploy the release by running the Release CI job with parameters:
LSP4J_PUBLISH_LOCATION->updates/releases/1.1.0( <-- check version number)PROJECT->lsp4j-multi-build/job/mainLSP4J_BUILD_NUMBER-> the build that was just run aboveDRY_RUN->false
- Add to the deploy job description
v1.1.0 - Update the meta-data on PMI downloads page
- Tag the release. Example:
git tag -a v1.1.0 HEAD -m"LSP4J 1.1.0" && git push origin v1.1.0 - Contribute to Simrel. See Simrel contribution example
- Create a release page on github
- Link the Changelog to the release page
- Make an announcement on lsp4j-dev based on the release page on github. Example on lsp4j-dev archives
- Update documentation/releasing.md with any changes that may have been made to the release process.
- Create the endgame for the next release right away, especially as version numbers and restoring
-SNAPSHOTneed to be done right away.