Skip to content
You're viewing an older version of this GitHub Action. Do you want to see the latest version instead?
box

GitHub Action

Wails Build Action

v2.1

Wails Build Action

box

Wails Build Action

Creates a wails binary

Installation

Copy and paste the following snippet into your .yml file.

              

- name: Wails Build Action

uses: dAppServer/[email protected]

Learn more about this action in dAppServer/wails-build-action

Choose a version

dAppServer/wails-build-action@v2

GitHub action to build Wails.io, the action will install GoLang, NodeJS and run a build. this is to be used on a Wails.io v2 project.

By default, the action will build and upload the results to github, on a tagged build it will also upload to the release.

Default build

- uses: dAppServer/[email protected]
  with:
    build-name: wailsApp
    build-platform: linux/amd64

Build with No uploading

- uses: dAppServer/[email protected]
  with:
    build-name: wailsApp
    build-platform: linux/amd64
    package: false

GitHub Action Options

Name Default Description
build-name none, required input The name of the binary
build true Runs wails build on your source
nsis true Runs wails build with ot without -nsis
sign false After build, signs and creates signed installers
package true Upload workflow artifacts & publish release on tag
build-platform darwin/universal Platform to build for
wails-version latest Wails version to use
wails-build-webview2 download Webview2 installing [download,embed,browser,error]
go-version 1.18 Version of Go to use
node-version 16.x Node js version
deno-build `` Deno compile command
deno-working-directory . Working directory of your Deno server
deno-version v1.20.x Deno version to use
sign-macos-app-id '' ID of the app signing cert
sign-macos-apple-password '' MacOS Apple password
sign-macos-app-cert '' MacOS Application Certificate
sign-macos-app-cert-password '' MacOS Application Certificate Password
sign-macos-installer-id '' MacOS Installer Certificate id
sign-macos-installer-cert '' MacOS Installer Certificate
sign-macos-installer-cert-password '' MacOS Installer Certificate Password
sign-windows-cert '' Windows Signing Certificate
sign-windows-cert-passowrd '' Windows Signing Certificate Password

Example Build

name: Wails build

on: [push, pull_request]

jobs:
  build:
    strategy:
      fail-fast: false
      matrix:
        build: [
          {name: wailsTest, platform: linux/amd64, os: ubuntu-latest},
          {name: wailsTest, platform: windows/amd64, os: windows-latest},
          {name: wailsTest, platform: darwin/universal, os: macos-latest}
        ]
    runs-on: ${{ matrix.build.os }}
    steps:
      - uses: actions/checkout@v2
        with:
          submodules: recursive
      - uses: dAppServer/[email protected]
        with:
          build-name: ${{ matrix.build.name }}
          build-platform: ${{ matrix.build.platform }}

MacOS Code Signing

You need to make two gon configuration files, this is because we need to sign and notarize the .app before making an installer with it.

  - uses: dAppServer/[email protected]
    with:
      build-name: wailsApp
      sign: true
      build-platform: darwin/universal
      sign-macos-apple-password: ${{ secrets.APPLE_PASSWORD }}
      sign-macos-app-id: ${{ secrets.MACOS_DEVELOPER_CERT_ID }}
      sign-macos-app-cert: ${{ secrets.MACOS_DEVELOPER_CERT }}
      sign-macos-app-cert-password: ${{ secrets.MACOS_DEVELOPER_CERT_PASSWORD }}
      sign-macos-installer-id: ${{ secrets.MACOS_INSTALLER_CERT_ID }}
      sign-macos-installer-cert: ${{ secrets.MACOS_INSTALLER_CERT }}
      sign-macos-installer-cert-password: ${{ secrets.MACOS_INSTALLER_CERT_PASSWORD }}

build/darwin/gon-sign.json

{
  "source" : ["./build/bin/wailsApp.app"],
  "bundle_id" : "com.wails.app",
  "apple_id": {
    "username": "username",
    "password": "@env:APPLE_PASSWORD"
  },
  "sign" :{
    "application_identity" : "Developer ID Application: XXXXXXXX (XXXXXX)",
    "entitlements_file": "./build/darwin/entitlements.plist"
  },
  "dmg" :{
    "output_path":  "./build/bin/wailsApp.dmg",
    "volume_name":  "Lethean"
  }
}

build/darwin/gon-notarize.json

{
  "notarize": [{
    "path": "./build/bin/wailsApp.pkg",
    "bundle_id": "com.wails.app",
    "staple": true
  },{
    "path": "./build/bin/wailsApp.app.zip",
    "bundle_id": "com.wails.app",
    "staple": false
  }],
  "apple_id": {
    "username": "USER name",
    "password": "@env:APPLE_PASSWORD"
  }
}

build/darwin/entitlements.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>com.apple.security.app-sandbox</key>
  <true/>
  <key>com.apple.security.network.client</key>
  <true/>
  <key>com.apple.security.network.server</key>
  <true/>
  <key>com.apple.security.files.user-selected.read-write</key>
  <true/>
</dict>
</plist>