diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index cafb48afd4a24a983e123b4a6e4f14343f00f1a3..9cfe71e038d70f58d7f3e340916d723e2dd3ede7 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -115,7 +115,7 @@ variables:
   script:
     - bash ./.gitlab/script/ghcup_version.sh
   variables:
-    JSON_VERSION: "0.0.6"
+    JSON_VERSION: "0.0.7"
   artifacts:
     expire_in: 2 week
     paths:
@@ -248,7 +248,7 @@ variables:
   only:
     - tags
   variables:
-    JSON_VERSION: "0.0.6"
+    JSON_VERSION: "0.0.7"
 
 ######## stack test ########
 
diff --git a/.gitlab/script/ghcup_version.sh b/.gitlab/script/ghcup_version.sh
index 3cdab04421ef2ca4a57c9b2ff5185db846a8543c..f46265625ecd999815727276a15a6c9671296b31 100755
--- a/.gitlab/script/ghcup_version.sh
+++ b/.gitlab/script/ghcup_version.sh
@@ -5,8 +5,6 @@ set -eux
 . "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup_env"
 
 mkdir -p "$CI_PROJECT_DIR"/.local/bin
-mkdir -p data/
-git clone https://github.com/haskell/ghcup-metadata.git data/metadata
 
 CI_PROJECT_DIR=$(pwd)
 
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000000000000000000000000000000000000..ea15d10f39f3a8d2819773f718d8681fb83f9e28
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,4 @@
+[submodule "data/metadata"]
+	path = data/metadata
+	url = https://github.com/haskell/ghcup-metadata.git
+	branch = ghcup-0.1.17.5
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8777b55f1d6949075171a7bf14c2cbd88a16bd44..b44cdbde41f8db1766b217cb1a654b4b0b9ed61f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,6 @@
 # Revision history for ghcup
 
-## 0.1.17.5 -- ????-??-??
+## 0.1.17.5 -- 2022-02-26
 
 * Implement `ghcup run` subcommand wrt [#137](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/137)
 * Support installation of dynamic HLS bindists wrt [HLS #2675](https://github.com/haskell/haskell-language-server/pull/2675) and [#237](https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/237)
diff --git a/data/metadata b/data/metadata
new file mode 160000
index 0000000000000000000000000000000000000000..80b61ee4b7319bd8591f2510f44404cd821eff4c
--- /dev/null
+++ b/data/metadata
@@ -0,0 +1 @@
+Subproject commit 80b61ee4b7319bd8591f2510f44404cd821eff4c
diff --git a/docs/dev.md b/docs/dev.md
index 300f2c43bdbbeca19909238251d703c2a36c9e2e..a63d6ff000d40bbe38f91ac097de7a3f0f32c41f 100644
--- a/docs/dev.md
+++ b/docs/dev.md
@@ -88,7 +88,7 @@ Every subcommand now lives in its own module under [GHCup.OptParse.MyCommand](ht
 
 # Releasing
 
-1. Update version in `ghcup.cabal` and `boostrap-haskell` (`ghver` variable at the top of the script)
+1. Update version in `ghcup.cabal`
 
 2. Update `GHCup.Version` module. `ghcupURL` must only be updated if we change the `GHCupInfo` type or the YAML representation of it. The version of the YAML represents the change increments. `ghcUpVer` is the current application version, read from `ghcup.cabal`.
 
@@ -102,11 +102,13 @@ Every subcommand now lives in its own module under [GHCup.OptParse.MyCommand](ht
 
 7. Upload the final `ghcup-<ver>.yaml` (and a detached GPG sig of it) to `webhost.haskell.org/ghcup/data/` (for yaml versions <= 0.0.6) as well as [https://github.com/haskell/ghcup-metadata](https://github.com/haskell/ghcup-metadata) (for all versions).
 
-8. Upload `bootstrap-haskell` and `bootstrap-haskell.ps1` to `webhost.haskell.org/ghcup/sh/`
+8. Update version in `scripts/bootstrap/bootstrap-haskell` (`ghver` variable at the top of the script)
 
-9. Update the top-level ghcup symlinks at `downloads.haskell.org/~ghcup`
+9. Upload `scripts/bootstrap/bootstrap-haskell` and `scripts/bootstrap/bootstrap-haskell.ps1` to `webhost.haskell.org/ghcup/sh/`
 
-10. Post on reddit/discourse/etc. and collect rewards
+10. Update the top-level ghcup symlinks at `downloads.haskell.org/~ghcup` (see `scripts/update-sftp.sh`)
+
+11. Post on reddit/discourse/etc. and collect rewards
 
 # Documentation
 
diff --git a/lib/GHCup/Version.hs b/lib/GHCup/Version.hs
index 40c978a629f33bdb6d997373bc1534801c79eaa8..37926cb73e8f6feb1ff8bc54946c3676b019a837 100644
--- a/lib/GHCup/Version.hs
+++ b/lib/GHCup/Version.hs
@@ -28,7 +28,7 @@ import qualified Data.Text                     as T
 -- Note that when updating this, CI requires that the file exsists AND the same file exists at
 -- 'https://www.haskell.org/ghcup/exp/ghcup-<ver>.yaml' with some newlines added.
 ghcupURL :: URI
-ghcupURL = [uri|https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-0.0.6.yaml|]
+ghcupURL = [uri|https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-0.0.7.yaml|]
 
 -- | The current ghcup version.
 ghcUpVer :: PVP