Merge pull request #476 from DropSnorz/build/1.33.0 #425
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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/**/* |