Workflow
Création du site de test
-
utilisateur crée un dépôt à partir d'un modèle de site avec le sujet
website:- soit via git.ariege.net ;
- soit via une interface utilisant l'API (Create a repository using a template).
-
webhook intercepte le push et construit le site sur test.ariege.net/utilisateur/mon-site
Modification du site de test
- utilisateur met à jour le dépôt pour modifier le site ou ajouter du contenu :
- soit via git.ariege.net pour modifier l'apparence du site ;
- soit via decap-cms pour ajouter ou modifier du contenu ;
- webhook intercepte les pushs et reconstruit le site.
Demande de publication
- utilisateur fork ariege.net/websites :
- soit via git.ariege.net ;
- soit via une interface utilisant l'API (Fork a repository).
- utilisateur crée un nouveau fichier sur son fork :
- soit via git.ariege.net ;
- soit via un client git local ;
- soit via une interface utilisant l'API (Create a file in a repository).
- utilisateur crée une demande de fusion sur ariege.net/websites
- soit via git.ariege.net ;
- soit via une interface utilisant l'API (Create a pull request).
- admin accepte la demande de fusion ;
- webhook intercepte lu push et publie le site
Dépublication
- admin modifie le fichier du site pour le passer en privé, ou bien le supprime, éventuellement via une demande de fusion
- webhook intercepte lu push et dépublie le site
Il faut que l'ui crée/modifie une application Forgejo sur le compte utilisateur via l'api configurée avec l'url du site web.
Webhook pourrait être application python ?
- webhook -> API rest
- n'utilise pas de client git mais API (Get an archive of a repository)
- rsync -> pyrsync
- authlib
- uniquement Zola est appelé en appel système
- voir si c'est possible d'avoir le backend sur un réseau privé docker (comme webhook)
Non, possible sans backend, comme decapCMS Application au niveau de l'instance forgejo.
On peut déclencher push webhook via l'API, avec un commit spécifique (Test a push webhook). Donc possible de rollback via interface. Mais on ne peut pas trigger un hook système ! Voir si c'est possible de rollback avec un client git coté navigateur (isomorphic-git).
Le dépôt doit être mis en favori par au moins 1 admin pour publication sur ariege.net (curl 'https://code.ariege.net/api/v1/repos/ariege.net/ariege.net/stargazers')
Et extra.publish = true dans config.toml
branches website et website-test
- hook sur website qui publie sur le site de prod
- hook sur website-test qui publie sur le site de test
Sur site dev :
- bouton pour publier qui :
- fait une pull request : POST /repos/{owner}/{repo}/pulls
- merge la pull request : POST /repos/{owner}/{repo}/pulls/{index}/merge
- check si la version courante est publiée :
- comparer les branches test et prod : GET /repos/{owner}/{repo}/compare/website...website-test
- afficher "à jour" si response.total_commits == 0, sinon afficher nombre de commits en retard et liste avec date/heure + message