Skip to content

Create Windows installer #671

Create Windows installer

Create Windows installer #671

Workflow file for this run

name: Build & Tests
on:
push:
paths-ignore:
- 'docs/**'
- '**.md'
- '**.sh'
- '**.py'
- '**.ps1'
pull_request:
# Need to repeat these paths - YAML anchors aren’t supported on GHA atm
# (or any other CI service that I know of, for that matter)
paths-ignore:
- 'docs/**'
- '**.md'
- '**.sh'
- '**.py'
- '**.ps1'
jobs:
build:
strategy:
fail-fast: false
matrix:
include:
- name: Qt 5 / Linux x86_64
os: ubuntu-latest
# XXX: --privileged is sort of a brute-force solution to get FUSE
# working inside Docker, however so far I haven’t been able to
# figure out precisely *which* privileges are needed.
container: { image: "ubuntu:16.04", options: --privileged }
qt: 5
- name: Qt 5 / macOS x86_64
os: macos-latest
container:
qt: 5
- name: Qt 5 / Windows x86
os: windows-2019
arch: win32_msvc2019
container:
qt: 5
- name: Qt 5 / Windows x86_64
os: windows-2019
arch: win64_msvc2019_64
container:
qt: 5
- name: Qt 6 / Linux x86_64
os: ubuntu-latest
# XXX: --privileged is sort of a brute-force solution to get FUSE
# working inside Docker, however so far I haven’t been able to
# figure out precisely *which* privileges are needed.
container: { image: "ubuntu:22.04", options: --privileged }
qt: 6
- name: Qt 6 / macOS x86_64
os: macos-latest
container:
qt: 6
- name: Qt 6 / Windows x86_64
os: windows-2019
arch: win64_msvc2019_64
container:
qt: 6
name: ${{matrix.name}}
runs-on: ${{matrix.os}}
container: ${{matrix.container}}
steps:
- name: Install git (Linux)
# GitHub runners come with git pre-installed, but our "custom" Linux
# container image does not
if: runner.os == 'Linux'
run: |
apt-get update -yq
apt-get -yq install software-properties-common
apt-add-repository -y ppa:git-core/ppa
apt-get update -yq
apt-get install -yq --no-install-suggests --no-install-recommends git
- name: Check out repository
uses: actions/checkout@v3
- name: Install dependencies
uses: ./.github/actions/install-dependencies
with:
arch: ${{matrix.arch}}
qt: ${{matrix.qt}}
- name: Set up environment
uses: ./.github/actions/setup-environment
with:
arch: ${{matrix.arch}}
- name: Configure build
run: mkdir build; ${{runner.os == 'Linux' && matrix.qt == 6 && 'qmake6' || 'qmake'}}
-o build PREFIX=/usr CONFIG+=release CONFIG+=GIT
CONFIG+=PENCIL2D_${{github.ref == 'refs/heads/release' && 'RELEASE' || 'NIGHTLY'}}
${{matrix.qt == 6 && 'CONFIG+=c++17 QMAKE_CXX_FLAGS+=-std=c++17' || ''}}
- name: Build Pencil2D
working-directory: build
run: ${{runner.os != 'Windows' && 'make' || 'nmake'}}
- name: Run tests
env: { QT_QPA_PLATFORM: minimal }
run: build/tests/bin/tests
- name: Create package
id: package
if: runner.os != 'Linux' || matrix.qt == 5
uses: ./.github/actions/create-package
with:
arch: ${{matrix.arch}}
qt: ${{matrix.qt}}
- name: Upload package
if: runner.os != 'Linux' || matrix.qt == 5
uses: actions/upload-artifact@v3
with:
name: ${{steps.package.outputs.output-basename}}
path: build/${{steps.package.outputs.output-basename}}*
- name: Generate summary
shell: bash
run: echo "Build will be available for download [here](https://get.pencil2d.org/@${{github.repository_owner}}/${{github.run_id}}/${{steps.package.outputs.output-basename}}) once the run is finished." > "${GITHUB_STEP_SUMMARY}"