diff --git a/.gitea/workflows/publish.yml b/.gitea/workflows/publish.yml index 33140d3..a171daa 100644 --- a/.gitea/workflows/publish.yml +++ b/.gitea/workflows/publish.yml @@ -21,7 +21,7 @@ on: options: [none, patch, minor, major] jobs: - publish-win: + publish: runs-on: ubuntu-latest container: image: electronuserland/builder:20-wine @@ -45,6 +45,9 @@ jobs: - name: Build Windows installer run: npm run build:win + - name: Build Linux installers + run: npm run build:linux + - name: Publish to Gitea release run: node scripts/publish-gitea.mjs env: diff --git a/README.md b/README.md index aae1ad8..b434ab5 100644 --- a/README.md +++ b/README.md @@ -113,21 +113,24 @@ Publier une nouvelle version : ```bash npm version patch # bump 0.1.0 -> 0.1.1 (la version EST la source de vérité) export GITEA_TOKEN=xxxxx # token Gitea (scope write:repository) -npm run publish:win # build l'installeur + upload latest.yml/installeur/.blockmap +npm run publish # build Windows + Linux puis upload de tous les artefacts ``` -`scripts/publish-gitea.mjs` crée la release `latest` si besoin, supprime les -anciens assets puis uploade les nouveaux. URL/owner/repo/tag sont surchargeables -via les variables `GITEA_URL` / `GITEA_OWNER` / `GITEA_REPO` / `GITEA_TAG`. +`scripts/publish-gitea.mjs` crée la release `latest` si besoin, supprime **tous** +les anciens assets puis uploade les nouveaux (Windows + Linux). C'est pourquoi on +build les deux plateformes avant de publier (`build:all`) : une publication ne +contenant qu'une plateforme effacerait l'autre. URL/owner/repo/tag sont +surchargeables via `GITEA_URL` / `GITEA_OWNER` / `GITEA_REPO` / `GITEA_TAG`. **Publier via Gitea Actions (CI, déclenchement manuel)** — au lieu de builder en local, tu peux lancer le workflow `.gitea/workflows/publish.yml` depuis l'onglet -*Actions* du repo (bouton « Run workflow »). Il build l'installeur Windows sous -Linux via Wine (image `electronuserland/builder`) puis publie sur la release +*Actions* du repo (bouton « Run workflow »). Sur un runner Linux (image +`electronuserland/builder`), il build l'**installeur Windows** (NSIS, via Wine) et +les **paquets Linux** (AppImage + .deb), puis publie le tout sur la release `latest`. Optionnellement, l'input `bump` (patch/minor/major) incrémente la version et pousse le commit avant le build. Pré-requis : Gitea Actions activé + -un act_runner enregistré (label `ubuntu-latest`, à adapter) ; le token auto -`secrets.GITEA_TOKEN` suffit s'il a le droit d'écrire les releases. +un act_runner enregistré (label `ubuntu-latest`, à adapter) ; un secret repo +`RELEASE_TOKEN` (scope `write:repository`) pour publier la release. > Tester le flux en dev : `dev-app-update.yml` (déjà présent) pointe sur la même > URL ; avec une version distante > version locale, le bandeau de maj apparaît diff --git a/package.json b/package.json index 0985b4e..5754239 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "main": "./out/main/index.js", "author": "OFLauncher", "license": "MIT", + "homepage": "https://gitea.ldpt.fr/zertus/OFLauncher", "scripts": { "dev": "electron-vite dev", "build": "electron-vite build", @@ -14,7 +15,8 @@ "start": "electron-vite preview", "build:win": "npm run build && electron-builder --win --config electron-builder.yml", "build:linux": "npm run build && electron-builder --linux --config electron-builder.yml", - "publish:win": "npm run build:win && node scripts/publish-gitea.mjs", + "build:all": "npm run build && electron-builder --win --linux --config electron-builder.yml", + "publish": "npm run build:all && node scripts/publish-gitea.mjs", "postinstall": "electron-builder install-app-deps" }, "dependencies": { diff --git a/scripts/publish-gitea.mjs b/scripts/publish-gitea.mjs index 17ec39f..b288a97 100644 --- a/scripts/publish-gitea.mjs +++ b/scripts/publish-gitea.mjs @@ -31,12 +31,22 @@ if (!TOKEN) { process.exit(1) } -/** Fichiers de dist/ à publier pour l'auto-update Windows. */ +/** + * Fichiers de dist/ à publier pour l'auto-update. + * - Windows : latest.yml + l'installeur NSIS (+ .blockmap) + * - Linux : latest-linux.yml + l'AppImage (+ .blockmap) ; le .deb est publié + * pour téléchargement manuel (electron-updater ne l'utilise pas). + * electron-updater choisit le bon latest*.yml selon la plateforme. + */ function isUpdateArtifact(name) { return ( name === 'latest.yml' || + name === 'latest-linux.yml' || name.endsWith('-setup.exe') || - name.endsWith('-setup.exe.blockmap') + name.endsWith('-setup.exe.blockmap') || + name.endsWith('.AppImage') || + name.endsWith('.AppImage.blockmap') || + name.endsWith('.deb') ) }