feat(ci): Пробный прогон релизного конвейера без публикации - #41
Merged
Merged
Conversation
Конвейер запускался только по пушу тега v*, а create-release публикует не-draft релиз сразу. Проверить сборку, не выпустив релиз, было нельзя, и первый прогон любых изменений в build-and-release.yml совпадал бы с первым релизом. За последние правки туда ушло многое, что больше нигде не выполняется: консольный вывод Windows и smoke с кодом возврата, установка .deb в чистый Debian с lintian, матрица macOS с ассертом lipo -archs, сжатие .deb в xz, разделение зависимостей и пины. Добавлен workflow_dispatch с входом version. Он обязателен в формате X.Y.Z: вне тега git describe даёт 1.2.11-17-g09a0942, и Windows-сборка упала бы на проверке формата для WiX. Значение пробрасывается в make как VERSION=, который create-version уже honors первым условием — Makefile не менялся. На пуше тега вход пуст, поведение прежнее. create-release не трогали: у него уже стоит if: startsWith(github.ref, 'refs/tags/'), при запуске с ветки джоб пропускается. Четыре smoke-job выполняются как обычно, в них весь смысл. Проверено настоящей сборкой: make build-macos VERSION=0.0.0 даёт dist/efd-unpacker-0.0.0-macos-arm64.dmg и 0.0.0 в Info.plist, то есть переменная доходит сквозь sub-make. С пустым VERSION версия по-прежнему берётся из git describe. docs/BUILD.md описывает запуск и где брать артефакты. Closes #40
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9340755876
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
По замечанию ревью PR #41. Шаг Build Windows version исполняется PowerShell (shell у него не объявлен), а там $EFD_VERSION — обычная необъявленная переменная, а не окружение: подставлялась пустая строка. VERSION= уходил пустым, create-version откатывался на git describe, и make check отвергал нечисловую версию — то есть каждый пробный прогон падал бы до появления Windows-артефакта, ровно там, ради чего всё затевалось. Windows-шаг переведён на $env:EFD_VERSION. Дополнительно во все три сборочных job добавлен шаг Check dry-run version с shell: bash, который при workflow_dispatch печатает полученную версию и падает с внятным сообщением, если она пуста или не в формате X.Y.Z. Один и тот же shell на всех платформах — чтобы разница в синтаксисе подстановки больше не проходила молча. На пуше тега шаг пропускается по условию.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Закрывает #40.
Конвейер запускался только по пушу тега
v*, аcreate-releaseпубликует не-draft релиз сразу. Проверить сборку, не выпустив релиз, было нельзя — то есть первый прогон любых изменений вbuild-and-release.ymlсовпадал бы с первым релизом.Долг накопился заметный. За последние правки туда ушло то, что больше нигде не выполняется: консольный вывод Windows-бинаря и smoke с проверкой кода возврата (#8), установка
.debв чистый Debian сlintian(#9), матрица macOS с ассертомlipo -archs(#27), сжатие.debв xz (#29), разделение зависимостей и пины по SHA (#16).test.ymlтут не помогает — он гоняетpytestи не собирает ни одного артефакта.Что изменилось
workflow_dispatchс входомversion. Версию приходится задавать явно: вне тегаgit describeдаёт1.2.11-17-g09a0942, аmake checkтребует^[0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?$для WiX — без этого Windows-сборка упала бы. Значение пробрасывается вmakeкакVERSION=, которыйcreate-versionуже honors первым же условием, так что Makefile не менялся.На пуше тега вход пуст,
[ -n "" ]ложно, версия по-прежнему берётся изgit describe— прежнее поведение сохранено.create-releaseне трогали. У него уже стоитif: startsWith(github.ref, 'refs/tags/'), и при запуске с ветки условие ложно — джоб пропускается, а не падает. Четыре smoke-job при этом выполняются как обычно, в них весь смысл прогона.docs/BUILD.md— как запустить и где брать артефакты, с явным указанием, что релиз не публикуется.Проверка
Проброс проверен настоящей сборкой, а не чтением Makefile — важно было убедиться, что переменная доходит сквозь
$(MAKE)в подцели:Три ветки
create-version:YAML валиден, 9 job,
timeout-minutesу всех, 0uses:без SHA.pytest— 122 passed.На что посмотреть ревьюеру
.debвылезhardening-no-pie, которого не было на stub.env.EFD_VERSIONобъявлен на уровне workflow и подставляется как${{ inputs.version }}. На пуше тегаinputsпуст, выражение даёт пустую строку — это ожидаемо и обработано, но выглядит непривычно.contents: readна уровне workflow остаётся;create-releaseсо своимcontents: writeпри dispatch не запускается вовсе.gh workflow run build-and-release.yml --ref <ветка> -f version=0.0.0. После мержа вmainкнопка появится и в UI на вкладке Actions.