Skip to content

Merge pull request #476 from DropSnorz/build/1.33.0 #425

Merge pull request #476 from DropSnorz/build/1.33.0

Merge pull request #476 from DropSnorz/build/1.33.0 #425

Workflow file for this run

name: Owlplug Main
on:
push:
branches:
- master
- dev
- ci/*
- openjdk/*
- support/*
jobs:
build-host-win:
strategy:
matrix:
platform: [ win-x64 ]
include:
- platform: win-x64
arch: x64
os: windows-latest
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
submodules: recursive
token: ${{ secrets.REPO_ACCESS_TOKEN }}
- name: Set up JDK 25
uses: actions/setup-java@v5
with:
distribution: 'adopt'
java-version: 25
- name: "Download Projucer"
run: ./build/download-projucer.sh
shell: bash
env:
OS: windows
- name: Get Host Version
run: echo "version=$((Select-Xml -Path owlplug-host/src/main/juce/OwlPlugHost.jucer -XPath '//JUCERPROJECT/@version').Node.Value)" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
id: get-version
- name: "Build Host"
run: ./build/build-host-win.sh
shell: bash
- name: Add architecture to filename
run: mv "owlplug-host/src/main/juce/Builds/VisualStudio2019/x64/Release/Dynamic Library/owlplug-host-${{ env.version }}.dll" "owlplug-host/src/main/juce/Builds/VisualStudio2019/x64/Release/Dynamic Library/owlplug-host-${{ env.version }}-${{ matrix.platform }}.dll"
- name: Upload Host Artifact
uses: actions/upload-artifact@v7
with:
name: owlplug-host-${{ matrix.platform }}
path: owlplug-host/src/main/juce/Builds/VisualStudio2019/x64/Release/Dynamic Library/owlplug-host-${{ env.version }}-${{ matrix.platform }}.dll
build-host-osx:
strategy:
matrix:
platform: [ osx-x64, osx-arm64 ]
include:
- platform: osx-x64
arch: x64
os: macos-15-intel
- platform: osx-arm64
arch: arm64
os: macos-15
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
submodules: recursive
token: ${{ secrets.REPO_ACCESS_TOKEN }}
- name: Set up JDK 25
uses: actions/setup-java@v5
with:
distribution: 'adopt'
java-version: 25
- name: "Download Projucer"
run: ./build/download-projucer.sh
shell: bash
env:
OS: osx
- name: Install XmlStarlet
run: brew install xmlstarlet
- name: Get Host Version
run: echo "version=$(xmlstarlet sel -t -v 'string(//JUCERPROJECT/@version)' owlplug-host/src/main/juce/OwlPlugHost.jucer)" >> $GITHUB_ENV
id: get-version
- name: "Build Host"
run: ./build/build-host-osx.sh
shell: bash
- name: Add architecture to filename
run: mv owlplug-host/src/main/juce/Builds/MacOSX/build/Release/owlplug-host-${{ env.version }}.dylib owlplug-host/src/main/juce/Builds/MacOSX/build/Release/owlplug-host-${{ env.version }}-${{ matrix.platform }}.dylib
- name: Upload Host Artifact
uses: actions/upload-artifact@v7
with:
name: owlplug-host-${{ matrix.platform }}
path: owlplug-host/src/main/juce/Builds/MacOSX/build/Release/owlplug-host-${{ env.version }}-${{ matrix.platform }}.dylib
build-host-linux:
strategy:
matrix:
platform: [ linux-x64 ]
include:
- platform: linux-x64
arch: x64
os: ubuntu-24.04
# Projucer is only distributed for x64/amd64 linux.
# The projucer is required to generate the Makefile, but the build can be run for arm64 after that.
# A solution to support arm64 OwlPlug scanner would be to download projucer and render the Makefile
# prior to the build matrix in a prepare job.
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
submodules: recursive
token: ${{ secrets.REPO_ACCESS_TOKEN }}
- name: Set up JDK 25
uses: actions/setup-java@v5
with:
distribution: 'adopt'
java-version: 25
- name: "Download Projucer"
run: ./build/download-projucer.sh
shell: bash
env:
OS: linux
- name : Install Juce dev dependencies
run: sudo apt update && sudo apt install libasound2-dev libcurl4-openssl-dev libx11-dev libxcomposite-dev libxcursor-dev libxext-dev libxinerama-dev libxrandr-dev libxrender-dev libfreetype-dev libfreetype6-dev libfontconfig1-dev
- name: Install XmlStarlet
run: sudo apt-get install xmlstarlet
- name: Get Host Version
run: echo "version=$(xmlstarlet sel -t -v 'string(//JUCERPROJECT/@version)' owlplug-host/src/main/juce/OwlPlugHost.jucer)" >> $GITHUB_ENV
id: get-version
- name: "Build Host"
run: ./build/build-host-linux.sh
shell: bash
- name: Add version and architecture to filename
run: mv owlplug-host/src/main/juce/Builds/LinuxMakefile/build/libowlplug-host.so owlplug-host/src/main/juce/Builds/LinuxMakefile/build/owlplug-host-${{ env.version }}-${{ matrix.platform }}.so
- name: Upload Host Artifact
uses: actions/upload-artifact@v7
with:
name: owlplug-host-${{ matrix.platform }}
path: owlplug-host/src/main/juce/Builds/LinuxMakefile/build/owlplug-host-${{ env.version }}-${{ matrix.platform }}.so
build-jar:
strategy:
matrix:
platform: [ win-x64, osx-x64, osx-arm64, linux-x64 ]
include:
- platform: win-x64
arch: x64
os: windows-latest
- platform: osx-x64
arch: x64
os: macos-15-intel
- platform: osx-arm64
arch: arm64
os: macos-15
- platform: linux-x64
arch: x64
os: ubuntu-24.04
runs-on: ${{ matrix.os }}
needs: [ build-host-win, build-host-osx, build-host-linux ]
steps:
- uses: actions/checkout@v6
- name: Set up JDK 25
uses: actions/setup-java@v5
with:
distribution: 'adopt'
java-version: 25
- name: Get version
run: echo "version=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)" >> $GITHUB_ENV
shell: bash
id: get-version
- name: Install Native Host artifact
uses: actions/download-artifact@v8
with:
name: owlplug-host-${{ matrix.platform }}
path: owlplug-host/src/main/resources
- name: Get OwlPlug Scanner version
run: echo "scanner_version=$(cat ./owlplug-host/src/main/resources/owlplug-scanner.version)" >> $GITHUB_ENV
shell: bash
id: get-scanner-version
- name: Download scanner binary
run: curl --fail --location https://github.com/OwlPlug/owlplug-scanner/releases/download/${{ env.scanner_version }}/owlplug-scanner-${{ env.scanner_version }}-${{ matrix.platform }} --output owlplug-host/src/main/resources/owlplug-scanner-${{ env.scanner_version }}-${{ matrix.platform }}
- name: Build maven parent project
run: mvn -B install -DskipTests
- name: Build runnable Jar
run: cd owlplug-client && mvn -B install spring-boot:repackage -DskipTests
- name: Upload Jar Build Artifact
uses: actions/upload-artifact@v7
with:
name: owlplug-client-jar-${{ matrix.platform }}
path: owlplug-client/target/owlplug-client-${{ env.version }}.jar
package-win-msi:
strategy:
matrix:
platform: [ win-x64 ]
include:
- platform: win-x64
arch: x64
os: windows-latest
runs-on: ${{ matrix.os }}
needs: [build-jar]
steps:
- uses: actions/checkout@v6
- name: Set up JDK 25
uses: actions/setup-java@v5
with:
distribution: 'adopt'
java-version: 25
- name: Get version
run: echo "version=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)" >> $GITHUB_ENV
shell: bash
id: get-version
- name: Install Jar artifact
uses: actions/download-artifact@v8
with:
name: owlplug-client-jar-${{ matrix.platform }}
path: owlplug-client/target
- name: Package installer
run: cd build && ./package-msi.cmd ${{ env.version }} ${{ matrix.platform }}
- name: Upload Installer Artifact
uses: actions/upload-artifact@v7
with:
name: owlplug-installer-msi-${{ matrix.platform }}
path: build/output/OwlPlug-${{ env.version }}-${{ matrix.platform }}.msi
package-osx-dmg:
strategy:
matrix:
platform: [ osx-x64, osx-arm64 ]
include:
- platform: osx-x64
arch: x64
os: macos-15-intel
- platform: osx-arm64
arch: arm64
os: macos-15
runs-on: ${{ matrix.os }}
needs: [build-jar]
steps:
- uses: actions/checkout@v6
- name: Set up JDK 25
uses: actions/setup-java@v5
with:
distribution: 'adopt'
java-version: 25
- name: Get version
run: echo "version=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)" >> $GITHUB_ENV
id: get-version
- name: Install Jar artifact
uses: actions/download-artifact@v8
with:
name: owlplug-client-jar-${{ matrix.platform }}
path: owlplug-client/target
- name: Package installer
run: cd build && ./package-dmg.sh ${{ env.version }} ${{ matrix.platform }}
- name: Upload Installer Artifact
uses: actions/upload-artifact@v7
with:
name: owlplug-installer-dmg-${{ matrix.platform }}
path: build/output/OwlPlug-${{ env.version }}-${{ matrix.platform }}.dmg
package-linux-deb:
strategy:
matrix:
platform: [ linux-x64 ]
include:
- platform: linux-x64
arch: x64
os: ubuntu-24.04
runs-on: ${{ matrix.os }}
needs: [build-jar]
steps:
- uses: actions/checkout@v6
- name: Set up JDK 25
uses: actions/setup-java@v5
with:
distribution: 'adopt'
java-version: 25
- name: Get version
run: echo "version=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)" >> $GITHUB_ENV
id: get-version
- name: Install Jar artifact
uses: actions/download-artifact@v8
with:
name: owlplug-client-jar-${{ matrix.platform }}
path: owlplug-client/target
- name: Package installer
run: cd build && ./package-deb.sh ${{ env.version }} ${{ matrix.platform }}
- name: Upload Installer Artifact
uses: actions/upload-artifact@v7
with:
name: owlplug-installer-deb-${{ matrix.platform }}
path: build/output/OwlPlug-${{ env.version }}-${{ matrix.platform }}.deb
package-linux-appimage:
strategy:
matrix:
platform: [ linux-x64 ]
include:
- platform: linux-x64
arch: x64
os: ubuntu-24.04
app_image_arch: x86_64
runs-on: ${{ matrix.os }}
needs: [build-jar]
steps:
- uses: actions/checkout@v6
- name: Set up JDK 25
uses: actions/setup-java@v5
with:
distribution: 'adopt'
java-version: 25
- name: Get version
run: echo "version=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)" >> $GITHUB_ENV
id: get-version
- name: Install Jar artifact
uses: actions/download-artifact@v8
with:
name: owlplug-client-jar-${{ matrix.platform }}
path: owlplug-client/target
- name: Package installer
run: cd build && ./package-appimage.sh ${{ env.version }} ${{ matrix.platform }}
- name: Download FUSE dependency
run: sudo add-apt-repository universe && sudo apt install libfuse2
- name: Download AppImage Tool
run: wget "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-${{ matrix.app_image_arch }}.AppImage"
- name: Allow AppImage Execution
run: chmod a+x appimagetool-${{ matrix.app_image_arch }}.AppImage
- name: Run AppImage Tool
run: ./appimagetool-${{ matrix.app_image_arch }}.AppImage build/OwlPlug.AppDir --verbose
- name: Rename OwlPlug AppImage
run: mv OwlPlug-${{ matrix.app_image_arch }}.AppImage OwlPlug-${{ env.version }}-${{ matrix.platform }}.AppImage
- name: Upload Installer Artifact
uses: actions/upload-artifact@v7
with:
name: owlplug-appimage-${{ matrix.platform }}
path: OwlPlug-${{ env.version }}-${{ matrix.platform }}.AppImage
release:
needs: [package-win-msi, package-osx-dmg, package-linux-deb, package-linux-appimage]
if: github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/heads/support/')
runs-on: "ubuntu-latest"
steps:
- uses: actions/checkout@v6
- name: Retrieve installer artifacts
uses: actions/download-artifact@v8
with:
path: ./packages
pattern: owlplug-installer-*
- name: Retrieve appimage artifacts
uses: actions/download-artifact@v8
with:
path: ./packages
pattern: owlplug-appimage-*
- uses: softprops/action-gh-release@b4309332981a82ec1c5618f44dd2e27cc8bfbfda # v3.0.0
with:
draft: true
tag_name: latest
name: OwlPlug Latest
files: |
packages/**/*