diff --git a/docs/GITHUB_BINARY_BUILD_RU.md b/docs/GITHUB_BINARY_BUILD_RU.md new file mode 100644 index 0000000..5f946ec --- /dev/null +++ b/docs/GITHUB_BINARY_BUILD_RU.md @@ -0,0 +1,78 @@ +# GitHub-сборка Rust-бинарников AWatch-rus + +## Принятое решение + +Для проекта AWatch-rus каноническая release-сборка Rust-бинарников выполняется в GitHub Actions. + +Локальная сборка используется для разработки и предварительной проверки. Официальным источником release-бинарников считаются только artifacts, полученные из GitHub Actions на конкретном commit или tag. + +## Toolchain + +Версия Rust/Cargo фиксируется в `rust-toolchain.toml`: + +```toml +[toolchain] +channel = "1.94.0" +profile = "minimal" +components = ["rustfmt", "clippy"] +``` + +Workflow должны запускать Cargo явно: + +```bash +cargo +1.94.0 --version +rustc +1.94.0 --version +cargo +1.94.0 fmt --manifest-path adk-rust/Cargo.toml --all -- --check +cargo +1.94.0 test --manifest-path adk-rust/Cargo.toml --workspace --no-fail-fast +cargo +1.94.0 clippy --manifest-path adk-rust/Cargo.toml --workspace --all-targets -- -D warnings +cargo +1.94.0 build --manifest-path adk-rust/Cargo.toml --workspace --release +``` + +Это исключает ситуацию, когда GitHub runner использует старый системный Cargo. + +## Workflow + +Основные workflow: + +- `.github/workflows/rust-workspace.yml` — fmt, tests, clippy, release build всего workspace. +- `.github/workflows/rust-professionalization-check.yml` — PR smoke для изменяемых Rust-крейтов. +- `.github/workflows/rust-binary-build.yml` — сборка release-бинарников Linux x86_64 и публикация GitHub Actions artifact. + +## rust-binary-build + +Workflow `rust-binary-build` запускается: + +- вручную через GitHub Actions -> rust-binary-build -> Run workflow; +- автоматически при push tag вида `v*`. + +Внутри workflow выполняется: + +1. checkout repository; +2. установка Rust/Cargo 1.94.0; +3. вывод версий `cargo` и `rustc`; +4. format check; +5. workspace tests; +6. workspace clippy; +7. workspace release build; +8. upload artifact `awatch-rus-linux-x86_64-release-binaries`. + +## Правило проекта + +Перед передачей бинарников на пилот, демонстрацию или релиз нужно использовать GitHub Actions artifact, а не локально собранный файл. + +Минимальные признаки корректного artifact: + +- workflow завершился успешно; +- в логах указан Rust/Cargo 1.94.0; +- build выполнен из нужного commit или tag; +- artifact скачан из GitHub Actions. + +## Дальнейшие улучшения + +Отдельными PR можно добавить: + +- SHA256SUMS для каждого бинарника; +- автоматическую публикацию в GitHub Release при tag `v*`; +- Windows x86_64 build для endpoint-компонентов; +- Linux static/musl build при необходимости; +- подпись release artifacts.