turbo-editors/turbo-corepublic Fork 0
v0.9.0
Commits
Clone
git clone https://git.rickub.com/turbo-editors/turbo-core.git
git clone ssh://git@rickub.com/turbo-editors/turbo-core.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

release-the-library.md · 106 lines · 5.7 KBmarkdown Blame HistoryRaw
🛟 Updated. 28d5985 k33g 20h ago1# Comment publier la bibliothèque
2
3Ce guide montre comment publier une version de turbo-core dont les éditeurs peuvent dépendre. Il suppose un accès en écriture au dépôt.
4
📦 Turbo Core d662ceb k33g 12h ago5turbo-core est un module Go sans binaire : le publier, c'est le taguer, et le proxy de modules sert `go get …@TAG` dès que le tag est joignable. Vous lancez un seul script ; le push du tag déclenche un workflow qui fait le reste.
🛟 Updated. 28d5985 k33g 20h ago6
7## Étapes
8
9### 1. Dire quelle version
10
📦 Turbo Core d662ceb k33g 12h ago11Créez `release.env` — il est ignoré par git, la CI ne le voit donc jamais :
🛟 Updated. 28d5985 k33g 20h ago12
13```sh
14TAG="v0.1.0"
15ABOUT="La bibliothèque des éditeurs Turbo"
16```
17
📦 Turbo Core d662ceb k33g 12h ago18`ABOUT` devient le message du tag, et le workflow le relit sur le tag pour en faire l'en-tête de la page de release.
19
🛟 Updated. 28d5985 k33g 20h ago20### 2. Lancer le script
21
22```bash
23./01-release.tag.sh
24```
25
26Il lance `make check`, refuse un tag déjà pris ici ou sur origin, refuse un `go.mod` portant une directive `replace`, valide ce qui traîne, pousse la branche, et seulement ensuite pose le tag et le pousse.
27
28Cet ordre compte : un tag poussé avant la branche désigne un commit que le dépôt distant n'a jamais vu, et un tag créé avant un push refusé reste derrière, à la charge de qui le trouvera.
29
📦 Turbo Core d662ceb k33g 12h ago30C'est la dernière chose que vous lancez à la main. La bibliothèque est publiée dès que le tag est sur origin.
31
32### 3. Surveiller le workflow Release
33
34Le push du tag déclenche `.github/workflows/release.yml`. Suivez-le dans l'onglet Actions du dépôt ; il n'attend rien de vous, sauf s'il passe au rouge.
🛟 Updated. 28d5985 k33g 20h ago35
📦 Turbo Core d662ceb k33g 12h ago36Il lance la suite de tests, met en scène les artefacts avec `./02-build-releases.sh`, et crée la page de release avec eux. Les notes sont le message du tag, la ligne unique qui installe le module, et des liens vers la documentation **à ce tag** plutôt qu'à la branche — une page de release n'est pas dans l'arborescence du dépôt, donc un lien relatif depuis elle donne un 404, et un lien vers la branche pourrit à mesure que la branche avance.
37
38Le job publie avec son propre `GITHUB_TOKEN`, seul identifiant que l'API de release de Rickub accepte — un jeton personnel est refusé. Il n'y a rien à configurer ni aucun secret à conserver.
39
40Vous pouvez voir ce qu'il mettra en scène sans rien publier :
🛟 Updated. 28d5985 k33g 20h ago41
42```bash
📦 Turbo Core d662ceb k33g 12h ago43./02-build-releases.sh v0.1.0 # écrit release/v0.1.0/, ne pousse rien
🛟 Updated. 28d5985 k33g 20h ago44```
45
📦 Turbo Core d662ceb k33g 12h ago46Il compile chaque paquet, les passe à `vet`, archive la source du commit tagué, extrait cette archive et la reconstruit — la seule preuve que ce qui est livré compile seul, sans rien oublier hors de git — puis en calcule la somme de contrôle et écrit le README qui ira sur la page.
🛟 Updated. 28d5985 k33g 20h ago47
📦 Turbo Core d662ceb k33g 12h ago48Cette archive n'est pas la façon dont on installe la bibliothèque : le proxy sert le module directement depuis le tag. Elle est là pour vérifier une release, et pour qui n'atteint pas le proxy.
🛟 Updated. 28d5985 k33g 20h ago49
📦 Turbo Core d662ceb k33g 12h ago50Il n'y a ni `03` ni `04` ici. Ceux-là construisent et attachent des binaires dans les éditeurs ; une bibliothèque n'en a pas.
🛟 Updated. 28d5985 k33g 20h ago51
52### 4. Y brancher les éditeurs
53
54Un éditeur à la fois, en lançant sa suite avant de passer au suivant :
55
56```bash
57go mod edit -require=codeberg.org/turbo-editors/turbo-core@v0.1.0
58go mod edit -dropreplace=codeberg.org/turbo-editors/turbo-core
59go mod tidy
60make test
61```
62
63Tous les éditeurs dépendent de la même bibliothèque : un changement qui casse l'un casse en général les autres, et l'apprendre trois fois de suite coûte moins cher que l'apprendre dans une publication.
64
65## Variantes
66
67### Vous préférez le faire à la main
68
69```bash
70make check
71git push origin main
72git tag -a v0.1.0 -m "La bibliothèque des éditeurs Turbo"
73git push origin v0.1.0
74```
75
📦 Turbo Core d662ceb k33g 12h ago76Poussez la branche **avant** le tag, pour la raison ci-dessus. Le workflow se déclenche sur le push du tag quelle qu'en soit la façon : la page de release apparaît quand même.
🛟 Updated. 28d5985 k33g 20h ago77
78### Vous développez à travers les trois dépôts
79
80Depuis la v0.1.0, les éditeurs dépendent du module publié et ne portent plus de `replace` : un changement de bibliothèque leur est donc invisible tant qu'il n'est pas publié. Ne publiez pas pour savoir s'il fonctionne — utilisez un espace de travail, qui ne modifie aucun fichier suivi :
81
82```bash
83cd turbo-go
84go work init . ../turbo-core
85```
86
87[Tester sans publier](test-without-publishing.md) traite le sujet en détail : comment vérifier que c'est bien pris en compte, et comment tester la forme publiée une fois que vous êtes prêt.
88
89### Le changement n'est pas rétrocompatible
90
91Dites-le dans le message du tag et incrémentez la version mineure — le module est sous v1, donc l'incrément mineur est le signal disponible. Les éditeurs épinglent une version exacte : rien ne bouge tant que quelqu'un n'a pas modifié un `go.mod`.
92
93### Vous devez déplacer un tag déjà poussé
94
95Non. Plusieurs éditeurs peuvent l'épingler et le proxy de modules met en cache ce qu'il a récupéré : le script refuse. Incrémentez `TAG` à la place.
96
97## Ce à quoi faire attention
98
📦 Turbo Core d662ceb k33g 12h ago99Le script lance `make check`, et la suite qu'il lance contient des tests qui lancent *ce script* contre une copie jetable. Ils se sautent eux-mêmes quand `TURBO_CORE_RELEASING` est défini, ce que le script exporte avant d'appeler make. Retirer cette ligne fait récurser une publication jusqu'à épuisement de quelque chose. Le workflow définit la même variable pour son propre `go test`, car là-bas rien n'appelle le script qui l'aurait définie.
100
101Le workflow est le seul du dépôt, volontairement : l'API de dispatch de Rickub déclenche *tous* les workflows dispatchables d'une ref, un dépôt ne devrait donc en déclarer qu'un — c'est aussi pourquoi celui-ci n'a pas de `workflow_dispatch` et ne s'atteint qu'en poussant un tag.
🛟 Updated. 28d5985 k33g 20h ago102
103## Voir aussi
104
105- Publier un éditeur : le `how-to/make-a-release.md` de chaque éditeur
106- Ce que couvrent les tests : [Lancer les tests](run-the-tests.md)