diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml new file mode 100644 index 0000000..87fc7bd --- /dev/null +++ b/.gitea/workflows/build.yml @@ -0,0 +1,55 @@ +# Compile les binaires des cinq plateformes à chaque poussée, et les dépose en +# artefacts téléchargeables depuis la page de l'exécution. +# +# Le dépôt n'ayant aucune dépendance, la pipeline se contente de reprendre les +# commandes de la machine de développement : node --test, puis ./build.sh, qui +# lance lui-même go test avant de compiler. +# +# Gitea lit les workflows dans .gitea/workflows/ — .github/workflows/ marche +# aussi, mais autant nommer les choses par leur maison. +name: Build + +on: + push: + branches: [main] + pull_request: + branches: [main] + # Permet de relancer la compilation à la main depuis l'onglet Actions. + workflow_dispatch: + +jobs: + build: + # Label déclaré par act_runner à son enregistrement. S'il a été enregistré + # avec d'autres labels, remplacer ici par celui qui existe : + # ./act_runner --config config.yaml daemon (les labels sont affichés au démarrage) + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Installer Go + uses: actions/setup-go@v5 + with: + go-version: '1.22' + # Le cache des modules s'appuie sur un go.sum, que ce dépôt n'a pas + # faute de dépendance : activé, il ferait échouer l'étape. + cache: false + + - name: Tester le modèle métier + # Node est fourni par l'image du runner ; pas de setup-node, qui + # téléchargerait une distribution pour rien. + run: node --test + + - name: Compiler les cinq plateformes + # build.sh lance go test ./... avant de compiler : le serveur est donc + # testé ici aussi. + run: ./build.sh + + - name: Déposer les binaires + # v3 et non v4 : l'API d'artefacts de la v4 réclame une Gitea récente, + # là où la v3 fonctionne depuis 1.20. + uses: actions/upload-artifact@v3 + with: + name: frise-binaires + path: dist/frise-* + retention-days: 30 diff --git a/README.md b/README.md index e6c61a8..e1b57e2 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,12 @@ saisi. Pour découvrir l'outil sur des données réalistes, copier `data/exemple Il faut [Go](https://go.dev) 1.22 ou plus récent, et rien d'autre : aucune dépendance externe, aucun `vendor/`. Les binaires des trois systèmes se produisent depuis une seule machine, sans -intégration continue ni SDK tiers. +SDK tiers. + +Une pipeline Gitea rejoue les mêmes commandes à chaque poussée sur `main` — `node --test`, puis +`./build.sh` — et dépose les cinq binaires en artefacts de l'exécution, à récupérer depuis +l'onglet **Actions**. Elle ne remplace pas la compilation locale, elle la vérifie : rien +n'oblige à passer par elle pour produire un exécutable. ### Développer @@ -413,6 +418,7 @@ données. Aucune dépendance de part ni d'autre, les lanceurs intégrés à Node |---|---| | `main.go` | Sert l'interface embarquée, expose `GET`/`PUT` sur `/api/data`, écrit les sauvegardes | | `build.sh` | Compile les binaires des cinq plateformes dans `dist/` | +| `.gitea/workflows/build.yml` | Pipeline Gitea : tests puis `build.sh`, binaires déposés en artefacts | | `js/model.js` | Données et règles métier : CRUD, validation, bornes, cycle de vie et horizon, référence, dérive, tags, regroupement par mois | | `js/storage.js` | Dialogue avec le serveur, sauvegarde debouncée, indicateur d'état | | `js/timeline.js` | Rendu de la frise : échelle, couloirs, barres, jalons, pli/dépli, curseur |