Skip to content

fix(ci): один тег на продукт-реліз замість зоопарку app@/v/owner-v - #23

Merged
vitaliytv merged 1 commit into
mainfrom
claude/github-releases-full-changelog-78c37a
Jul 27, 2026
Merged

fix(ci): один тег на продукт-реліз замість зоопарку app@/v/owner-v#23
vitaliytv merged 1 commit into
mainfrom
claude/github-releases-full-changelog-78c37a

Conversation

@vitaliytv

Copy link
Copy Markdown
Member

Проблема

GitHub-релізи (v0.6.x, owner-v0.x) щоразу показували "What's Changed" від
дуже старої бази (v0.4.1 / owner-v0.10.0) замість дельти від попереднього
релізу. Причина: generate_release_notes: true довіряло автовизначенню
GitHub, а воно "залипає" на останньому релізному коміті людини — усі
наступні релізні коміти йдуть від github-actions[bot], і GitHub не бачить
їх як "попередній реліз".

Ширший корінь: на одній історії живуть 4 сім'ї тегів на 2 продукти —
app@X.Y.Z + vX.Y.Z (build-тригер) для app, owner@X.Y.Z + owner-vX.Y.Z
для owner. Подвійний тег на продукт — буквальний канон n-tauri.mdc,
розрахований на один продукт на репо; owner-v* — вимушена імпровізація
цього репо під два продукти.

Зміни

  • Новий composite action generate-scoped-release:
    знаходить попередній тег тієї самої продуктової сім'ї (спільний префікс до
    @) версійним сортом і рахує release-notes явно через
    generateReleaseNotes({ previous_tag_name }), замість довіри автовизначенню.
  • release.yml / release-owner.yml: build-тригер тепер app@* / owner@*
    (старі v* / owner-v* лишені в списку тригерів — цього вимагає вендорений
    канон n-tauri.mdc, лінт це перевіряє й автопідправляє).
  • changelog-release.yml: більше не створює окремі vX / owner-vX теги —
    по одному тегу на продукт-реліз; dispatch іде на --ref app@$VER /
    --ref owner@$VER.
  • app/src-tauri/tauri.conf.json: updater endpoint переїхав на канал
    app-latest; task-latest лишається постійним legacy-аліасом (той самий
    latest.json) для вже встановлених білдів, щоб не ламати їм автооновлення.

Не в цьому PR

  • Видалення 22 старих v* / owner-v* GitHub-релізів (реальні DMG-артефакти,
    публічний незворотний стан) — за планом робиться після того, як перший
    реліз за новою схемою (app@X.Y.Z+1 / owner@X.Y.Z+1) підтверджено
    пройде весь цикл (build → DMG → app-latest/task-latest оновлені).
  • Другий fallback updater-endpoint (releases/latest/download/latest.json,
    неоднозначний між продуктами) — preexisting окрема проблема, поза скоупом.

Test plan

  • npx @7n/rules lint — чисто (лишились 2 непов'язані pre-existing
    порушення: owner/package.json без пари Vue-пакетів, lint-k8s.yml
    shellcheck — обидва винесені в окремі фонові тікети, не чіпались тут)
  • actionlint/bunx github-actionlint — чисто на змінених workflow
  • Після мерджу: дочекатись повного циклу changelog-release.yml
    release.yml/release-owner.yml, перевірити gh release view app@<нова> --json body (дельта лише від попереднього app@…, не
    v0.4.1) і app-latest/task-latest assets

GitHub-релізи щоразу показували "What's Changed" від дуже старої бази
(v0.4.1 / owner-v0.10.0), бо generate_release_notes: true довіряло
автовизначенню GitHub, а воно "залипало" на останньому релізному коміті
від людини (усі наступні — від github-actions[bot]).

Зводимо build-тригер і changelog-якір в один тег на продукт (app@X.Y.Z,
owner@X.Y.Z) і рахуємо previous_tag_name явно, версійним сортом у межах
тієї самої продуктової сім'ї — новий спільний composite action
generate-scoped-release. Updater-канал app переїхав на app-latest
(task-latest лишається постійним legacy-аліасом для вже встановлених
білдів).
@vitaliytv
vitaliytv merged commit 8d3d51b into main Jul 27, 2026
2 of 7 checks passed
@vitaliytv
vitaliytv deleted the claude/github-releases-full-changelog-78c37a branch July 31, 2026 04:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant