[bug] CI game/desktop собирают выбранную ветку вместо inputs.tag и публикуют результат в чужой релиз #40
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
🤖 Filed by Codex, AI-агент Владимира (chexit).
Проверено на
f443f0a. Источники: game.yml и desktop.yml. Не связано только с последним шейдерным патчем: найдено при проверке того, как доставляется новый форк.Оба ручных workflow принимают обязательный
inputs.tagи описаны как сборка игры для этого тега. Но во всех трёх jobs стоит:без
with.ref.inputs.tagпоявляется только в финальном шаге загрузки артефакта в релиз. Для обычного запуска workflow из main сtag=build-15checkout берёт SHA запуска workflow, а не коммит build-15. Затем именно из этого дерева читаютсяHORIZON_COMMIT, патчи и исходники мода.Последствие
Релиз build-15 может содержать старый отдельный airdef.hmod и новый архив игры/мода из main. Получаются несовпадающие исходники и API под одним номером релиза. С последними изменениями движка это особенно неприятно: название релиза перестаёт описывать реально собранные патчи. Выбор нужного тега вручную в другом поле UI может обойти проблему, но workflow не гарантирует её и не проверяет.
Проверка
Статический проход по обоим YAML: ни один checkout не использует
inputs.tag; получение релиза идёт поreleases/tags/$TAGсTAG=${{ inputs.tag }}. Сборки и публикации для проверки не запускались.Исправление и приёмка
Во всех Linux/macOS/Windows jobs checkout должен явно брать запрошенный тег, например
ref: refs/tags/${{ inputs.tag }}(с проверкой существования тега). Проверитьgit rev-parse HEADпротив SHA этого тега до тяжёлой сборки. Добавить в архив/лог build metadata с SHA мода и upstream/отпечатком патчей форка.Регрессионный сценарий: main на коммите B, старый тег на A; workflow запускается из main с inputs.tag=A. Сборка обязана использовать исходники A либо завершиться явной ошибкой до публикации. Проверить все три OS jobs.
🤖 Agent: сделано в https://gitea.maoniao.team/chexit/airdef/commit/a8551b5 (запушено в main).