Passer au contenu principal
Version: Prochaine version 🚧

Construction cross-plateforme avec Github Actions

Pour construire un projet Wails pour toutes les plateformes disponibles, vous devez créer un build de l'application pour chaque système d'exploitation. Une méthode efficace pour y parvenir est d'utiliser GitHub Actions.

Une action qui facilite la création d'une application Wails est disponible sur : https://github.com/dAppServer/wails-build-action

Dans le cas où l'action existante ne répond pas à vos exigences, vous ne pouvez sélectionner que les étapes nécessaires à partir de la source : https://github.com/dAppServer/wails-build-action/blob/main/action.yml

Voici un exemple complet qui démontre la construction d'une application lors de la création d'une nouvelle balise Git et qui la téléversera ensuite sur les artefacts Actions :

name: Wails build

on:
push:
tags:
# Matche n'importe quel nouveau tag
- '*'

env:
# Nécessaire pour la plupart des environnement, car des soucis de build peuvent arriver à cause de soucis de mémoire
NODE_OPTIONS: "--max-old-space-size=4096"

jobs:
build:
strategy:
# Afin d'éviter que l'échec du build d'une plateforme n'impacte les autres
fail-fast: false
matrix:
build:
- name: 'App'
platform: 'linux/amd64'
os: 'ubuntu-latest'
- name: 'App'
platform: 'windows/amd64'
os: 'windows-latest'
- name: 'App'
platform: 'darwin/universal'
os: 'macos-latest'

runs-on: ${{ matrix.build.os }}
steps:
- name: Checkout
uses: actions/checkout@v2
with:
submodules: recursive

- name: Build wails
uses: dAppServer/wails-build-[email protected]
id: build
with:
build-name: ${{ matrix.build.name }}
build-platform: ${{ matrix.build.platform }}
package: false
go-version: '1.20'

Cet exemple offre des opportunités pour diverses améliorations, comprenant :

  • Mise en cache des dépendances
  • Signature de code
  • Envoi vers des plateformes comme S3, Supbase, etc.
  • Injection de secrets en tant que variables d'environnement
  • Utiliser des variables d'environnement comme variables de compilation (telles que la variable de version extraite de la balise Git actuelle)