Mise en place de la distribution en .appimage pour les distro linux
All checks were successful
All checks were successful
This commit is contained in:
76
.github/workflows/desktop-release.yml
vendored
76
.github/workflows/desktop-release.yml
vendored
@@ -1,12 +1,12 @@
|
||||
name: Desktop installers
|
||||
|
||||
# Produit les installeurs de BUREAU (.msi Windows pour l'instant) et les publie
|
||||
# Produit les installeurs de BUREAU (.msi Windows + AppImage Linux) et les publie
|
||||
# en tant qu'assets d'une GitHub Release, sur tag `v*`.
|
||||
#
|
||||
# Complementaire au pipeline Gitea Actions (.gitea/workflows/release.yml) qui,
|
||||
# lui, build et pousse les IMAGES Docker. Ici on est sur GitHub car jpackage et
|
||||
# PyInstaller ne savent PAS cross-compiler : le .msi DOIT etre construit sur un
|
||||
# runner Windows, et GitHub en fournit gratuitement (windows-latest).
|
||||
# lui, build et pousse les IMAGES Docker. Ici on est sur GitHub car jpackage ne
|
||||
# sait PAS cross-compiler : le .msi DOIT etre construit sur un runner Windows et
|
||||
# l'AppImage sur un runner Linux — GitHub fournit les deux gratuitement.
|
||||
#
|
||||
# Prerequis : le depot Gitea doit etre mirrore vers GitHub (push mirror, tags
|
||||
# inclus) pour que le tag declenche ce workflow.
|
||||
@@ -191,6 +191,68 @@ jobs:
|
||||
path: core/target/dist-out/*.msi
|
||||
retention-days: 90
|
||||
|
||||
# TODO (plus tard) : job `linux` sur ubuntu-latest produisant un AppImage
|
||||
# (jpackage --type app-image + appimagetool) + PyInstaller Linux du Brain,
|
||||
# attache a la MEME release. Reutilise la meme matrice / les memes etapes.
|
||||
# LINUX : AppImage (1 fichier, toutes distros) attache a la MEME release.
|
||||
# Tourne sur ubuntu-latest (jpackage ne cross-compile pas -> build natif Linux).
|
||||
# Brain empaquete via python-build-standalone (pas de Python embeddable Linux
|
||||
# officiel ; pas de PyInstaller -> pas de faux positif AV). Memes regles de
|
||||
# publication que windows : stable -> release publique ; beta -> artefact prive.
|
||||
linux:
|
||||
needs: tests
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ github.event_name == 'workflow_dispatch' && format('v{0}', inputs.version) || github.ref }}
|
||||
|
||||
# Apporte jpackage (empaquetage natif) dans le PATH.
|
||||
- name: Set up JDK 21
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
distribution: temurin
|
||||
java-version: '21'
|
||||
|
||||
- name: Set up Node
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '20'
|
||||
|
||||
# Pas de setup-python : le Brain utilise SON python-build-standalone
|
||||
# (telecharge par le script, avec son propre pip). Le host n'en a pas besoin.
|
||||
|
||||
# Version (numerique X.Y.Z) + tag + isbeta, comme le job windows.
|
||||
- name: Derive version
|
||||
id: ver
|
||||
run: |
|
||||
if [ '${{ github.event_name }}' = 'workflow_dispatch' ]; then
|
||||
raw='${{ inputs.version }}'
|
||||
else
|
||||
raw='${{ github.ref_name }}'
|
||||
fi
|
||||
raw="${raw#v}" # 0.15.0 ou 0.15.0-beta
|
||||
num="${raw%%-*}" # 0.15.0
|
||||
case "$raw" in *-beta*) isbeta=true ;; *) isbeta=false ;; esac
|
||||
echo "version=$num" >> "$GITHUB_OUTPUT"
|
||||
echo "tag=v$raw" >> "$GITHUB_OUTPUT"
|
||||
echo "isbeta=$isbeta" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Build Linux AppImage
|
||||
run: bash ./installers/desktop/build-linux.sh --version ${{ steps.ver.outputs.version }}
|
||||
|
||||
# STABLE uniquement : attache l'AppImage a la release publique (meme tag que
|
||||
# le .msi -> les deux installeurs sur la meme release).
|
||||
- name: Publish AppImage to GitHub Release (stable)
|
||||
if: ${{ steps.ver.outputs.isbeta == 'false' }}
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
tag_name: ${{ steps.ver.outputs.tag }}
|
||||
files: core/target/dist-out/*.AppImage
|
||||
fail_on_unmatched_files: true
|
||||
|
||||
# BETA uniquement : artefact PRIVE (pas de release publique).
|
||||
- name: Upload AppImage as private artifact (beta)
|
||||
if: ${{ steps.ver.outputs.isbeta == 'true' }}
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: loremind-beta-${{ steps.ver.outputs.version }}-appimage
|
||||
path: core/target/dist-out/*.AppImage
|
||||
retention-days: 90
|
||||
|
||||
Reference in New Issue
Block a user