You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/contributing/releases.md
+30-4Lines changed: 30 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -8,8 +8,16 @@ extension](https://github.com/alanz/vscode-hie-server) to provide automatic
8
8
installation for users on VS Code, but they can also be installed manually
9
9
when added to the path.
10
10
11
+
Starting with 0.8.0.0 haskell-language-server and all its related packages
12
+
(core libraries like ghcide, plugins and hls itself) is being released in
13
+
[hackage](https://hackage.haskell.org/package/haskell-language-server) as well.
14
+
This allow cabal users to install it with `cabal install haskell-language-server`
15
+
and it is being used in nix environments.
16
+
11
17
## Minimal checklist
12
18
19
+
### github release
20
+
13
21
*[ ] generate the list of pull requests finished since the last release using the [haskell script](https://github.com/haskell/haskell-language-server/blob/master/GenChangelogs.hs) in the project root.
14
22
Nix users should run command `gen-hls-changelogs` (a wrapper of the script) in nix-shell instead.
15
23
*[ ] add that list to the actual [Changelog](https://github.com/haskell/haskell-language-server/blob/master/ChangeLog.md) with a description of the release.
@@ -19,7 +27,13 @@ when added to the path.
19
27
*[ ] check uploaded binaries (see windows note below) and the release description (usually the changelog entry) and uncheck the prerelease box
20
28
*[ ] make public the release in the usual social channels: irc, twitter, reddit, discord, discourse, mailing lists, etc (not required but useful to spread the word :slightly_smiling_face:)
21
29
22
-
## Making a new release of haskell-language-server
30
+
### hackage release
31
+
32
+
*[ ] bump up package versions following the [pvp specification](https://pvp.haskell.org/) if they are not already updated
33
+
*[ ] create ${version}-hackage branch to trigger the hackage github workflow which will upload all changed packages to hackage as candidates
34
+
*[ ] check manually candidates in hackage
35
+
*[ ] publish them definitely
36
+
## Making a new release of haskell-language-server in github
23
37
24
38
Go to the [GitHub releases
25
39
page](https://github.com/haskell/haskell-language-server/releases) for
@@ -43,7 +57,7 @@ most recent GHC version.
43
57
44
58
### ghcup
45
59
It also creates a `haskell-language-server-${os}-${hlsVersion}.tar.gz` tarball with
46
-
the binaries for *all* supported ghc versions, to help downstream publishers in
60
+
the binaries for *all* supported ghc versions, to help downstream publishers in
47
61
the distribution of the release. The most prominent publisher using them is `ghcup`.
48
62
The `tar` job in the workflow file automates the creation of this.
49
63
@@ -100,15 +114,15 @@ and add it to the existing release.
100
114
101
115
### Updating release artifacts
102
116
103
-
*IMPORTANT: release artifacts must not be modified, cause it would break
117
+
*IMPORTANT: release artifacts must not be modified, cause it would break
104
118
its secure distribution using their hashes. We should only add new ones.*
105
119
106
120
To manually upload a new binary we should:
107
121
108
122
- Add the new tar/zip following the name conventions of existing ones
109
123
-`haskell-language-server-${os}-${ghcVersion}.gz` for `Linux` and `macOS` and `haskell-language-server-Windows-${ghcVersion}.exe.zip` for `Windows`
110
124
- the binary inside the gz file is named `haskell-language-server-${ghcVersion}` (with the `.exe` extension for `Windows`). Note that the binary name does not contain the `${os}` part.
111
-
- Add the executable to the existing tar `haskell-language-server-${os}-${ghcVersion}.tar.gz`*locally* and upload it under a new name `haskell-language-server-${os}-${ghcVersion}-rev${n}.tar.gz` following the same schema for the binary as the previous one.
125
+
- Add the executable to the existing tar `haskell-language-server-${os}-${ghcVersion}.tar.gz`*locally* and upload it under a new name `haskell-language-server-${os}-${ghcVersion}-rev${n}.tar.gz` following the same schema for the binary as the previous one.
112
126
-`-rev${n}` is the next revision number of the tarball, starting at 1.
113
127
- we should contact users of the tarball (particularly ghcup) to notify the change
114
128
@@ -118,3 +132,15 @@ is not included by default in the GitHub Actions build matrix. Instead
118
132
they need to be built and uploaded manually. See [this
119
133
PR](https://github.com/haskell/haskell-language-server/issues/276) for
120
134
more details
135
+
136
+
## Hackage release workflow
137
+
138
+
We aim to do hackage releases following the github ones described above.
139
+
To help in that job we have added a [github workflow](https://github.com/haskell/haskell-language-server/blob/master/.github/workflows/hackage.yml)
140
+
That script check, generates the tar.gz files, unpack thems and build them in isolation against hackage head
141
+
if the package version in the branch is different from hackage.
142
+
If the package in the branch has the same version as the released one,
143
+
it will check the relevant files have not changed and will thorw an error
144
+
in other case.
145
+
The script will upload the tarballs as candidates, maintainers will have
0 commit comments