mirror of
https://github.com/Novaloop-AG/healthchat-web.git
synced 2026-10-31 08:15:07 +00:00
docs: update image path after repository rename
This commit is contained in:
@@ -53,7 +53,7 @@ separate, manual, and need no code change:
|
|||||||
| Component | Released by | Deployed by |
|
| Component | Released by | Deployed by |
|
||||||
| --- | --- | --- |
|
| --- | --- | --- |
|
||||||
| Web (ghcr.io image) | `healthchat-v*` tag push → `:latest` moves | `gh workflow run deploy.yml` on the ansible repo |
|
| 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
|
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.
|
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
|
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
|
dispatch against the ansible repo — but it needs **no code change anywhere**: the
|
||||||
inventory pins `matrix_client_element_container_image` to
|
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
|
with `pull: always`, so it picks up whatever `:latest` now points at and restarts
|
||||||
the container only if the digest actually moved.
|
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
|
Wait for the release workflow to go green first (the deploy pulls whatever is in the
|
||||||
registry at that moment), then:
|
registry at that moment), then:
|
||||||
|
|
||||||
@@ -170,7 +176,7 @@ gh workflow run deploy.yml \
|
|||||||
--repo Novaloop-AG/matrix-docker-ansible-deploy \
|
--repo Novaloop-AG/matrix-docker-ansible-deploy \
|
||||||
--ref release/healthchat \
|
--ref release/healthchat \
|
||||||
-f command="install-service client-element" \
|
-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
|
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
|
## After the release
|
||||||
|
|
||||||
- [ ] Workflow run is green in GitHub Actions.
|
- [ ] 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
|
(Note the image path contains the repo segment — the workflow builds it as
|
||||||
`format('{0}/healthchat-web', github.repository)`.)
|
`format('{0}/healthchat-web', github.repository)`.)
|
||||||
- [ ] GitHub Release exists at
|
- [ ] GitHub Release exists at
|
||||||
@@ -319,8 +325,8 @@ warning. Prefer fixing the changelog over relying on the fallback.
|
|||||||
`:<version>`:
|
`:<version>`:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker buildx imagetools inspect ghcr.io/novaloop-ag/element-web/healthchat-web:latest
|
docker buildx imagetools inspect ghcr.io/novaloop-ag/healthchat-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:<version>
|
||||||
```
|
```
|
||||||
|
|
||||||
For an `-rc`/`-hotfix`/`-dryrun` tag the opposite is expected: `:latest` must
|
For an `-rc`/`-hotfix`/`-dryrun` tag the opposite is expected: `:latest` must
|
||||||
|
|||||||
@@ -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`.
|
`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
|
### 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.
|
||||||
|
|||||||
Reference in New Issue
Block a user