mirror of
https://github.com/haskell/haskell-language-server.git
synced 2024-10-05 12:49:07 +03:00
287ee42ab5
* Prepare release 2.9.0.0 * Bump 'bytestring' version for release CI test scripts The older 'bytestring-0.11.1.0' version doesn't compile with the recent GHC 9.10.1 release. Bump the version to '0.12.1.0' which can be successfully compiled on all supported GHC versions. * Update supported GHC version table * Move plugin ghc support conditionals into .cabal file Having them in the cabal.project file is a very neat way to enable/disable a plugin, but it negatively affects Hackage users as they can no longer trivially install HLS from Hackage. This discussion might be revisited in the future, but not during a release process. * Disable tests and benchmarks in release test pipeline On some platforms, building bytestring-0.12.1.0 is not fully supported yet. Hence, we disable tests and benchmarks, to allow building on the platform Windows with GHC 9.10.1. * Always show debug output in release test ci * Upgrade cabal version in the release pipeline * Switch to `text` for release test package --------- Co-authored-by: Michael Peyton Jones <me@michaelpj.com>
3.7 KiB
3.7 KiB
Releasing
Release checklist
- check ghcup supports new GHC releases if any
- set the supported GHCs in workflow file
.github/workflows/release.yaml
- There is currently a list of GHC versions for each major platform. Search for
ghc: [
to find all lists. - Look for
TODO:
to find locations that require extra care for GHC versions.
- There is currently a list of GHC versions for each major platform. Search for
- check all plugins still work if release includes code changes
- bump package versions in all
*.cabal
files (same version as hls)- HLS uses lockstep versioning. The core packages and all plugins use the same version number, and only support exactly this version.
- Exceptions:
hie-compat
requires no automatic version bump.shake-bench
is an internal testing tool, not exposed to the outside world. Thus, no version bump required for releases.
- Exceptions:
- For updating cabal files, the following script can be used:
-
./release/update_versions.sh <OLD_VERSION> <NEW_VERSION>
- It still requires manual verification and review
-
- HLS uses lockstep versioning. The core packages and all plugins use the same version number, and only support exactly this version.
- generate and update changelog
- Generate a ChangeLog via
./GenChangelogs.hs <api-key> <tag>
<tag>
is the git tag you want to generate the ChangeLog from.<api-key>
is a github access key: https://github.com/settings/tokens
- Generate a ChangeLog via
- update https://haskell-language-server.readthedocs.io/en/latest/support/ghc-version-support.html#current-ghc-version-support-status
- create release branch as
wip/<version>
git switch -c wip/<version>
- create release tag as
<version>
git tag <version>
- trigger release pipeline by pushing the tag
- this creates a draft release
git push <remote> <version>
- run
sh scripts/release/download-gh-artifacts.sh <version> <your-gpg-email>
- downloads artifacts to
gh-release-artifacts/haskell-language-server-<version>/
- also downloads FreeBSD bindist from circle CI
- adds signatures
- downloads artifacts to
- upload artifacts to downloads.haskell.org from
gh-release-artifacts/haskell-language-server-<version>/
- You require sftp access, contact wz1000, bgamari or chreekat
cd gh-release-artifacts/haskell-language-server-<version>
SIGNING_KEY=... ../../release/upload.sh upload
- Your SIGNING_KEY can be obtained with
gpg --list-secret-keys --keyid-format=long
- Your SIGNING_KEY can be obtained with
- Afterwards, the artifacts are available at:
https://downloads.haskell.org/~hls/haskell-language-server-<version>/
- Run
SIGNING_KEY=... ../../release/upload.sh purge_all
to remove CDN caches
- create PR to ghcup-metadata
- update
ghcup-vanilla-0.0.8.yaml
andghcup-vanilla-0.0.7.yaml
- can use
sh scripts/release/create-yaml-snippet.sh <version>
to generate a snippet that can be manually inserted into the yaml files
- can use
updateCurrently unnecessary, GHCup builds its own HLS binaries and updates that file.hls-metadata-0.0.1.json
- utilize
cabal run ghcup-gen -- generate-hls-ghcs -f ghcup-0.0.7.yaml --format json --stdout
in the root of ghcup-metadata repository
- utilize
- Be sure to mark the correct latest version and add the 'recommended' tag to the latest release.
- update
- get sign-off on release
- from wz1000, michealpj, maerwald and fendor
- publish release on github
- upload hackage packages
- requires credentials
- Supported tools table needs to be updated:
- post release on discourse and reddit
- merge release PR to master or forward port relevant changes