ci: add appimage packaging #249
This file contains 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
# This workflow will build a Java project with Maven | |
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven | |
name: Owlplug Main | |
on: | |
push: | |
branches: | |
- master | |
- dev | |
- ci/* | |
- openjdk/* | |
- linux | |
jobs: | |
build-host-win: | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
submodules: recursive | |
token: ${{ secrets.REPO_ACCESS_TOKEN }} | |
- name: Set up JDK 17 | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'adopt' | |
java-version: 17 | |
- 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: Upload Host Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: owlplug-host-win | |
path: owlplug-host/src/main/juce/Builds/VisualStudio2019/x64/Release/Dynamic Library/owlplug-host-${{ env.version }}.dll | |
build-host-osx: | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
submodules: recursive | |
token: ${{ secrets.REPO_ACCESS_TOKEN }} | |
- name: Set up JDK 17 | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'adopt' | |
java-version: 17 | |
- 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: Upload Host Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: owlplug-host-osx | |
path: owlplug-host/src/main/juce/Builds/MacOSX/build/Release/owlplug-host-${{ env.version }}.dylib | |
build-host-linux: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
submodules: recursive | |
token: ${{ secrets.REPO_ACCESS_TOKEN }} | |
- name: Set up JDK 17 | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'adopt' | |
java-version: 17 | |
- 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 | |
- 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 in binary name | |
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 }}.so | |
- name: Upload Host Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: owlplug-host-linux | |
path: owlplug-host/src/main/juce/Builds/LinuxMakefile/build/owlplug-host-${{ env.version }}.so | |
build-jar: | |
runs-on: ubuntu-latest | |
needs: [build-host-win, build-host-osx, build-host-linux] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up JDK 17 | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'adopt' | |
java-version: 17 | |
- 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 Windows native Host artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: owlplug-host-win | |
path: owlplug-host/src/main/resources | |
- name: Install OSX native Host artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: owlplug-host-osx | |
path: owlplug-host/src/main/resources | |
- name: Install Linux native Host artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: owlplug-host-linux | |
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 | |
id: get-scanner-version | |
- name: Download scanner win binary | |
run: curl --location https://github.com/OwlPlug/owlplug-scanner/releases/download/${{ env.scanner_version }}/owlplug-scanner-${{ env.scanner_version }}-win.exe --output owlplug-host/src/main/resources/owlplug-scanner-${{ env.scanner_version }}-win.exe | |
- name: Download scanner osx binary | |
run: curl --location https://github.com/OwlPlug/owlplug-scanner/releases/download/${{ env.scanner_version }}/owlplug-scanner-${{ env.scanner_version }}-osx --output owlplug-host/src/main/resources/owlplug-scanner-${{ env.scanner_version }}-osx | |
- name: Download scanner linux binary | |
run: curl --location https://github.com/OwlPlug/owlplug-scanner/releases/download/${{ env.scanner_version }}/owlplug-scanner-${{ env.scanner_version }}-linux --output owlplug-host/src/main/resources/owlplug-scanner-${{ env.scanner_version }}-linux | |
- 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@v4 | |
with: | |
name: owlplug-client-jar | |
path: owlplug-client/target/owlplug-client-${{ env.version }}.jar | |
package-win: | |
runs-on: windows-latest | |
needs: [build-jar] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up JDK 17 | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'adopt' | |
java-version: 17 | |
- 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@v4 | |
with: | |
name: owlplug-client-jar | |
path: owlplug-client/target | |
- name: Package installer | |
run: cd build && ./package-msi.cmd ${{ env.version }} | |
- name: Upload Installer Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: owlplug-win-installer-msi | |
path: build/output/OwlPlug-${{ env.version }}.msi | |
package-osx: | |
runs-on: macos-latest | |
needs: [build-jar] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up JDK 17 | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'adopt' | |
java-version: 17 | |
- 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@v4 | |
with: | |
name: owlplug-client-jar | |
path: owlplug-client/target | |
- name: Package installer | |
run: cd build && ./package-dmg.sh ${{ env.version }} | |
- name: Upload Installer Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: owlplug-osx-installer-dmg | |
path: build/output/OwlPlug-${{ env.version }}.dmg | |
package-linux-deb: | |
runs-on: ubuntu-latest | |
needs: [build-jar] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up JDK 17 | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'adopt' | |
java-version: 17 | |
- 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@v4 | |
with: | |
name: owlplug-client-jar | |
path: owlplug-client/target | |
- name: Package installer | |
run: cd build && ./package-deb.sh ${{ env.version }} | |
- name: Upload Installer Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: owlplug-linux-installer-deb | |
path: build/output/OwlPlug-${{ env.version }}.deb | |
package-linux-appimage: | |
runs-on: ubuntu-latest | |
needs: [build-jar] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up JDK 17 | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'adopt' | |
java-version: 17 | |
- 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@v4 | |
with: | |
name: owlplug-client-jar | |
path: owlplug-client/target | |
- name: Package installer | |
run: cd build && ./package-appimage.sh ${{ env.version }} | |
- name: Download FUSE dependency | |
run: sudo add-apt-repository universe && sudo apt install libfuse2 | |
- name: Download AppImage Tool | |
run: wget "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage" | |
- name: Allow AppImage Execution | |
run: chmod a+x appimagetool-x86_64.AppImage | |
- name: Run AppImage Tool | |
run: ./appimagetool-x86_64.AppImage build/OwlPlug.AppDir --verbose | |
- name: Rename OwlPlug AppImage | |
run: mv OwlPlug-x86_64.AppImage OwlPlug-${{ env.version }}-x86_64.AppImage | |
- name: Upload Installer Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: owlplug-linux-appimage | |
path: OwlPlug-${{ env.version }}-x86_64.AppImage | |