fix(ci): deploy-webhook шлёт JSON {ref,tag} — testnet тянул протухший latest #90

Closed
claude wants to merge 1 commits from fix/deploy-webhook-tag-json into dev
Owner

Корень

Интеграции Semaphore github-containers-testnet (id=9→tmpl 18) и -production (id=10→tmpl 49) ждут JSON-body:

  • matcher: ключ ref"", иначе webhook отбрасывается;
  • extract: tag из ключа tag → переменная шаблона tag.

А release.yaml слал сырую строку -d "$TAG_NAME" → нет ref, нет ключа tagtag=не заданDOCKER_TAG падает в default('latest').

:latest для testnet не обновляется (release.yaml пушит :latest только при IS_PROD; alpha — только version-tag). Поэтому деплой тянул протухший прод-latest (на сервере — 2026-05-30, до PR #51 от 06-02).

Симптом, который это вызвало

Старый бандл desktop (без бэкенд-мутации authorizeDecision) слал authorize транзакцию client-side ключом председателя, а контракт soviet уже require_auth(coopname)missing authority of voskhod при утверждении решения совета.

Регрессия

Переезд GitHub→Gitea: раньше деплой дёргался нативным GitHub-webhook (богатый JSON с ref), теперь — curl из workflow сырой строкой. Semaphore не трогали — он настроен верно.

Фикс

-d "{\"ref\":\"${{ github.ref }}\",\"tag\":\"$TAG_NAME\"}" — JSON проходит matcher (ref) и даёт extract'у tag.

## Корень Интеграции Semaphore `github-containers-testnet` (id=9→tmpl 18) и `-production` (id=10→tmpl 49) ждут **JSON-body**: - **matcher**: ключ `ref` ≠ `""`, иначе webhook отбрасывается; - **extract**: `tag` из ключа `tag` → переменная шаблона `tag`. А `release.yaml` слал **сырую строку** `-d "$TAG_NAME"` → нет `ref`, нет ключа `tag` → `tag=не задан` → `DOCKER_TAG` падает в `default('latest')`. `:latest` для testnet **не обновляется** (release.yaml пушит `:latest` только при IS_PROD; alpha — только version-tag). Поэтому деплой тянул протухший прод-`latest` (на сервере — 2026-05-30, до PR #51 от 06-02). ## Симптом, который это вызвало Старый бандл desktop (без бэкенд-мутации `authorizeDecision`) слал `authorize` транзакцию client-side ключом председателя, а контракт `soviet` уже `require_auth(coopname)` → **`missing authority of voskhod`** при утверждении решения совета. ## Регрессия Переезд GitHub→Gitea: раньше деплой дёргался нативным GitHub-webhook (богатый JSON с `ref`), теперь — `curl` из workflow сырой строкой. Semaphore не трогали — он настроен верно. ## Фикс `-d "{\"ref\":\"${{ github.ref }}\",\"tag\":\"$TAG_NAME\"}"` — JSON проходит matcher (`ref`) и даёт extract'у `tag`.
claude added 1 commit 2026-06-05 05:54:12 +00:00
fix(ci): deploy-webhook шлёт JSON {ref,tag} вместо сырого тега
Typecheck / desktop (pull_request) Successful in 13m52s
Typecheck / controller (pull_request) Successful in 13m13s
68482126ef
Интеграции Semaphore github-containers-testnet/-production матчат webhook по
ключу ref (unequals "") и извлекают tag из ключа tag в переменную шаблона
tag → containered-setup.yaml тянет dicoop/*:$DOCKER_TAG. Сырой -d "$TAG_NAME"
не проходил matcher и не давал extract'у ключ tag → tag=не задан → DOCKER_TAG
по умолчанию latest. На testnet latest пушится только прод-релизами (alpha — нет),
поэтому деплой тянул протухший образ: фронт без бэкенд-мутации authorizeDecision
слал authorize client-side ключом председателя, а контракт уже require_auth(coopname)
→ missing authority of voskhod. Регрессия переезда GitHub→Gitea.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
claude closed this pull request 2026-06-05 06:05:57 +00:00
Some checks are pending
Typecheck / desktop (pull_request) Successful in 13m52s
Typecheck / controller (pull_request) Successful in 13m13s

Pull request closed

Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: C9S/mono#90