Skip to content

Merge pull request #1968 from alcomposer/larger-new-open #6468

Merge pull request #1968 from alcomposer/larger-new-open

Merge pull request #1968 from alcomposer/larger-new-open #6468

Workflow file for this run

name: CMake
on: [push, workflow_dispatch]
env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
BUILD_TYPE: Release
CMAKE_BUILD_PARALLEL_LEVEL: 4
jobs:
macos-universal-build:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- name: ccache
uses: hendrikmuhs/[email protected]
with:
key: macos
- name: Create Build Environment
run: cmake -E make_directory ${{github.workspace}}/build
- name: Configure CMake
working-directory: ${{github.workspace}}/build
run: cmake $GITHUB_WORKSPACE -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
- name: Check for Code-Signing secrets
id: secret-check
shell: bash
run: |
if [ "${{ secrets.APPLE_DEVELOPER_CERTIFICATE_P12_BASE64 }}" != '' ]; then
echo "available=true" >> $GITHUB_OUTPUT;
else
echo "available=false" >> $GITHUB_OUTPUT;
fi
- name: Import Code-Signing Certificates
uses: figleafteam/import-codesign-certs@v2
if: ${{ steps.secret-check.outputs.available == 'true' }}
with:
p12-file-base64: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_P12_BASE64 }}
p12-password: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_PASSWORD }}
- name: Build
working-directory: ${{github.workspace}}/build
run: cmake --build . --config $BUILD_TYPE
- name: Creating Installer
working-directory: ${{github.workspace}}
env:
AC_USERNAME: ${{ secrets.AC_USERNAME }}
AC_PASSWORD: ${{ secrets.AC_PASSWORD }}
run: ./.github/scripts/package-macOS.sh plugdata-macOS-Universal.pkg
- name: Authorise Google Cloud
if: github.ref == 'refs/heads/develop'
uses: "google-github-actions/auth@v2"
with:
credentials_json: ${{ secrets.GCP_SA_KEY }}
- name: Upload to Google Cloud
if: github.ref == 'refs/heads/develop'
uses: "google-github-actions/upload-cloud-storage@v2"
with:
path: ./
glob: ./plugdata-macOS-Universal.pkg*
destination: "plugdata-nightly"
- name: Archive Artifacts
uses: actions/upload-artifact@v4
with:
name: plugdata-macOS-Universal
path: plugdata-macOS-Universal.pkg
- name: Release Artifacts
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
prerelease: true
draft: true
files: plugdata-macOS-Universal
macos-legacy-build:
runs-on: macos-12
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- name: ccache
uses: hendrikmuhs/[email protected]
with:
key: macos-legacy
- name: Create Build Environment
run: cmake -E make_directory ${{github.workspace}}/build
- name: Configure CMake
working-directory: ${{github.workspace}}/build
run: cmake $GITHUB_WORKSPACE -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DNANOVG_METAL_IMPLEMENTATION=0 -DMACOS_LEGACY=1
- name: Check for Code-Signing secrets
id: secret-check
shell: bash
run: |
if [ "${{ secrets.APPLE_DEVELOPER_CERTIFICATE_P12_BASE64 }}" != '' ]; then
echo "available=true" >> $GITHUB_OUTPUT;
else
echo "available=false" >> $GITHUB_OUTPUT;
fi
- name: Import Code-Signing Certificates
uses: figleafteam/import-codesign-certs@v2
if: ${{ steps.secret-check.outputs.available == 'true' }}
with:
p12-file-base64: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_P12_BASE64 }}
p12-password: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_PASSWORD }}
- name: Build
working-directory: ${{github.workspace}}/build
run: cmake --build . --config $BUILD_TYPE
- name: Creating Installer
working-directory: ${{github.workspace}}
env:
AC_USERNAME: ${{ secrets.AC_USERNAME }}
AC_PASSWORD: ${{ secrets.AC_PASSWORD }}
run: ./.github/scripts/package-macOS.sh plugdata-macOS-Legacy.pkg
- name: Authorise Google Cloud
if: github.ref == 'refs/heads/develop'
uses: "google-github-actions/auth@v2"
with:
credentials_json: ${{ secrets.GCP_SA_KEY }}
- name: Upload to Google Cloud
if: github.ref == 'refs/heads/develop'
uses: "google-github-actions/upload-cloud-storage@v2"
with:
path: ./
glob: ./plugdata-macOS-Legacy.pkg*
destination: "plugdata-nightly"
- name: Archive Artifacts
uses: actions/upload-artifact@v4
with:
name: plugdata-macOS-Legacy
path: plugdata-macOS-Legacy.pkg
- name: Release Artifacts
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
prerelease: true
draft: true
files: plugdata-macOS-Legacy
windows-64-build:
runs-on: windows-2022
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- name: Create Build Environment
run: cmake -E make_directory ${{github.workspace}}/build
- name: Configure CMake
shell: bash
working-directory: ${{github.workspace}}/build
run: cmake $GITHUB_WORKSPACE -G "Visual Studio 17 2022" -A x64
- name: Build
shell: bash
working-directory: ${{github.workspace}}/build
run: cmake --build . --config $BUILD_TYPE
- name: Creating Installer
working-directory: ${{github.workspace}}
shell: bash
run: |
./.github/scripts/package-Windows.sh plugdata-Win64.msi
- name: Authorise Google Cloud
if: github.ref == 'refs/heads/develop'
uses: "google-github-actions/auth@v2"
with:
credentials_json: ${{ secrets.GCP_SA_KEY }}
- name: Upload to Google Cloud
if: github.ref == 'refs/heads/develop'
uses: "google-github-actions/upload-cloud-storage@v2"
with:
path: ./
glob: ./plugdata-Win64.msi*
destination: "plugdata-nightly"
- name: Archive Artifacts
uses: actions/upload-artifact@v4
with:
name: plugdata-Win64
path: plugdata-Win64.msi
- name: Release Artifacts
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
prerelease: true
draft: true
files: plugdata-Win64
windows-32-build:
runs-on: windows-2022
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- name: Create Build Environment
run: cmake -E make_directory ${{github.workspace}}/build
- name: Configure CMake
shell: bash
working-directory: ${{github.workspace}}/build
run: cmake $GITHUB_WORKSPACE -G "Visual Studio 17 2022" -A Win32
- name: Build
shell: bash
working-directory: ${{github.workspace}}/build
run: cmake --build . --config $BUILD_TYPE
- name: Creating Installer
working-directory: ${{github.workspace}}
shell: bash
run: |
./.github/scripts/package-Windows.sh plugdata-Win32.msi
- name: Authorise Google Cloud
if: github.ref == 'refs/heads/develop'
uses: "google-github-actions/auth@v2"
with:
credentials_json: ${{ secrets.GCP_SA_KEY }}
- name: Upload to Google Cloud
if: github.ref == 'refs/heads/develop'
uses: "google-github-actions/upload-cloud-storage@v2"
with:
path: ./
glob: ./plugdata-Win32.msi*
destination: "plugdata-nightly"
- name: Archive Artifacts
uses: actions/upload-artifact@v4
with:
name: plugdata-Win32
path: plugdata-Win32.msi
- name: Release Artifacts
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
prerelease: true
draft: true
files: plugdata-Win32
linux-build:
name: ${{ matrix.name }}
runs-on: ubuntu-latest
container:
image: ${{ matrix.os }}
options: --privileged
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup
strategy:
fail-fast: false
matrix:
include:
- name: Ubuntu-22.04-x64
os: ubuntu:22.04
pacman: apt
- name: Ubuntu-24.04-x64
os: ubuntu:24.04
pacman: apt
- name: Debian-x64
os: debian
pacman: apt
- name: Fedora-39-x64
os: fedora:39
pacman: dnf
- name: Fedora-40-x64
os: fedora:40
pacman: dnf
- name: OpenSUSE-Tumbleweed-x64
os: opensuse/tumbleweed
pacman: zypper
- name: Arch-x64
os: archlinux
pacman: pacman
steps:
- name: Install Dependencies (dnf)
if: ${{ matrix.pacman == 'dnf' }}
run: dnf install -y git cmake alsa-lib-devel libXinerama-devel freetype-devel curl libcurl-devel wget bzip2 gcc-c++ libXi-devel libXcomposite-devel freeglut-devel libXrandr-devel libXcursor-devel xz ccache python python3-pip jack-audio-connection-kit-devel libatomic
- name: Install Dependencies (apt)
if: ${{ matrix.pacman == 'apt' }}
run: apt update && DEBIAN_FRONTEND=noninteractive TZ="Europe/Amsterdam" apt install -y cmake git wget bzip2 build-essential libasound2-dev libjack-jackd2-dev curl libcurl4-openssl-dev libfreetype6-dev libx11-dev libxi-dev libxcomposite-dev libxcursor-dev libxcursor-dev libxext-dev libxrandr-dev libxinerama-dev ccache python3 python3-pip freeglut3-dev
- name: Install Dependencies (zypper)
if: ${{ matrix.pacman == 'zypper' }}
run: zypper refresh && zypper install -y git rsync wget bzip2 xz tar gzip cmake alsa-lib-devel libXinerama-devel libXi-devel freetype-devel libcurl-devel libXcomposite-devel freeglut-devel libXrandr-devel libXcursor-devel freetype2-devel gcc gcc-c++ curl ccache python python3-pip libjack-devel gawk
- name: Install Dependencies (pacman)
if: ${{ matrix.pacman == 'pacman' }}
run: pacman -Sy && pacman -S --noconfirm cmake wget bzip2 git alsa-lib freetype2 libx11 libxcursor libxi libxext libxinerama libxrandr libxrender webkit2gtk cmake make gcc pkgconf python python-pip curl ccache freeglut mesa glfw-x11 glew jack2 openssl && pacman --noconfirm -Syu
- uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- name: Update cmake
working-directory: ${{github.workspace}}
run: ./.github/scripts/install-cmake.sh
- name: ccache
uses: hendrikmuhs/[email protected]
with:
key: ${{ matrix.name }}
- name: Configure
working-directory: ${{github.workspace}}
run: mkdir build && cd build && CXX=g++ cmake -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache .. -G "Unix Makefiles"
- name: Build
working-directory: ${{github.workspace}}/build
run: cmake --build . --config $BUILD_TYPE
- name: Prepare Artefacts
working-directory: ${{github.workspace}}
run: ./.github/scripts/package-Linux.sh plugdata-${{ matrix.name }}.tar.gz
- name: Authorise Google Cloud
if: github.ref == 'refs/heads/develop'
uses: "google-github-actions/auth@v2"
with:
credentials_json: ${{ secrets.GCP_SA_KEY }}
- name: Upload to Google Cloud
if: github.ref == 'refs/heads/develop'
uses: "google-github-actions/upload-cloud-storage@v2"
with:
path: ./
glob: plugdata-${{ matrix.name }}.tar.gz*
destination: "plugdata-nightly"
- name: Archive Artifacts
uses: actions/upload-artifact@v4
with:
name: plugdata-${{ matrix.name }}
path: plugdata-${{ matrix.name }}.tar.gz
- name: Release Artifacts
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
prerelease: true
draft: true
files: plugdata-${{ matrix.name }}