Zum Inhalt springen

Plugin: publisher-crates

Veröffentlicht Rust-Crates auf crates.io durch Aufruf von cargo publish, nachdem semrel die neue Release-Version ermittelt und geschrieben hat. Unterstützt sowohl einzelne Crates als auch geordnete Cargo-Workspace-Member.

Terminal-Fenster
semrel plugin install @semrel/publisher-crates

semrel plugin install lädt die Binärdatei nach .semrel/plugins/ herunter und aktualisiert .semrel.lock. Committe .semrel.lock, um die Version für dein Team festzuschreiben.

Vorgefertigte, signierte Multi-Plattform-Images (linux/amd64, linux/arm64) werden bei jedem Release veröffentlicht:

Terminal-Fenster
docker pull ghcr.io/semrels/publisher-crates:latest

Überprüfe die Image-Signatur mit cosign:

Terminal-Fenster
cosign verify ghcr.io/semrels/publisher-crates:latest \
--certificate-identity-regexp 'https://github.com/SemRels/publisher-crates/.github/workflows/release.yml.*' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
version: 1
plugins:
- uses: @semrel/updater-cargo
phase: pre-tag
args:
file: Cargo.toml
- uses: @semrel/publisher-crates
phase: release
args:
cargo_registry_token: '${env.CARGO_REGISTRY_TOKEN}'
cargo_workspace_member: "crate-core,crate-cli"
cargo_manifest_path: Cargo.toml
NameErforderlichStandardBeschreibung
SEMREL_PLUGIN_CARGO_REGISTRY_TOKENja (außer Dry-Run)—crates.io API-Token, wird als CARGO_REGISTRY_TOKEN an Cargo übergeben.
SEMREL_PLUGIN_CARGO_WORKSPACE_MEMBERneinStandardpaketKommagetrennte Workspace-Member, die in der angegebenen Reihenfolge per cargo publish --package <name> veröffentlicht werden.
SEMREL_PLUGIN_CARGO_PACKAGEnein—Alias für SEMREL_PLUGIN_CARGO_WORKSPACE_MEMBER.
SEMREL_PLUGIN_CARGO_MANIFEST_PATHneinCargo.tomlPfad zum Manifest (cargo publish --manifest-path <path>).
  • SEMREL_VERSION
  • SEMREL_NEXT_VERSION
  • SEMREL_DRY_RUN
  • Setzt cargo im $PATH voraus.
  • Veröffentlicht Workspace-Member in der definierten Reihenfolge und bricht beim ersten Fehler ab.
  • Im Dry-Run-Modus (SEMREL_DRY_RUN=true) wird cargo publish --dry-run ausgeführt, um das Paketieren ohne Upload zu prüfen.