Чеклист для каждого релиза task-journal v0.X.Y.
- GitHub repo создан, origin подключён.
- crates.io аккаунт заведён → Settings → API Tokens → создать токен
task-journal-publishс scopepublish-new. - GitHub Secrets (Settings → Secrets and variables → Actions → New repository secret):
CRATES_IO_TOKEN= токен из шага 2.
- Crate names проверены —
cargo search task-journal-core task-journal-cli task-journal-mcpпоказывает что свободны. Если заняты — поменять в Cargo.toml каждого crate (name = "...").
# Убедись что main green
cargo test --workspace
cargo clippy --workspace --all-targets -- -D warnings
cargo fmt --all --check
# Bump version в Cargo.toml workspace (раз — все crates наследуют через version.workspace = true)
# Edit Cargo.toml: version = "0.1.1" (или 0.2.0, 1.0.0, etc.)
git add Cargo.toml
git commit -m "chore: bump version to v0.1.1"
git pushgit tag v0.1.1
git push origin v0.1.1Это автоматически триггерит:
.github/workflows/release.yml— собирает pre-built бинарники под Linux/macOS-x86_64/macOS-arm64/Windows и публикует GitHub Release с прикреплённымиtar.gz/.zip+checksums.txt..github/workflows/publish.yml— публикует все 3 crate'а на crates.io (нуженCRATES_IO_TOKENsecret).
cargo login # paste crates.io token
cargo publish -p task-journal-core
sleep 30
cargo publish -p task-journal-cli
cargo publish -p task-journal-mcp- GitHub Releases страница: https://github.com/Digital-Threads/Task-Journal/releases — должен быть
v0.1.1с 4 артефактами. - crates.io: https://crates.io/crates/task-journal-core (и cli, mcp) — должна появиться версия v0.1.1.
Если первая публикация — добавить badge'и:
[](https://github.com/Digital-Threads/Task-Journal/actions/workflows/ci.yml)
[](https://crates.io/crates/task-journal-cli)
[](LICENSE)Для каждой следующей версии:
- Обнови
versionвCargo.tomlworkspace git tag vX.Y.Z && git push origin vX.Y.Z- CI делает остальное
| Симптом | Что проверить |
|---|---|
cargo publish падает с "name already taken" |
Имя crate занято на crates.io. Поменяй name = "..." в Cargo.toml на другое. |
| Release workflow не запустился | Тэг должен начинаться с v (например v0.1.0, не 0.1.0 или release-0.1.0). |
cargo publish -p task-journal-cli падает с "task-journal-core not found" |
Не подождал sleep 30 после публикации task-journal-core — повтори через минуту. |
| Pre-built binary не работает на macOS — "killed" | Apple Silicon vs Intel — скачай правильный target (aarch64-apple-darwin для M1/M2/M3, x86_64-apple-darwin для Intel). |