Publicación de Sonvik
release-plz prepara versiones desde Conventional Commits. Es propietario del cambio de versión, CHANGELOG.md, el tag v<semver> y la publicación en crates.io. cargo-dist usa ese tag para crear el GitHub Release y adjuntar archivos portables y checksums SHA-256.
Configuración única
Daniel Ramirez debe mantener esta configuración en GitHub y crates.io:
- Iniciar sesión en crates.io con GitHub y verificar el correo electrónico.
- En la configuración del crate
sonvik, registrar un Trusted Publisher de GitHub Actions con ownerNanielito, repositoriosonvik, workflowrelease-plz.ymly sin environment. - Crear un fine-grained personal access token limitado al repositorio
Nanielito/sonvik, con acceso de lectura y escritura a Contents y Pull requests, y guardarlo comoRELEASE_PLZ_TOKEN. Los PR creados con este token sí disparan el CI del repositorio. - En Settings → Actions → General, permitir que GitHub Actions cree pull requests.
El job release tiene permiso id-token: write; release-plz intercambia la identidad OIDC de GitHub por una credencial de crates.io de corta duración. El workflow no usa CARGO_REGISTRY_TOKEN. Después de verificar la primera autenticación OIDC, se debe revocar el token temporal usado para v0.1.0 en crates.io y eliminar el secret de Actions CARGO_REGISTRY_TOKEN.
Flujo de release
- Un push a
mainejecuta release-plz, pero no publica commits ordinarios. - release-plz abre o actualiza un PR
release-plz-*con la versión,Cargo.locky changelog propuestos. - Se revisa el diff y se espera que el CI pase.
- Al fusionar ese PR, release-plz publica el crate y crea el tag correspondiente.
- El tag inicia el workflow de distribución. El GitHub Release se publica solamente cuando todos los builds nativos y jobs de checksums requeridos terminan correctamente.
El job de publicación usa RELEASE_PLZ_TOKEN para crear el tag porque los eventos generados con el GITHUB_TOKEN predeterminado no pueden iniciar el workflow de distribución. Para recuperar un tag existente sin moverlo ni republicar crates.io, se puede ejecutar manualmente el workflow Release indicando el tag v<semver>; el workflow valida que el tag, el commit y la versión de Cargo coincidan, y reutiliza cualquier GitHub Release existente.
release_always = false limita publicación y creación de tags a commits provenientes del PR de release. Un PR abierto o un push ordinario no publica.
Los archivos de release se construyen para Linux x86_64, macOS Apple Silicon y Windows x86_64. Instaladores, fórmulas de package managers, firma y arquitecturas adicionales no pertenecen al MVP.
Validación local
Antes de habilitar una publicación:
cargo package --list
cargo publish --dry-run
dist plan --tag v0.1.0
La publicación es permanente: una versión existente no puede sobrescribirse ni eliminarse de crates.io; solamente puede marcarse como retirada.