Release, Git, Composer
Matthieu Marcillaud <[email protected]>
| Newsgroups | gmane.comp.web.spip.devel |
|---|---|
| Message-ID | <[email protected]> |
# Release, Git, Composer
## Outils de release
J’ai pris un peu de temps pour faire des outils de release pour nos
prochaines versions, et en attendant de passer un jour espérons le à
Composer pour de vrai...
Ces outils sont à des emplacements temporaires (déplacés sur la zone si
on les utilise vraiment) (pas la peine de mettre en marque ta page :))
- https://gitlab.com/magraine/spip-releases
- https://gitlab.com/magraine/spip-archives
- https://gitlab.com/magraine/spip-packages
### spip-releases
Ce script permet de faciliter la création des tags et changelog pour
SPIP et ses plugins-dist, et de pusher le tout sur les différents Git
correspondants. Le script s’adapte et crée (à ce jour) comme c’est fait
actuellement (à ce jour) sur ces git (! on en discute plus bas, parce
que c’est pas forcément génial...) :
- un tag spip-x.y.z pour une branche SPIP (ou spip-x.y.z-beta pour
master par exemple)
- des tags spip/x.y.z pour les plugins dist.
- si on release depuis master, on pose des tags de version en plus sur
chaque plugin (v1.0.4 du plugin) éventuellement en incrémentant la
version selon le contexte.
### spip-archives
Ce script permet de créer un zip d’une version ou branche de SPIP.
Il intègre 2 méthodes différentes :
- via le résultat du script checkout.php, qui est le plus proche de ce
qu’on avait avant, mais a aussi quelques limitations (il lit un fichier
.gitsvnextmodules qui n’a plus de sens). Il utilise ensuite `composer
archive` pour générer une archive.
- via le réstulat d’un `composer install` spécial, qui utilise [un
plugin
composer-installer](https://github.com/spipremix/composer-installer)
spécifique et un repository composer tout aussi spécial (cf:
spip-packages). Il y a quelques différences (notamment l’écran de
sécurité est forcément à jour), et quelques micros détails.
#### spip-packages
Ce script génère un fichier `packages.json` de type repository pour
Composer en déclarant quelques versions de SPIP (branches 3.1+ et
derniers tags) et quelques versions de plugins (branches, derniers tags,
et tags spip/x.y.z), et ajoute les require qui vont bien sur `spip/spip`
correspondant à la branche/tag, en s’appuyant sur la présence des tags
`spip/x.y.z` des plugins.
C’est assez limité comme utilisation en dehors du script spip-archives.
## TODO Git pour Composer
De regarder ceci m’a fait pointer du doigt différents problèmes à
corriger avec les repos Git de SPIP et des plugins dist
Effectivement il est de bon ton de suivre 'semver' pour les branches et
tags de version afin que Composer puisse comprendre à quoi tout ça
correspond.
Problèmes rencontrés :
### sur spip/spip
- les branches sont nommées `spip-3.2`.
- devrait être `3.2` (ou `3.2.x` — ou à la rigueur `v3.2` ou `v3.2.x`)
- les tags sont nommés `spip-3.2.7`,
- devrait être `3.2.7` ou `v3.2.7`
### sur spip/{plugin} (tel que spip/mots)
- il existe des branches `3.2`, `3.1`, `3.0`
- ces branches correspondent aux versions de SPIP et pas aux branches
de version du plugin
- devraient être renommées `spip-3.2` pour l’historique
éventuellement et le maintient des versions SPIP encore actives
- ne devrait plus servir pour spip >= 3.3 (ou 3.4)
- ils ont des tags `spip/x.y.z`
- admettons (pour l’historique), mais il ne faudrait pas poursuivre
ça dans le futur (c’est à la distribution SPIP de mettre un require
adapté, et au plugin de définir sa compatibilité avec SPIP).
- ils n’ont pas de branches pour leurs propres versions
- ils n’ont pas tous les tags de leurs différentes versions
- ce n’est pas forcément gênant encore.
### gestion des versions des plugins-dist
Avec Git et les tags, il est possible qu’un plugin-dist n’ait pas bougé
entre 2 versions de SPIP.
On peut temporairement lui ajouter les tags `spip/x.y.z` sur le même
commit que le tag `spip/x.y.z-1` d’avant,
mais il serait plus judicieux de basculer sur une déclaration de
contraintes / require sur Composer, et
ça permettrait du coup de décorréler possiblement mieux les mises à
jour des plugins-dist par rapport à SPIP.
Typiquement :
- spip/spip (le projet) devrait require un spip/sdk ou spip/core tel que
'^3.2.0' ...
- spip/spip pourrait déclarer require : 'spip/mots': '^1' ou '^1.11'
- spip/mots devrait require une version de 'spip/sdk' ou 'spip/core'
également
## Actions à trancher
Le nom des tags et branches de spip et plugins dist est à redéfinir.
- On est d’accord ?
- Avant ou après la prochaine release ?
- Quid de .gitsvnetxmodules qui pointe sur les SVN ? On le laisse sur ce
nom là en changeant son contenu pour les liens git ? On le renomme
.spip_modules le temps d’avoir un composer.json ? On trouve une autre
solution pour checkout.php (et spip-cli qui utilise le même code) ?
_______________________________________________
liste: https://listes.rezo.net/mailman/listinfo/spip-dev
doc: https://www.spip.net/
dev: https://core.spip.net/
irc://irc.freenode.net/spip