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
* Check the build workflow
* Add gitlab/ghcup specific intructions
* Apply suggestions from @michaelpj
Co-authored-by: Michael Peyton Jones <[email protected]>
* Note where are release artifacts
Co-authored-by: Michael Peyton Jones <[email protected]>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Copy file name to clipboardExpand all lines: docs/contributing/releases.md
+43-19Lines changed: 43 additions & 19 deletions
Original file line number
Diff line number
Diff line change
@@ -16,23 +16,38 @@ and it is being used in nix environments.
16
16
17
17
## Minimal checklist
18
18
19
+
### prerelease sanity checks
20
+
21
+
-[ ] create a branch named `${version}-check-hackage`: it will trigger the hackage workflow *without* uploading the packages
22
+
-[ ] trigger the build workflow pushing a branch named `${version}-check-build`
23
+
-[ ] create a prerelease tag `${version}-check-gitlab` and push it to the [project repo in gitlab](https://gitlab.haskell.org/haskell/haskell-language-server) to check the build is fine
19
24
### github release
20
25
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.
26
+
-[ ] 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.
22
27
Nix users should run command `gen-hls-changelogs` (a wrapper of the script) in nix-shell instead.
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.
24
-
*[ ] bump up versions of changed packages. All are optional but [haskell-language-server itself](https://github.com/haskell/haskell-language-server/blob/master/haskell-language-server.cabal).
25
-
*[ ] create the tag and make an initial prerelease to trigger the ci workflow (see details below)
26
-
*[ ] contact ghcup team (#haskell-ghcup irc channel or via its [repo](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues)) to try to sync our release and its inclusion in ghcup
27
-
*[ ] check uploaded binaries (see windows note below) and the release description (usually the changelog entry) and uncheck the prerelease box
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:)
29
-
28
+
-[ ] add that list to the actual [Changelog](https://github.com/haskell/haskell-language-server/blob/master/ChangeLog.md) with a description of the release.
29
+
-[ ] bump up versions of changed packages. All are optional but [haskell-language-server itself](https://github.com/haskell/haskell-language-server/blob/master/haskell-language-server.cabal).
30
+
-[ ] create the tag and make an initial prerelease to trigger the ci workflow (see details below)
31
+
-[ ] contact ghcup team (#haskell-ghcup irc channel or via its [repo](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues)) to try to sync our release and its inclusion in ghcup
32
+
-[ ] in the github release edit page, check the attached binaries and the release description (usually the changelog entry) and uncheck the prerelease box
33
+
-[ ] make public the release in the usual social channels (not required but useful to spread the word :slightly_smiling_face:):
34
+
-[ ] irc
35
+
-[ ] matrix
36
+
-[ ] twitter
37
+
-[ ] discord
38
+
-[ ] discourse
39
+
-[ ] reddit
30
40
### hackage release
31
41
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
42
+
-[ ] bump up package versions following the [pvp specification](https://pvp.haskell.org/) if they are not already updated. You could use [policeman](https://github.com/kowainik/policeman) to help with this step.
43
+
-[ ] create ${version}-hackage branch to trigger the hackage github workflow which will upload all changed packages to hackage as candidates
44
+
-[ ] check manually candidates in hackage
45
+
-[ ] publish them definitely
46
+
47
+
### ghcup release
48
+
49
+
*[ ] push the release tag to the [haskell-language-server gitlab repo](https://gitlab.haskell.org/haskell/haskell-language-server) to trigger the build of ghcup specific artifacts
50
+
*[ ] change ghcup metadata to include the new release in https://github.com/haskell/ghcup-metadata
36
51
37
52
## Making a new release of haskell-language-server in github
38
53
@@ -140,11 +155,20 @@ To manually upload a new binary we should:
140
155
We aim to do hackage releases following the github ones described above.
141
156
To help in that job we have added a [github workflow](https://github.com/haskell/haskell-language-server/blob/master/.github/workflows/hackage.yml)
142
157
143
-
That script checks, generates the tar.gz files, unpacks and builds them in isolation against hackage head
144
-
if the package version in the branch is different from hackage.
145
-
If the package in the branch has the same version as the released one,
146
-
it will check the relevant files have not changed and will throw an error
147
-
otherwise.
158
+
That script checks, generates the tar.gz files, unpacks and builds them in isolation
159
+
against hackage head if the package version in the branch is different from hackage.
160
+
If the package in the branch has the same version as the released one, it will check
161
+
the relevant files have not changed and will throw an error otherwise.
162
+
163
+
You can trigger a build which only does the above step by pushing a branch named `${version}-check-hackage`.
164
+
165
+
The script will upload the tarballs as candidates, maintainers will have to check and publish them definitely.
166
+
167
+
## haskell gitlab release pipeline
148
168
149
-
The script will upload the tarballs as candidates, maintainers will have
150
-
to check and publish them definitely.
169
+
The project is present in the haskell gitlab server: https://gitlab.haskell.org/haskell/haskell-language-server
170
+
The main motivation is to leverage the ci infrastructure which includes architectures not included in the github ci.
171
+
The specific architectures only available through gitlab are: `armv7-linux`, `x86_64-freebsd`, `aarch64-darwin`, `aarch64-linux`
172
+
The gitlab pipeline uses the configuration file [.gitlab-ci.yml](https://github.com/haskell/haskell-language-server/blob/master/.gitlab-ci.yml)
173
+
and the sh/nix scripts in [.gitlab](https://github.com/haskell/haskell-language-server/tree/master/.gitlab)
174
+
It is triggered by pushing a tag to the gitlab repo.
0 commit comments