2017-09-22 7 views
4

Je souhaite publier une nouvelle version d'une caisse afin de permettre aux utilisateurs de la tester en premier. Comment puis-je le publier sur crates.io en tant que "beta"? (similaire à la façon dont npm a @next communiqués marqués).Comment publier une version bêta d'une caisse pour des tests publics limités?

Ce n'est pas supposé être un changement de rupture, donc je ne vais pas augmenter la version semver-major. Je ne veux pas qu'il soit automatiquement sélectionné lorsque les utilisateurs font cargo upgrade jusqu'à la fin de la période de test bêta.

  • Quelle syntaxe de version dois-je utiliser pour la version?

  • Dois-je utiliser des options de chargement spéciales lorsque je les relâche?

  • Comment les utilisateurs utilisent cargo/Cargo.toml pour activer la version bêta?

Répondre

8

Semantic versioning définit la notion de pre-release version:

Une version préliminaire peut être représenté par un trait d'union et l'ajout d'une série de points séparés les identificateurs qui suit immédiatement la version du patch. Les identificateurs DOIVENT comprendre uniquement des caractères alphanumériques ASCII et un trait d'union [0-9A-Za-z-]. Les identifiants NE DOIVENT PAS être vides. Les identificateurs numériques NE DOIVENT PAS inclure de zéros en tête. Les versions préliminaires ont une priorité inférieure à la version normale associée. Une version préliminaire indique que la version est instable et peut ne pas satisfaire aux exigences de compatibilité prévues, comme indiqué par sa version normale associée. Exemples: 1.0.0-alpha, 1.0.0-alpha.1, 1.0.0-0.3.7, 1.0.0-x.7.z.92

Pour l'utiliser dans Cargo, publiez une caisse du numéro de version prévu, mais ajoutez un identifiant de pré-lancement. Je suggère -beta.0, vous permettant d'augmenter facilement si vous avez besoin d'une seconde:

[package] 
name = "library" 
version = "0.1.1-beta.0" 

Pour l'utiliser, vous devez opter spécifiquement en en mettant beta dans l'exigence version:

[dependencies] 
library = "0.1.1-beta" 

Pour tester cela, je:

  1. Spun un serveur crates.io locale
  2. Uploaded la caisse bibliothèque avec la version 0.1.0
  3. Utilisé library = "0.1.0" dans un projet binaire application - Il est résolu à 0.1.0
  4. Téléchargé la caisse bibliothèque avec la version 0.1.1-beta.0
  5. Ran cargo update dans app - la version n'a pas modifié.
  6. Changé à library = "0.1.1-beta" dans app, a couru cargo update - la version a fait changement.
  7. Uploaded la caisse bibliothèque avec la version 0.1.1-beta.1
  8. Ran cargo update dans app - la version a fait changement.
+0

Réponse fantastique. Je vous remercie. – Kornel