Skip to content

Commit f2f63bd

Browse files
committed
More details bump instructions
1 parent 222c7f2 commit f2f63bd

File tree

1 file changed

+42
-8
lines changed

1 file changed

+42
-8
lines changed

README.md

Lines changed: 42 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -77,22 +77,56 @@ $ docker build -t haskell-local 9.2/buster && docker run -it haskell-local bash
7777

7878
### Updating The Images
7979

80-
#### Update Dockerfiles
80+
This invovles a 2 step process.
8181

82-
When a new version of Cabal, Stack or GHC is released the images need to be updated. This involves:
82+
1. Update the images in the docker-haskell repository.
83+
2. Update the [official images repo](https://github.com/docker-library/official-images/blob/master/library/haskell) to use the new git commit sha.
84+
85+
#### 1. Update Dockerfiles
86+
87+
When a new version of Cabal, Stack or GHC is released the images need to be updated. In general this involves:
8388

8489
1. Update to the new version in the Dockerfile.
85-
2. Update the PGP key, if the person doing the release has changed.
86-
3. Updating the sha256 to the new version of the tool, for all supported processor architectures.
87-
4. For GHC: Updating the github actions to test the new version.
90+
2. Updating the sha256 to the new version of the tool, for all supported processor architectures.
91+
3. Update the PGP key, if the person doing the release has changed.
92+
93+
##### GHC
94+
95+
1. Replace the old and new GHC version globally eg. `9.4.3` becomes `9.4.4`. This will update both Dockerfiles **and the github actions**.
96+
2. Obtain the new sha256 for the new GHC binary distribution via https://downloads.haskell.org/~ghc/9.4.4/SHA256SUMS . Look for the sha for the `.tar.xz` supported versions (currently `x86_64-deb10` + `aarch64-deb10`).
97+
3. Replace globally the old sha256 for these with the new one obtained in step 2.
98+
4. Update the PGP key if the person doing the release has changed. You can build the image locally at this point to see if it works or not. If it fails you need to update the PGP key. You need to find the key from the person doing the release on the ubuntu keyserver. See below for known releasers.
99+
100+
* [Ben Gamari](https://keyserver.ubuntu.com/pks/lookup?search=ben%40well-typed.com&fingerprint=on&op=index)
101+
* [Zubin Duggal](https://keyserver.ubuntu.com/pks/lookup?search=zubin%40well-typed.com&fingerprint=on&op=index)
102+
103+
An [example](https://github.com/haskell/docker-haskell/commit/d25abd175c94517494f55e74c2a908cb2caa8552)
104+
105+
##### Cabal
106+
107+
1. Replace the old and new cabal version globally eg. `3.6.2.0` becomes `3.8.1.0`.
108+
2. Obtain the new sha256 for the new cabal binary distribution via https://downloads.haskell.org/~cabal/cabal-install-3.8.1.0/SHA256SUMS . Look for the sha for the `.tar.xz` supported versions (currently `x86_64-linux-deb10` + `aarch64-linux-deb10`).
109+
3. Replace globally the old sha256 for these with the new one obtained in step 2.
110+
4. Update the PGP key if the person doing the release has changed. You can build the image locally at this point to see if it works or not. If it fails you need to update the PGP key. You need to find the key from the person doing the release on the ubuntu keyserver. See below for known releasers.
111+
112+
* [Mikolaj Konarski](https://keyserver.ubuntu.com/pks/lookup?search=mikolaj.konarski%40gmail.com&fingerprint=on&op=index)
113+
114+
An [example](https://github.com/haskell/docker-haskell/commit/73cf1f7f950cd34bf7cc9691067b0e7761016c1a)
115+
116+
##### Stack
117+
118+
1. Replace the old and new stack version globally eg. `2.9.1` becomes `2.9.3`.
119+
2. Obtain the new sha256 for the new stack binary distribution via https://github.com/commercialhaskell/stack/releases/tag/v2.9.3 . Look for `stack-2.9.3-linux-x86_64.tar.gz.sha256` + `stack-2.9.3-linux-aarch64.tar.gz.sha256` files in the assets list.
120+
3. Replace globally the old sha256 for these with the new one obtained in step 2.
121+
4. The [stack PGP key](https://docs.haskellstack.org/en/stable/SIGNING_KEY/) does not change so can be left as is.
88122

89-
See an [example](https://github.com/haskell/docker-haskell/pull/83/files) of a GHC update.
123+
An [example](https://github.com/haskell/docker-haskell/commit/321f4b6dd77e2caee2caa947b50779fb47c26959) (this also enabled aarch64 for stack, so has a bit more noise but you get the idea).
90124

91-
#### Release New Versions
125+
#### 2. Release New Versions
92126

93127
Images are built and released by the central docker official images system. Specifically haskell is maintained in this [file](https://github.com/docker-library/official-images/blob/master/library/haskell). See the [docs](https://github.com/docker-library/official-images#instruction-format) on this format.
94128

95-
1. Determine which docker haskell image GHC versions have been impacted by the unreleased changes.
129+
1. Determine which docker haskell image GHC versions have been impacted by the unreleased changes (stack + cabal bumps impacts all versions, GHC just impacts specific versions).
96130
2. Update the `GitCommit` in the [`haskell`](https://github.com/docker-library/official-images/blob/master/library/haskell) file.
97131
3. Update the `Tags` if these have changed.
98132
3. Create a PR, including info on what has changed. The official images people will review the actual Dockerfile changes as they want official images to maintain a high level of quality.

0 commit comments

Comments
 (0)