docs: update image path after repository rename

This commit is contained in:
Sedat Qaja
2026-09-28 13:13:05 +02:00
parent 45bbbd7379
commit 11e3f90c81
2 changed files with 13 additions and 7 deletions
+12 -6
View File
@@ -53,7 +53,7 @@ separate, manual, and need no code change:
| Component | Released by | Deployed by |
| --- | --- | --- |
| Web (ghcr.io image) | `healthchat-v*` tag push → `:latest` moves | `gh workflow run deploy.yml` on the ansible repo |
| Desktop (update feed) | `healthchat-v*` tag push → feed tarball on the Release | `gh workflow run deploy-healthchat-desktop.yaml` |
| Desktop (update feed) | `healthchat-v*` tag push → staged feed archive on packages.healthchat.ch | `gh workflow run deploy-healthchat-desktop.yaml` |
Writing the desktop feed pushes an update to **every installed client**, so it is a
deployment, not a publication step — hence the same manual gate as the server side.
@@ -137,10 +137,16 @@ Actions UI.
Publishing the image does **not** deploy it. Deployment is a separate manual
dispatch against the ansible repo — but it needs **no code change anywhere**: the
inventory pins `matrix_client_element_container_image` to
`ghcr.io/novaloop-ag/element-web/healthchat-web:latest`, and the ansible role pulls
`ghcr.io/novaloop-ag/healthchat-web/healthchat-web:latest`, and the ansible role pulls
with `pull: always`, so it picks up whatever `:latest` now points at and restarts
the container only if the digest actually moved.
The image path is derived from the repository name
(`format('{0}/healthchat-web', github.repository)`). Renaming the repository moves
the image to a new package and the old one stops receiving builds, so the inventory
pin must follow. This happened on 2026-07-29 when `element-web` became
`healthchat-web`; 1.7.0 was the first release that hit it.
Wait for the release workflow to go green first (the deploy pulls whatever is in the
registry at that moment), then:
@@ -170,7 +176,7 @@ gh workflow run deploy.yml \
--repo Novaloop-AG/matrix-docker-ansible-deploy \
--ref release/healthchat \
-f command="install-service client-element" \
-f extra_args="-e matrix_client_element_container_image=ghcr.io/novaloop-ag/element-web/healthchat-web:1.5.0"
-f extra_args="-e matrix_client_element_container_image=ghcr.io/novaloop-ag/healthchat-web/healthchat-web:1.5.0"
```
Note this is a one-shot override: the *next* plain deploy returns to `:latest`. For a
@@ -309,7 +315,7 @@ warning. Prefer fixing the changelog over relying on the fallback.
## After the release
- [ ] Workflow run is green in GitHub Actions.
- [ ] `docker pull ghcr.io/novaloop-ag/element-web/healthchat-web:<version>` succeeds.
- [ ] `docker pull ghcr.io/novaloop-ag/healthchat-web/healthchat-web:<version>` succeeds.
(Note the image path contains the repo segment — the workflow builds it as
`format('{0}/healthchat-web', github.repository)`.)
- [ ] GitHub Release exists at
@@ -319,8 +325,8 @@ warning. Prefer fixing the changelog over relying on the fallback.
`:<version>`:
```bash
docker buildx imagetools inspect ghcr.io/novaloop-ag/element-web/healthchat-web:latest
docker buildx imagetools inspect ghcr.io/novaloop-ag/element-web/healthchat-web:<version>
docker buildx imagetools inspect ghcr.io/novaloop-ag/healthchat-web/healthchat-web:latest
docker buildx imagetools inspect ghcr.io/novaloop-ag/healthchat-web/healthchat-web:<version>
```
For an `-rc`/`-hotfix`/`-dryrun` tag the opposite is expected: `:latest` must
+1 -1
View File
@@ -133,4 +133,4 @@ Conventions unique to this fork that span multiple files:
`pnpm link` is **not** used (it mutates `package.json`/lockfile). Instead, the `postinstall` hook runs `scripts/pnpm-link.ts`, which reads a `.link-config` file of `DEPENDENCY=PATH` lines and replaces those `node_modules` entries with symlinks. To develop against a local SDK, add a line like `matrix-js-sdk=/abs/path/to/matrix-js-sdk` to `.link-config` (not committed) and re-run `pnpm install`.
### Releasing HealthChat
Releases are cut by pushing a `healthchat-v<semver>` tag against `release/healthchat`, which triggers `.github/workflows/build-healthchat.yaml` (web) and `build-healthchat-desktop.yaml` (desktop). Release notes come from `HEALTHCHAT_CHANGES.md` (kept separate from upstream `CHANGELOG.md`); the healthchat-workspace plugin ref is pinned in `.healthchat-workspace-version`. The image is published to `ghcr.io/novaloop-ag/element-web/healthchat-web` as `:<version>`, `:<sha>`, and `:latest` — where `:latest` moves **only** for a clean `X.Y.Z` tag push, never for `-rc`/`-hotfix` tags or manual dispatch runs. **Deploying is a separate manual step for both halves** and needs no version bump anywhere: the web side is a `gh workflow run deploy.yml` against the ansible repo (whose inventory tracks `:latest`), and the desktop side is `deploy-healthchat-desktop.yaml`, which publishes the update feed to healthchat.ch. Cutting a tag never pushes an update to installed desktop clients — `build-healthchat-desktop.yaml` only attaches a staged `healthchat-desktop-feed-<version>.tar.gz` to the Release. Full runbook: `releasing-healthchat` skill.
Releases are cut by pushing a `healthchat-v<semver>` tag against `release/healthchat`, which triggers `.github/workflows/build-healthchat.yaml` (web) and `build-healthchat-desktop.yaml` (desktop). Release notes come from `HEALTHCHAT_CHANGES.md` (kept separate from upstream `CHANGELOG.md`); the healthchat-workspace plugin ref is pinned in `.healthchat-workspace-version`. The image is published to `ghcr.io/novaloop-ag/healthchat-web/healthchat-web` as `:<version>`, `:<sha>`, and `:latest` — where `:latest` moves **only** for a clean `X.Y.Z` tag push, never for `-rc`/`-hotfix` tags or manual dispatch runs. **Deploying is a separate manual step for both halves** and needs no version bump anywhere: the web side is a `gh workflow run deploy.yml` against the ansible repo (whose inventory tracks `:latest`), and the desktop side is `deploy-healthchat-desktop.yaml`, which publishes the update feed to packages.healthchat.ch. Cutting a tag never pushes an update to installed desktop clients — `build-healthchat-desktop.yaml` only stages the feed archive at `packages.healthchat.ch/desktop-releases/<version>/`. Full runbook: `releasing-healthchat` skill.