Files
AWatch-rus/docs/GITHUB_BINARY_BUILD_RU.md
T

3.2 KiB

GitHub-сборка Rust-бинарников AWatch-rus

Принятое решение

Для проекта AWatch-rus каноническая release-сборка Rust-бинарников выполняется в GitHub Actions.

Локальная сборка используется для разработки и предварительной проверки. Официальным источником release-бинарников считаются только artifacts, полученные из GitHub Actions на конкретном commit или tag.

Toolchain

Версия Rust/Cargo фиксируется в rust-toolchain.toml:

[toolchain]
channel = "1.94.0"
profile = "minimal"
components = ["rustfmt", "clippy"]

Workflow должны запускать Cargo явно:

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.