8 Workflow
Lipwig edited this page 2026-05-31 11:56:42 +00:00

Workflow

Création du site de test

  1. utilisateur crée un dépôt à partir d'un modèle de site avec le sujet website :

  2. webhook intercepte le push et construit le site sur test.ariege.net/utilisateur/mon-site

Modification du site de test

  1. 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 ;
  2. webhook intercepte les pushs et reconstruit le site.

Demande de publication

  1. utilisateur fork ariege.net/websites :
    • soit via git.ariege.net ;
    • soit via une interface utilisant l'API (Fork a repository).
  2. utilisateur crée un nouveau fichier sur son fork :
  3. utilisateur crée une demande de fusion sur ariege.net/websites
  4. admin accepte la demande de fusion ;
  5. webhook intercepte lu push et publie le site

Dépublication

  1. admin modifie le fichier du site pour le passer en privé, ou bien le supprime, éventuellement via une demande de fusion
  2. 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 :
    1. fait une pull request : POST /repos/{owner}/{repo}/pulls
    2. merge la pull request : POST /repos/{owner}/{repo}/pulls/{index}/merge
  • check si la version courante est publiée :
    1. comparer les branches test et prod : GET /repos/{owner}/{repo}/compare/website...website-test
    2. afficher "à jour" si response.total_commits == 0, sinon afficher nombre de commits en retard et liste avec date/heure + message