name: cargo-release description: Rust/Cargoプロジェクトのバージョン更新、GitHubリリース、crates.io publishを実行する。
Cargo Release Workflow
Rust/Cargoプロジェクトのリリース手順を実行するスキル。
引数
| 引数 | 必須 | 説明 |
|---|---|---|
| version | Yes | リリースするバージョン(例: 0.2.0) |
使用例
/cargo-release 0.2.0
実行フロー
Phase 1: 事前確認
引数検証
- バージョン引数が指定されていることを確認
- semver形式(X.Y.Z)であることを確認
現在のバージョン確認
grep '^version' Cargo.tomlgit状態確認
git status --porcelain- ワーキングディレクトリがクリーンでない場合は警告して中断
既存タグ一覧確認
git tag --list 'v*' --sort=-version:refname | head -10- 同じバージョンのタグが既に存在する場合は中断
Phase 2: バージョン更新
Cargo.tomlのバージョン更新
# Cargo.toml の version = "X.Y.Z" を更新Cargo.lockの更新
cargo checkテスト実行
cargo test- 失敗した場合は中断
Phase 3: コミット & プッシュ
変更をコミット
git add Cargo.toml Cargo.lock git commit -m "chore: bump version to {version}"mainブランチにプッシュ
git push origin main
Phase 4: リリースワークフロー起動
バンプコミットのSHA取得
BUMP_SHA=$(git rev-parse HEAD)ワークフロー起動
gh workflow run release.yml -f version={version} -f bump_sha=$BUMP_SHA進捗確認用コマンドを表示
gh run list --workflow=release.yml --limit 1 gh run watch <run-id>- ワークフローがtest/build/release/publishを自動実行
- 失敗時はバージョンバンプコミットが自動revertされる
前提条件
ghCLIがインストール・認証済み- mainブランチにいること
- ワーキングディレクトリがクリーンであること
- リポジトリに
CARGO_REGISTRY_TOKENシークレットが設定済み(crates.io publish用)
注意事項
- ワークフローが失敗した場合、バンプコミットは自動revertされる(ただしHEADが移動していない場合のみ)
cargo publishの失敗ではrollbackされない(GitHub Releaseは成功済みのため)
エラー時のリカバリ
validate/test/build/release の失敗
- 自動rollback(バンプコミットrevert + タグ/リリース削除)が実行される
- 原因を修正後、Phase 2 からやり直す(バージョン更新 → コミット → プッシュ → ワークフロー起動)
publish のみ失敗(GitHub Release は成功済み)
- 推奨: GitHub Actions UI から "Re-run failed jobs" で
publishジョブのみ再実行 - 手動: ローカルで
cargo publish -p octorusを実行(CARGO_REGISTRY_TOKENが必要) - 注意:
gh workflow runでの再実行はタグ重複バリデーションで失敗するため使用不可
ネットワークエラー(ワークフロー起動自体の失敗)
gh workflow run release.yml -f version={version} -f bump_sha=$BUMP_SHAで再試行