diff --git a/.gitea/workflows/desktop-release.yml b/.gitea/workflows/desktop-release.yml index 9d05a7a..7c97c9a 100644 --- a/.gitea/workflows/desktop-release.yml +++ b/.gitea/workflows/desktop-release.yml @@ -2,10 +2,10 @@ # daemon qui écoute v*, et du VSIX qui écoute vscode-v*). # # Linux (AppImage + deb) : toujours automatisé. -# Windows (NSIS + portable) : job dédié, ACTIVÉ par la variable de dépôt ENABLE_WINDOWS_BUILD=true une -# fois qu'un runner labellisé `windows-latest` est enregistré sur le forge. Procédure complète dans -# docs/CI_RUNNERS.md. Tant que la variable est absente, le job est sauté et la release Linux part -# normalement ; le repli reste un build manuel attaché à la release. +# Windows (NSIS + portable) : job RETIRÉ tant qu'aucun runner `windows-latest` n'est enregistré sur le +# forge. Un job conditionné par une variable de dépôt ne suffisait pas : la release entière tombait +# en erreur. Le repli est un build manuel attaché à la release. Pour le rétablir : enregistrer un +# runner (docs/CI_RUNNERS.md) puis restaurer le job depuis l'historique git (tag desktop-v0.2.3). # Le cross-build depuis Linux est IMPOSSIBLE : node-pty ne copie conpty.dll / OpenConsole.exe que si # l'hôte de build est Windows, et son tarball ne contient que les prebuilds linux. # macOS (dmg + zip) : non automatisé (aucun runner) ; build manuel documenté dans le README desktop. @@ -86,65 +86,12 @@ jobs: packages/desktop/release/latest-linux.yml \ packages/desktop/release/SHA256SUMS-linux.txt - windows: - name: Build Windows (NSIS + portable) - # Activé par la variable de dépôt ENABLE_WINDOWS_BUILD (voir docs/CI_RUNNERS.md). Sans runner - # Windows enregistré, un job non conditionné resterait en attente indéfiniment et bloquerait la - # release entière. - if: vars.ENABLE_WINDOWS_BUILD == 'true' - runs-on: windows-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODE_VERSION }} - - name: Verify tag matches desktop version - if: github.event_name == 'push' - shell: bash - run: | - pkg=$(node -p "require('./packages/desktop/package.json').version") - tag="${GITHUB_REF_NAME#desktop-v}" - if [ "$pkg" != "$tag" ]; then - echo "ERREUR: tag '$tag' != version desktop '$pkg'" - exit 1 - fi - echo "OK: tag $tag == version $pkg" - - run: npm ci - - name: Install desktop deps - shell: bash - run: cd packages/desktop && npm ci - # `dist:win` sur hôte Windows : c'est le SEUL chemin qui produit un node-pty utilisable (ConPTY, - # conpty.dll + OpenConsole.exe copiés par le post-install de node-pty). - - name: Build installers - shell: bash - run: cd packages/desktop && npm run dist:win - - name: Compute checksums - shell: bash - run: | - cd packages/desktop/release - sha256sum *.exe > SHA256SUMS-windows.txt - cat SHA256SUMS-windows.txt - - uses: actions/upload-artifact@v3 - with: - name: desktop-windows - path: | - packages/desktop/release/*.exe - packages/desktop/release/*.blockmap - packages/desktop/release/latest.yml - packages/desktop/release/SHA256SUMS-windows.txt - # Pas de continue-on-error : cf. la note du job Linux. - - name: Attach installers to the tag release - if: github.event_name == 'push' - shell: bash - env: - RELEASE_TOKEN: ${{ secrets.NPM_TOKEN }} - run: | - version=$(node -p "require('./packages/desktop/package.json').version") - bash .gitea/scripts/attach-release-assets.sh "${GITHUB_REF_NAME}" "Arboretum Desktop ${version}" \ - packages/desktop/release/*.exe \ - packages/desktop/release/*.blockmap \ - packages/desktop/release/latest.yml \ - packages/desktop/release/SHA256SUMS-windows.txt + # Le job Windows (NSIS + portable) est RETIRÉ pour le moment : aucun runner Windows n'est + # enregistré sur ce Gitea, et `runs-on: windows-latest` fait échouer la release entière au lieu + # d'être simplement ignoré. Le job complet reste dans l'historique git (dernier état : tag + # desktop-v0.2.3) et la procédure d'enregistrement d'un runner est dans docs/CI_RUNNERS.md : le + # rétablir revient à restaurer ce job, puis à réactiver le téléchargement de son artefact et ses + # assets dans le canal flottant ci-dessous. # Canal d'auto-update : electron-updater interroge une URL FIXE # (.../releases/download/desktop-latest, cf. electron-builder.yml). Ce tag flottant doit donc exister @@ -164,13 +111,6 @@ jobs: with: name: desktop-linux path: dl - # Les artefacts Windows n'existent que si le job correspondant a tourné : téléchargement toléré - # en échec pour ne jamais bloquer la publication du canal Linux. - - uses: actions/download-artifact@v3 - continue-on-error: true - with: - name: desktop-windows - path: dl # On repart d'une release flottante VIERGE : sinon les assets de la version précédente y # restent (mêmes noms de fichiers uniquement remplacés, un ancien numéro de version subsisterait). # La recréation est faite par le script suivant, via l'API (Gitea crée le tag au besoin). @@ -196,4 +136,4 @@ jobs: run: | version=$(node -p "require('./packages/desktop/package.json').version") bash .gitea/scripts/attach-release-assets.sh desktop-latest "Arboretum Desktop (latest, ${version})" \ - dl/*.AppImage dl/*.deb dl/*.exe dl/*.blockmap dl/latest-linux.yml dl/latest.yml dl/SHA256SUMS-*.txt + dl/*.AppImage dl/*.deb dl/*.blockmap dl/latest-linux.yml dl/SHA256SUMS-*.txt diff --git a/docs/CI_RUNNERS.md b/docs/CI_RUNNERS.md index fd5e36f..e2803b7 100644 --- a/docs/CI_RUNNERS.md +++ b/docs/CI_RUNNERS.md @@ -22,12 +22,16 @@ Un build produit sous Wine serait donc installable mais inutilisable. C'est pour | Plateforme | Runner | Build | |---|---|---| | Linux | `ubuntu-latest` (déjà en place) | automatique à chaque tag `desktop-v*` | -| Windows | **à enregistrer** | job `windows`, activé par la variable `ENABLE_WINDOWS_BUILD` | +| Windows | **à enregistrer** | job **retiré** du workflow ; manuel (`npm run dist:win` sur Windows) | | macOS | aucun | manuel (`npm run dist:mac` sur un Mac) | -Le job Windows est conditionné par `if: vars.ENABLE_WINDOWS_BUILD == 'true'`. Tant que la variable -n'existe pas, le job est **sauté** : la release Linux part normalement. Sans cette condition, un job -`runs-on: windows-latest` sans runner disponible resterait en attente et bloquerait la release entière. +Le job Windows a d'abord été gardé dans le workflow, conditionné par +`if: vars.ENABLE_WINDOWS_BUILD == 'true'`. Cela **n'a pas suffi** : sans runner labellisé +`windows-latest`, la release entière tombait en erreur au lieu de sauter le job. Il est donc +**retiré** de `.gitea/workflows/desktop-release.yml`. Son dernier état complet est dans l'historique +git (tag `desktop-v0.2.3`) : après avoir enregistré le runner ci-dessous, restaurer ce job, puis +remettre dans `latest-channel` le `download-artifact` de `desktop-windows` ainsi que +`dl/*.exe dl/latest.yml` dans la liste d'assets du canal flottant. ## 1. Préparer la machine Windows