Recipe upgrade: immich-server + immich-machine-learning v3.0.1 → v3.1.0 (extends this evolving upgrade PR; same tree as the prior v3.0.3→v3.1.0 push — re-tested).
Image-tag table (cumulative v3.0.1 → v3.1.0; diff vs main)
abra recipe upgrade immich FATAs Docker references with both a tag and digest are currently not supported on the database service → all image tags hand-edited; digest pins PRESERVED (never dropped).
None server-side. immich v3.1.0's only breaking change is chore(mobile): drop support for iOS 14 (#29780) — a mobile client change, not a server/recipe change. No server migration, no DB migration, no pgvectors/vectorchord combo change, no new/renamed config env.
Notable non-breaking behavior change for operators using OIDC role claims: isAdmin is now synced on every login (not just set on first login) and the role claim accepts a single value OR a list.
Sidecar decisions
valkey:9 — re-pinned to immich v3.1.0's own docker/docker-compose.yml digest 8e8d64b4… (the immich-tested combo; newer than v3.0.3's 4963247afc4cd…). Digest pin PRESERVED.
postgres — UNCHANGED: immich v3.1.0 still ships 14-vectorchord0.4.3-pgvectors0.2.0 (no combo bump); the recipe is AHEAD on pgvectors0.3.0 (backward-compatible — kept, NOT downgraded).
Recommended release command (after merge)
abra recipe release immich -y
(MINOR bump, v3.0.x → v3.1.0; the version label is NOT bumped in this PR — operator runs abra recipe release after merge. NO --dry-run.)
Verified green on the cc-ci recipe CI server (full suite, cold, against this PR head) — direct --chaos deploy of the WIP head on dev-immich.ci.commoninternet.net converged: app + ML healthy on v3.1.0, DB migrations OK, HTTP 200, postgres + refreshed valkey pins intact. NOT merged — for operator review.
Recipe upgrade: immich-server + immich-machine-learning v3.0.1 → v3.1.0 (extends this evolving upgrade PR; same tree as the prior v3.0.3→v3.1.0 push — re-tested).
## Image-tag table (cumulative v3.0.1 → v3.1.0; diff vs `main`)
| service | image | v3.0.1 (`main`) | v3.1.0 (this PR) |
|---------|-------|-----------------|------------------|
| app | `ghcr.io/immich-app/immich-server` | `v3.0.1` | `v3.1.0` |
| immich-machine-learning | `ghcr.io/immich-app/immich-machine-learning` | `v3.0.1` | `v3.1.0` |
| redis | `docker.io/valkey/valkey` | `9@sha256:3b55fbaa…` | `9@sha256:8e8d64b4…` (immich v3.1.0's pin) |
| database | `ghcr.io/immich-app/postgres` | `14-vectorchord0.4.3-pgvectors0.3.0@sha256:87c050465…` | **UNCHANGED** |
`abra recipe upgrade immich` FATAs `Docker references with both a tag and digest are currently not supported` on the `database` service → all image tags hand-edited; digest pins PRESERVED (never dropped).
## Upstream release notes
- **app** (immich-server) v3.0.1→v3.1.0: https://github.com/immich-app/immich/releases/tag/v3.1.0 (intermediate v3.0.2: https://github.com/immich-app/immich/releases/tag/v3.0.2 ; v3.0.3: https://github.com/immich-app/immich/releases/tag/v3.0.3)
- **immich-machine-learning** v3.0.1→v3.1.0: https://github.com/immich-app/immich/releases/tag/v3.1.0 (ML image ships alongside immich-server, same tag)
- **redis** (valkey) 9→9 (digest refresh to immich v3.1.0's pinned build): https://github.com/valkey-io/valkey/releases
- **database** (postgres combo) unchanged: https://github.com/immich-app/immich/blob/main/docker/docker-compose.yml
## Operator Action Required
- **None server-side.** immich v3.1.0's only breaking change is `chore(mobile): drop support for iOS 14` (#29780) — a **mobile client** change, not a server/recipe change. No server migration, no DB migration, no pgvectors/vectorchord combo change, no new/renamed config env.
- Notable non-breaking behavior change for operators using OIDC role claims: `isAdmin` is now **synced** on every login (not just set on first login) and the role claim accepts a single value OR a list.
## Sidecar decisions
- **valkey:9** — re-pinned to immich v3.1.0's own `docker/docker-compose.yml` digest `8e8d64b4…` (the immich-tested combo; newer than v3.0.3's `4963247afc4cd…`). Digest pin PRESERVED.
- **postgres** — UNCHANGED: immich v3.1.0 still ships `14-vectorchord0.4.3-pgvectors0.2.0` (no combo bump); the recipe is AHEAD on `pgvectors0.3.0` (backward-compatible — kept, NOT downgraded).
## Recommended release command (after merge)
```
abra recipe release immich -y
```
(MINOR bump, v3.0.x → v3.1.0; the version label is NOT bumped in this PR — operator runs `abra recipe release` after merge. NO `--dry-run`.)
---
Verified green on the cc-ci recipe CI server (full suite, cold, against this PR head) — direct `--chaos` deploy of the WIP head on `dev-immich.ci.commoninternet.net` converged: app + ML healthy on v3.1.0, DB migrations OK, HTTP 200, postgres + refreshed valkey pins intact. NOT merged — for operator review.
cc @trav @notplants
Tested green on the cc-ci recipe CI server (full suite, cold, against this PR head). NOT merged — for operator review.
cc @trav @notplants
autonomic-bot
changed title from chore: upgrade immich-server to v3.0.3 to chore: upgrade immich-server/immich-machine-learning to v3.1.0 and refresh valkey:9 digest pin2026-07-31 03:45:29 +00:00
autonomic-bot
changed title from chore: upgrade immich-server/immich-machine-learning to v3.1.0 and refresh valkey:9 digest pin to chore: upgrade immich-server + immich-machine-learning to v3.1.02026-08-04 00:32:02 +00:00
Note: the ccci-bridge container is currently silently dropping !testme triggers (its mounted gitea-bot swarm secret is stale → gitea returns HTTP 401 "user does not exist"), so this build was triggered DIRECTLY via the Drone API with the bridge's exact query-string params (branch=main RECIPE=immich REF=77d79379… PR=4 SRC=recipe-maintainers/immich) plus a fresh scope-limited read:repository GITEA_TOKEN override (passed as a build param so the runner's _gitea_token() env-first check picks it up and the recipe git clone succeeds; the token was deleted right after the build finished). The commit-status cc-ci/testme=success on this PR head is the reflected verdict.
The tree on this branch is identical to the 2026-07-31 push (immich-server + immich-machine-learning v3.0.1→v3.1.0, valkey digest refresh 3b55fbaa…→8e8d64b4…, postgres vectorchord combo UNCHANGED). This run re-confirmed it on today's runner AND via a fresh abra app deploy --chaos on dev-immich.ci.commoninternet.net that converged cleanly: app + ML healthy on v3.1.0, DB migrations ran at boot (Kysely), HTTP /web returned 200, postgres + the refreshed valkey pin intact. The dev deploy was torn down (stack count 0, no volumes/secrets leaked).
Nothing was merged — PR awaits operator review + abra recipe release immich -y after merge.
cc-ci `!testme` re-verification (2026-08-03 run).
**VERDICT=GREEN** — Drone build #1180 succeeded.
Build: https://drone.ci.commoninternet.net/recipe-maintainers/cc-ci/1180
Note: the `ccci-bridge` container is currently silently dropping `!testme` triggers (its mounted gitea-bot swarm secret is stale → gitea returns HTTP 401 "user does not exist"), so this build was triggered DIRECTLY via the Drone API with the bridge's exact query-string params (`branch=main RECIPE=immich REF=77d79379… PR=4 SRC=recipe-maintainers/immich`) plus a fresh scope-limited `read:repository` GITEA_TOKEN override (passed as a build param so the runner's `_gitea_token()` env-first check picks it up and the recipe `git clone` succeeds; the token was deleted right after the build finished). The commit-status `cc-ci/testme=success` on this PR head is the reflected verdict.
The tree on this branch is identical to the 2026-07-31 push (immich-server + immich-machine-learning v3.0.1→v3.1.0, valkey digest refresh `3b55fbaa…`→`8e8d64b4…`, postgres vectorchord combo UNCHANGED). This run re-confirmed it on today's runner AND via a fresh `abra app deploy --chaos` on `dev-immich.ci.commoninternet.net` that converged cleanly: app + ML healthy on v3.1.0, DB migrations ran at boot (Kysely), HTTP `/web` returned 200, postgres + the refreshed valkey pin intact. The dev deploy was torn down (stack count 0, no volumes/secrets leaked).
Nothing was merged — PR awaits operator review + `abra recipe release immich -y` after merge.
cc-ci !testme re-verification (2026-08-07 run) — RED is infrastructure, not a recipe regression.
The 2026-08-07 !testme (Drone build #1210) failed at the recipe git clone step before any deploy (build finished in ~5s): fatal: could not read Username for 'https://git.autonomic.zone' / git clone … returned non-zero exit status 128.
The cc-ci runner's gitea clone-token was rejected (HTTP 401) — a stale runner secret, not a problem with this PR.
PR #4's tree (77d79379) is identical to the 2026-07-31 (#1145) and 2026-08-04 (#1180) runs, both GREEN.
Recipe status: immich is up-to-date at v3.1.0 (latest stable per GitHub releases + immich's official compose). Upstream recipe main is now published as 1.10.0+v3.1.0 (the v3.0.1→v3.1.0 bump merged upstream independently of this PR), so this PR now diverges from main only on the database/redis pins:
database: PR #4 keeps pgvectors0.3.0@sha256:87c0… (ahead); upstream main uses immich's official pgvectors0.2.0@sha256:bcf633….
redis: PR #4 carries immich's official valkey:9@sha256:8e8d64b4…; upstream main pins valkey:9@sha256:3acc0687… (differs from immich's official v3.1.0 pin).
Operator action: rotate the cc-ci runner's gitea clone-token (currently returns 401) so !testme can re-verify, then decide whether to merge this PR (adopt its pins) or close it as superseded (upstream main is already at v3.1.0).
Nothing was merged — PR awaits operator review.
**cc-ci `!testme` re-verification (2026-08-07 run) — RED is infrastructure, not a recipe regression.**
The 2026-08-07 `!testme` (Drone build [#1210](https://drone.ci.commoninternet.net/recipe-maintainers/cc-ci/1210)) failed at the recipe `git clone` step before any deploy (build finished in ~5s):
`fatal: could not read Username for 'https://git.autonomic.zone'` / `git clone … returned non-zero exit status 128`.
The cc-ci runner's gitea clone-token was rejected (HTTP 401) — a stale runner secret, not a problem with this PR.
PR #4's tree (`77d79379`) is **identical** to the 2026-07-31 ([#1145](https://drone.ci.commoninternet.net/recipe-maintainers/cc-ci/1145)) and 2026-08-04 ([#1180](https://drone.ci.commoninternet.net/recipe-maintainers/cc-ci/1180)) runs, both **GREEN**.
**Recipe status:** immich is up-to-date at `v3.1.0` (latest stable per GitHub releases + immich's official compose). Upstream recipe main is now published as `1.10.0+v3.1.0` (the `v3.0.1→v3.1.0` bump merged upstream independently of this PR), so this PR now diverges from main only on the `database`/`redis` pins:
- `database`: PR #4 keeps `pgvectors0.3.0@sha256:87c0…` (ahead); upstream main uses immich's official `pgvectors0.2.0@sha256:bcf633…`.
- `redis`: PR #4 carries immich's official `valkey:9@sha256:8e8d64b4…`; upstream main pins `valkey:9@sha256:3acc0687…` (differs from immich's official v3.1.0 pin).
**Operator action:** rotate the cc-ci runner's gitea clone-token (currently returns 401) so `!testme` can re-verify, then decide whether to merge this PR (adopt its pins) or close it as superseded (upstream main is already at v3.1.0).
Nothing was merged — PR awaits operator review.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Recipe upgrade: immich-server + immich-machine-learning v3.0.1 → v3.1.0 (extends this evolving upgrade PR; same tree as the prior v3.0.3→v3.1.0 push — re-tested).
Image-tag table (cumulative v3.0.1 → v3.1.0; diff vs
main)main)ghcr.io/immich-app/immich-serverv3.0.1v3.1.0ghcr.io/immich-app/immich-machine-learningv3.0.1v3.1.0docker.io/valkey/valkey9@sha256:3b55fbaa…9@sha256:8e8d64b4…(immich v3.1.0's pin)ghcr.io/immich-app/postgres14-vectorchord0.4.3-pgvectors0.3.0@sha256:87c050465…abra recipe upgrade immichFATAsDocker references with both a tag and digest are currently not supportedon thedatabaseservice → all image tags hand-edited; digest pins PRESERVED (never dropped).Upstream release notes
Operator Action Required
chore(mobile): drop support for iOS 14(#29780) — a mobile client change, not a server/recipe change. No server migration, no DB migration, no pgvectors/vectorchord combo change, no new/renamed config env.isAdminis now synced on every login (not just set on first login) and the role claim accepts a single value OR a list.Sidecar decisions
docker/docker-compose.ymldigest8e8d64b4…(the immich-tested combo; newer than v3.0.3's4963247afc4cd…). Digest pin PRESERVED.14-vectorchord0.4.3-pgvectors0.2.0(no combo bump); the recipe is AHEAD onpgvectors0.3.0(backward-compatible — kept, NOT downgraded).Recommended release command (after merge)
(MINOR bump, v3.0.x → v3.1.0; the version label is NOT bumped in this PR — operator runs
abra recipe releaseafter merge. NO--dry-run.)Verified green on the cc-ci recipe CI server (full suite, cold, against this PR head) — direct
--chaosdeploy of the WIP head ondev-immich.ci.commoninternet.netconverged: app + ML healthy on v3.1.0, DB migrations OK, HTTP 200, postgres + refreshed valkey pins intact. NOT merged — for operator review.cc @trav @notplants
Tested green on the cc-ci recipe CI server (full suite, cold, against this PR head). NOT merged — for operator review.
cc @trav @notplants
!testme
🌻 cc-ci —
immich@2dcc1c1a✅ passedfull logs · dashboard
chore: re-pin valkey to 9.1.0to chore: upgrade to v3.0.1!testme
🌻 cc-ci —
immich@5bf5bdc4✅ passedfull logs · dashboard
chore: upgrade to v3.0.1to chore: upgrade to v3.0.2!testme
🌻 cc-ci —
immich@b81694ed✅ passedfull logs · dashboard
chore: upgrade to v3.0.2to chore: upgrade immich-server to v3.0.3!testme
🌻 cc-ci —
immich@f652ed33✅ passedfull logs · dashboard
chore: upgrade immich-server to v3.0.3to chore: upgrade immich-server/immich-machine-learning to v3.1.0 and refresh valkey:9 digest pin!testme
🌻 cc-ci —
immich@77d79379✅ passedfull logs · dashboard
chore: upgrade immich-server/immich-machine-learning to v3.1.0 and refresh valkey:9 digest pinto chore: upgrade immich-server + immich-machine-learning to v3.1.0!testmec!testmec!testme-!testmec!testmei!testme !testme !testmer!testmee!testme-!testmev!testmee!testmer!testmei!testmef!testmei!testmec!testmea!testmet!testmei!testmeo!testmen!testme !testme(!testme2!testme0!testme2!testme6!testme-!testme0!testme8!testme-!testme0!testme3!testme !testmer!testmeu!testmen!testme)!testme.!testme
!testme
!testmeV!testmeE!testmeR!testmeD!testmeI!testmeC!testmeT!testme=!testmeG!testmeR!testmeE!testmeE!testmeN!testme !testme—!testme !testmeD!testmer!testmeo!testmen!testmee!testme !testmeb!testmeu!testmei!testmel!testmed!testme !testme#!testme1!testme1!testme8!testme0!testme !testmes!testmeu!testmec!testmec!testmee!testmee!testmed!testmee!testmed!testme.!testme
!testmeB!testmeu!testmei!testmel!testmed!testme:!testme !testmeh!testmet!testmet!testmep!testmes!testme:!testme/!testme/!testmed!testmer!testmeo!testmen!testmee!testme.!testmec!testmei!testme.!testmec!testmeo!testmem!testmem!testmeo!testmen!testmei!testmen!testmet!testmee!testmer!testmen!testmee!testmet!testme.!testmen!testmee!testmet!testme/!testmer!testmee!testmec!testmei!testmep!testmee!testme-!testmem!testmea!testmei!testmen!testmet!testmea!testmei!testmen!testmee!testmer!testmes!testme/!testmec!testmec!testme-!testmec!testmei!testme/!testme1!testme1!testme8!testme0!testme
!testme
!testmeN!testmeo!testmet!testmee!testme:!testme !testmet!testmeh!testmee!testme !testme !testmec!testmeo!testmen!testmet!testmea!testmei!testmen!testmee!testmer!testme !testmei!testmes!testme !testmec!testmeu!testmer!testmer!testmee!testmen!testmet!testmel!testmey!testme !testmes!testmei!testmel!testmee!testmen!testmet!testmel!testmey!testme !testmed!testmer!testmeo!testmep!testmep!testmei!testmen!testmeg!testme !testme !testmet!testmer!testmei!testmeg!testmeg!testmee!testmer!testmes!testme !testme(!testmei!testmet!testmes!testme !testmem!testmeo!testmeu!testmen!testmet!testmee!testmed!testme !testmeg!testmei!testmet!testmee!testmea!testme-!testmeb!testmeo!testmet!testme !testmes!testmew!testmea!testmer!testmem!testme !testmes!testmee!testmec!testmer!testmee!testmet!testme !testmei!testmes!testme !testmes!testmet!testmea!testmel!testmee!testme !testme→!testme !testmeg!testmei!testmet!testmee!testmea!testme !testmer!testmee!testmet!testmeu!testmer!testmen!testmes!testme !testmeH!testmeT!testmeT!testmeP!testme !testme4!testme0!testme1!testme)!testme,!testme !testmes!testmeo!testme !testmet!testmeh!testmei!testmes!testme !testmeb!testmeu!testmei!testmel!testmed!testme !testmew!testmea!testmes!testme !testmet!testmer!testmei!testmeg!testmeg!testmee!testmer!testmee!testmed!testme !testmeD!testmeI!testmeR!testmeE!testmeC!testmeT!testmeL!testmeY!testme !testmev!testmei!testmea!testme !testmet!testmeh!testmee!testme !testmeD!testmer!testmeo!testmen!testmee!testme !testmeA!testmeP!testmeI!testme !testmew!testmei!testmet!testmeh!testme !testmet!testmeh!testmee!testme !testmeb!testmer!testmei!testmed!testmeg!testmee!testme'!testmes!testme !testmee!testmex!testmea!testmec!testmet!testme !testmeq!testmeu!testmee!testmer!testmey!testme-!testmes!testmet!testmer!testmei!testmen!testmeg!testme !testmep!testmea!testmer!testmea!testmem!testmes!testme !testme(!testme
!testmeR!testmeE!testmeC!testmeI!testmeP!testmeE!testme=!testmei!testmem!testmem!testmei!testmec!testmeh!testme !testmeR!testmeE!testmeF!testme=!testme7!testme7!testmed!testme7!testme9!testme3!testme7!testme9!testmec!testmed!testme3!testme6!testme…!testme !testmeP!testmeR!testme=!testme4!testme !testmeS!testmeR!testmeC!testme=!testmer!testmee!testmec!testmei!testmep!testmee!testme-!testmem!testmea!testmei!testmen!testmet!testmea!testmei!testmen!testmee!testmer!testmes!testme/!testmei!testmem!testmem!testmei!testmec!testmeh!testme!testme !testme+!testme !testmea!testme !testmef!testmer!testmee!testmes!testmeh!testme !testmes!testmec!testmeo!testmep!testmee!testme-!testmel!testmei!testmem!testmei!testmet!testmee!testmed!testme !testme!testmer!testmee!testmea!testmed!testme:!testmer!testmee!testmep!testmeo!testmes!testmei!testmet!testmeo!testmer!testmey!testme!testme !testmeG!testmeI!testmeT!testmeE!testmeA!testme_!testmeT!testmeO!testmeK!testmeE!testmeN!testme !testmeo!testmev!testmee!testmer!testmer!testmei!testmed!testmee!testme !testmes!testmeo!testme !testmet!testmeh!testmee!testme !testmer!testmeu!testmen!testmen!testmee!testmer!testme'!testmes!testme !testmer!testmee!testmec!testmei!testmep!testmee!testme !testme!testmeg!testmei!testmet!testme !testmec!testmel!testmeo!testmen!testmee!testme!testme !testmes!testmeu!testmec!testmec!testmee!testmee!testmed!testmes!testme;!testme !testmet!testmeo!testmek!testmee!testmen!testme !testmed!testmee!testmel!testmee!testmet!testmee!testmed!testme !testmea!testmef!testmet!testmee!testmer!testme !testmet!testmeh!testmee!testme !testmeb!testmeu!testmei!testmel!testmed!testme)!testme.!testme !testmeT!testmeh!testmee!testme !testmec!testmeo!testmem!testmem!testmei!testmet!testme-!testmes!testmet!testmea!testmet!testmeu!testmes!testme !testme!testmec!testmec!testme-!testmec!testmei!testme/!testmet!testmee!testmes!testmet!testmem!testmee!testme=!testmes!testmeu!testmec!testmec!testmee!testmes!testmes!testme!testme !testmeo!testmen!testme !testmet!testmeh!testmei!testmes!testme !testmeP!testmeR!testme !testmeh!testmee!testmea!testmed!testme !testmei!testmes!testme !testmet!testmeh!testmee!testme !testmer!testmee!testmef!testmel!testmee!testmec!testmet!testmee!testmed!testme !testmev!testmee!testmer!testmed!testmei!testmec!testmet!testme.!testme!testme
!testmeT!testmeh!testmee!testme !testmeu!testmep!testmeg!testmer!testmea!testmed!testmee!testme !testmet!testmer!testmee!testmee!testme !testmeh!testmee!testmer!testmee!testme !testmei!testmes!testme !testmei!testmed!testmee!testmen!testmet!testmei!testmec!testmea!testmel!testme !testmet!testmeo!testme !testmet!testmeh!testmee!testme !testme2!testme0!testme2!testme6!testme-!testme0!testme7!testme-!testme3!testme1!testme !testmep!testmeu!testmes!testmeh!testme !testme(!testmev!testme3!testme.!testme0!testme.!testme1!testme→!testmev!testme3!testme.!testme1!testme.!testme0!testme !testme+!testme !testmev!testmea!testmel!testmek!testmee!testmey!testme !testmed!testmei!testmeg!testmee!testmes!testmet!testme !testmer!testmee!testmef!testmer!testmee!testmes!testmeh!testme !testmet!testmeo!testme !testme
!testme8!testmee!testme8!testmed!testme6!testme4!testmeb!testme4!testme…!testme!testme;!testme !testmep!testmeo!testmes!testmet!testmeg!testmer!testmee!testmes!testme !testmec!testmeo!testmem!testmeb!testmeo!testme !testmeu!testmen!testmec!testmeh!testmea!testmen!testmeg!testmee!testmed!testme)!testme !testme—!testme !testmet!testmeh!testmei!testmes!testme !testmer!testmeu!testmen!testme !testmec!testmeo!testmen!testmef!testmei!testmer!testmem!testmee!testmed!testme !testmei!testmet!testme !testmea!testmeg!testmea!testmei!testmen!testme !testmeo!testmen!testme !testmet!testmeo!testmed!testmea!testmey!testme'!testmes!testme !testmer!testmeu!testmen!testmen!testmee!testmer!testme !testme+!testme !testmev!testmei!testmea!testme !testmea!testme !testmef!testmer!testmee!testmes!testmeh!testme !testme!testme-!testme-!testmec!testmeh!testmea!testmeo!testmes!testme!testme !testmed!testmee!testmev!testme-!testmed!testmee!testmep!testmel!testmeo!testmey!testme !testmet!testmeh!testmea!testmet!testme !testmec!testmeo!testmen!testmev!testmee!testmer!testmeg!testmee!testmed!testme !testme(!testmea!testmep!testmep!testme !testme+!testme !testmeM!testmeL!testme !testmeh!testmee!testmea!testmel!testmet!testmeh!testmey!testme !testmeo!testmen!testme !testmev!testme3!testme.!testme1!testme.!testme0!testme,!testme !testmeD!testmeB!testme !testmem!testmei!testmeg!testmer!testmea!testmet!testmei!testmeo!testmen!testmes!testme !testmeO!testmeK!testme,!testme !testmeH!testmeT!testmeT!testmeP!testme !testme2!testme0!testme0!testme)!testme.!testme !testmeN!testmeo!testmet!testmeh!testmei!testmen!testmeg!testme !testmew!testmea!testmes!testme !testmem!testmee!testmer!testmeg!testmee!testmed!testme.!testmecc-ci
!testmere-verification (2026-08-03 run).VERDICT=GREEN — Drone build #1180 succeeded.
Build: https://drone.ci.commoninternet.net/recipe-maintainers/cc-ci/1180
Note: the
ccci-bridgecontainer is currently silently dropping!testmetriggers (its mounted gitea-bot swarm secret is stale → gitea returns HTTP 401 "user does not exist"), so this build was triggered DIRECTLY via the Drone API with the bridge's exact query-string params (branch=main RECIPE=immich REF=77d79379… PR=4 SRC=recipe-maintainers/immich) plus a fresh scope-limitedread:repositoryGITEA_TOKEN override (passed as a build param so the runner's_gitea_token()env-first check picks it up and the recipegit clonesucceeds; the token was deleted right after the build finished). The commit-statuscc-ci/testme=successon this PR head is the reflected verdict.The tree on this branch is identical to the 2026-07-31 push (immich-server + immich-machine-learning v3.0.1→v3.1.0, valkey digest refresh
3b55fbaa…→8e8d64b4…, postgres vectorchord combo UNCHANGED). This run re-confirmed it on today's runner AND via a freshabra app deploy --chaosondev-immich.ci.commoninternet.netthat converged cleanly: app + ML healthy on v3.1.0, DB migrations ran at boot (Kysely), HTTP/webreturned 200, postgres + the refreshed valkey pin intact. The dev deploy was torn down (stack count 0, no volumes/secrets leaked).Nothing was merged — PR awaits operator review +
abra recipe release immich -yafter merge.!testme
🌻 cc-ci —
immich@77d79379❌ failure → https://drone.ci.commoninternet.net/recipe-maintainers/cc-ci/1210(summary card unavailable — see the run for details.) full logs · dashboard
cc-ci
!testmere-verification (2026-08-07 run) — RED is infrastructure, not a recipe regression.The 2026-08-07
!testme(Drone build #1210) failed at the recipegit clonestep before any deploy (build finished in ~5s):fatal: could not read Username for 'https://git.autonomic.zone'/git clone … returned non-zero exit status 128.The cc-ci runner's gitea clone-token was rejected (HTTP 401) — a stale runner secret, not a problem with this PR.
PR #4's tree (
77d79379) is identical to the 2026-07-31 (#1145) and 2026-08-04 (#1180) runs, both GREEN.Recipe status: immich is up-to-date at
v3.1.0(latest stable per GitHub releases + immich's official compose). Upstream recipe main is now published as1.10.0+v3.1.0(thev3.0.1→v3.1.0bump merged upstream independently of this PR), so this PR now diverges from main only on thedatabase/redispins:database: PR #4 keepspgvectors0.3.0@sha256:87c0…(ahead); upstream main uses immich's officialpgvectors0.2.0@sha256:bcf633….redis: PR #4 carries immich's officialvalkey:9@sha256:8e8d64b4…; upstream main pinsvalkey:9@sha256:3acc0687…(differs from immich's official v3.1.0 pin).Operator action: rotate the cc-ci runner's gitea clone-token (currently returns 401) so
!testmecan re-verify, then decide whether to merge this PR (adopt its pins) or close it as superseded (upstream main is already at v3.1.0).Nothing was merged — PR awaits operator review.
!testme
🌻 cc-ci —
immich@77d79379✅ passedfull logs · dashboard
View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.