ci(desktop): retire le job Windows du packaging, aucun runner n'est enregistré

Le job était conditionné par la variable de dépôt ENABLE_WINDOWS_BUILD, ce qui ne
suffit pas : sans runner labellisé `windows-latest`, la release desktop tombait en
erreur au lieu de sauter le job. Il est retiré, ainsi que le téléchargement de son
artefact et ses assets dans le canal flottant desktop-latest.

Le job complet reste dans l'historique (tag desktop-v0.2.3) et docs/CI_RUNNERS.md
décrit ce qu'il faut restaurer une fois un runner Windows enregistré. Le repli
reste un `npm run dist:win` manuel attaché à la release.
This commit is contained in:
2026-08-05 10:56:54 +02:00
parent 8aea0ae32d
commit bdec8d6ad0
2 changed files with 19 additions and 75 deletions
+11 -71
View File
@@ -2,10 +2,10 @@
# daemon qui écoute v*, et du VSIX qui écoute vscode-v*). # daemon qui écoute v*, et du VSIX qui écoute vscode-v*).
# #
# Linux (AppImage + deb) : toujours automatisé. # Linux (AppImage + deb) : toujours automatisé.
# Windows (NSIS + portable) : job dédié, ACTIVÉ par la variable de dépôt ENABLE_WINDOWS_BUILD=true une # Windows (NSIS + portable) : job RETIRÉ tant qu'aucun runner `windows-latest` n'est enregistré sur le
# fois qu'un runner labellisé `windows-latest` est enregistré sur le forge. Procédure complète dans # forge. Un job conditionné par une variable de dépôt ne suffisait pas : la release entière tombait
# docs/CI_RUNNERS.md. Tant que la variable est absente, le job est sauté et la release Linux part # en erreur. Le repli est un build manuel attaché à la release. Pour le rétablir : enregistrer un
# normalement ; le repli reste un build manuel attaché à la release. # 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 # 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. # 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. # 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/latest-linux.yml \
packages/desktop/release/SHA256SUMS-linux.txt packages/desktop/release/SHA256SUMS-linux.txt
windows: # Le job Windows (NSIS + portable) est RETIRÉ pour le moment : aucun runner Windows n'est
name: Build Windows (NSIS + portable) # enregistré sur ce Gitea, et `runs-on: windows-latest` fait échouer la release entière au lieu
# Activé par la variable de dépôt ENABLE_WINDOWS_BUILD (voir docs/CI_RUNNERS.md). Sans runner # d'être simplement ignoré. Le job complet reste dans l'historique git (dernier état : tag
# Windows enregistré, un job non conditionné resterait en attente indéfiniment et bloquerait la # desktop-v0.2.3) et la procédure d'enregistrement d'un runner est dans docs/CI_RUNNERS.md : le
# release entière. # rétablir revient à restaurer ce job, puis à réactiver le téléchargement de son artefact et ses
if: vars.ENABLE_WINDOWS_BUILD == 'true' # assets dans le canal flottant ci-dessous.
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
# Canal d'auto-update : electron-updater interroge une URL FIXE # Canal d'auto-update : electron-updater interroge une URL FIXE
# (.../releases/download/desktop-latest, cf. electron-builder.yml). Ce tag flottant doit donc exister # (.../releases/download/desktop-latest, cf. electron-builder.yml). Ce tag flottant doit donc exister
@@ -164,13 +111,6 @@ jobs:
with: with:
name: desktop-linux name: desktop-linux
path: dl 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 # 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). # 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). # 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: | run: |
version=$(node -p "require('./packages/desktop/package.json').version") version=$(node -p "require('./packages/desktop/package.json').version")
bash .gitea/scripts/attach-release-assets.sh desktop-latest "Arboretum Desktop (latest, ${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
+8 -4
View File
@@ -22,12 +22,16 @@ Un build produit sous Wine serait donc installable mais inutilisable. C'est pour
| Plateforme | Runner | Build | | Plateforme | Runner | Build |
|---|---|---| |---|---|---|
| Linux | `ubuntu-latest` (déjà en place) | automatique à chaque tag `desktop-v*` | | 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) | | 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 Le job Windows a d'abord été gardé dans le workflow, conditionné par
n'existe pas, le job est **sauté** : la release Linux part normalement. Sans cette condition, un job `if: vars.ENABLE_WINDOWS_BUILD == 'true'`. Cela **n'a pas suffi** : sans runner labellisé
`runs-on: windows-latest` sans runner disponible resterait en attente et bloquerait la release entière. `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 ## 1. Préparer la machine Windows