Needs Tag option #286
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
on: | |
push: | |
workflow_dispatch: | |
env: | |
ProjectName: Blux | |
PackagesVersion: 1.2.10 | |
jobs: | |
windows: | |
name: Windows | |
if: true # always skip job (heap space needs fix) | |
runs-on: windows-2022 | |
strategy: | |
matrix: | |
include: | |
- arch: win-x64 | |
buildFolder: "VisualStudio2022_CI" | |
installerName: install | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v2 | |
with: | |
submodules: 'recursive' | |
- name: Set Variables | |
id: set_variables | |
uses: ./.github/actions/set-variables | |
with: | |
os: ${{ matrix.arch }} | |
- name: Checkout JUCE | |
uses: actions/checkout@v2 | |
with: | |
repository: benkuper/JUCE | |
ref: ${{ env.juce-branch }} | |
path: JUCE | |
- name: Add msbuild to PATH | |
uses: microsoft/setup-msbuild@v1.0.2 | |
- name: Force 64-bit Linker | |
shell: powershell | |
run: | | |
cmd.exe /c "call `"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat`" && set > %temp%\vcvars.txt" | |
Get-Content "$env:temp\vcvars.txt" | Foreach-Object { if ($_ -match "^(.*?)=(.*)$") { Set-Content "env:\$($matches[1])" $matches[2] }} | |
- name: Build | |
run: msbuild "Builds/VisualStudio2022_CI/${{ env.ProjectName }}.sln" /m /verbosity:normal /p:Configuration=${{ steps.set_variables.outputs.config }} | |
- name: Create Package | |
id: create_package | |
shell: powershell | |
run: | | |
Set-Variable -Name "PKGNAME" -Value "${{ env.ProjectName }}-${{ steps.set_variables.outputs.suffix }}" | |
Invoke-WebRequest "${{ secrets.DEPDIRURL }}${{ env.ProjectName }}-win-x64-${{ steps.set_variables.outputs.dep }}-dependencies.zip" -OutFile ./deps.zip | |
7z e deps.zip -aoa | |
&"C:/Program Files (x86)/Inno Setup 6/ISCC.exe" "${{ github.workspace }}/install.iss" /O. /F$PKGNAME | |
echo "::set-output name=pkg-name::$PKGNAME.exe" | |
working-directory: ./Binaries/CI/App | |
- name: Upload | |
uses: ./.github/actions/upload | |
with: | |
pkg-name: ./Binaries/CI/App/${{ steps.create_package.outputs.pkg-name }} | |
url: ${{ secrets.UPLOADURL }} | |
pass: ${{ secrets.UPLOADPASS }} | |
osx: | |
# if: false # tmp disable | |
name: OSX | |
runs-on: macos-latest | |
strategy: | |
matrix: | |
include: | |
- arch: x86_64 | |
suffix: intel | |
config: Release | |
- arch: arm64 | |
suffix: silicon | |
config: ReleaseSilicon | |
fail-fast: false | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v2 | |
with: | |
submodules: 'recursive' | |
- name: Set Variables | |
id: set_variables | |
uses: ./.github/actions/set-variables | |
with: | |
os: 'osx-${{ matrix.suffix }}' | |
- name: Checkout JUCE | |
uses: actions/checkout@v2 | |
with: | |
repository: benkuper/JUCE | |
ref: ${{ env.juce-branch }} | |
path: JUCE | |
- name: Download Packages | |
run: | | |
curl -L -o Packages.dmg 'http://s.sudre.free.fr/Software/files/Packages.dmg' | |
hdiutil mount Packages.dmg | |
sudo installer -pkg "/Volumes/Packages ${{ env.PackagesVersion }}/Install Packages.pkg" -target / | |
hdiutil detach "/Volumes/Packages ${{ env.PackagesVersion }}/" | |
- name: Setup XCode | |
uses: maxim-lobanov/setup-xcode@v1 | |
with: | |
xcode-version: '15.3' | |
- name: Build | |
uses: sersoft-gmbh/xcodebuild-action@v2.0.1 | |
with: | |
project: Builds/MacOSX_CI/${{ env.ProjectName }}.xcodeproj | |
destination: platform=macOS | |
jobs: 2 | |
action: build | |
arch: ${{ matrix.arch }} | |
configuration: ${{ matrix.config }} | |
use-xcpretty: true | |
- name: Create Package | |
id: create_package | |
run: | | |
packagesbuild ${{ env.ProjectName }}.pkgproj | |
PKGNAME=${{ env.ProjectName }}-${{ steps.set_variables.outputs.suffix }}.pkg | |
mv ${{ env.ProjectName }}.pkg $PKGNAME | |
echo "::set-output name=pkg-name::$PKGNAME" | |
working-directory: ./Package | |
- name: Upload | |
uses: ./.github/actions/upload | |
with: | |
pkg-name: ./Package/${{ steps.create_package.outputs.pkg-name }} | |
url: ${{ secrets.UPLOADURL }} | |
pass: ${{ secrets.UPLOADPASS }} | |
linux: | |
# if: false # tmp disable | |
name: Linux | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v2 | |
with: | |
submodules: 'recursive' | |
- name: Set Variables | |
id: set_variables | |
uses: ./.github/actions/set-variables | |
with: | |
os: 'x64' | |
- name: Checkout JUCE | |
uses: actions/checkout@v2 | |
with: | |
repository: benkuper/JUCE | |
ref: ${{ env.juce-branch }} | |
path: JUCE | |
- name: Installing dependencies | |
id: install_deps | |
#shell: bash {0} # Opt out of fail-fast behavior (necessary to ignore fetch errors) | |
run: | | |
sudo apt-get update | |
echo "Installing JUCE lib dependencies and extra tools" | |
sudo apt-get install -qyf libcurl3-gnutls libfreetype6-dev libx11-dev libxinerama-dev libxrandr-dev libxcursor-dev libxcomposite-dev mesa-common-dev libasound2-dev freeglut3-dev libcurl4-gnutls-dev libasound2-dev libjack-dev libbluetooth-dev libgtk-3-dev libwebkit2gtk-4.0-dev libsdl2-dev libfuse2 libfuse2 libusb-1.0-0-dev libhidapi-dev ladspa-sdk libssl-dev | |
sudo apt-get install -qy curl | |
cd ${{ github.workspace }} | |
wget "https://github.com/AppImage/AppImageKit/releases/download/13/appimagetool-x86_64.AppImage" | |
chmod a+x appimagetool-x86_64.AppImage | |
# - name: Start SSH via ngrok | |
# uses: P3TERX/ssh2actions@main | |
# with: | |
# mode: ngrok | |
# env: | |
# # After sign up on the https://ngrok.com | |
# # You can find this token here: https://dashboard.ngrok.com/auth/your-authtoken | |
# NGROK_TOKEN: ${{ secrets.NGROK_TOKEN }} | |
# # ngrok server region [us, eu, au, ap, sa, jp, in] (optional, default: us) | |
# # You can find this server region here: https://ngrok.com/docs#global-locations | |
# NGROK_REGION: us | |
# # This password you will use when authorizing via SSH | |
# SSH_PASSWORD: ${{ secrets.SSH_PASSWORD }} | |
- name: Build | |
run: | | |
cd ${{ github.workspace }}/Builds/LinuxMakefile | |
make -j2 CONFIG=Release | |
- name: Create AppImage | |
id: create_package | |
run: | | |
mkdir -p ${{ env.ProjectName }}.AppDir/usr/bin/ | |
cp build/${{ env.ProjectName }} ${{ env.ProjectName }}.AppDir/usr/bin/ | |
PKGNAME=${{ env.ProjectName }}-linux-${{ steps.set_variables.outputs.suffix }}.AppImage | |
echo "pkg-name=$PKGNAME" >> $GITHUB_OUTPUT | |
${{ github.workspace }}/appimagetool-x86_64.AppImage ${{ env.ProjectName }}.AppDir $PKGNAME | |
working-directory: ./Builds/LinuxMakefile | |
- name: Upload | |
uses: ./.github/actions/upload | |
with: | |
pkg-name: ./Builds/LinuxMakefile/${{ steps.create_package.outputs.pkg-name }} | |
url: ${{ secrets.UPLOADURL }} | |
pass: ${{ secrets.UPLOADPASS }} | |
raspberrypi: | |
# if: false # tmp disable | |
name: Raspberry Pi | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
include: | |
- arch: armhf | |
cpu: arm1176 #suitable for all Pi versions | |
base_image: raspios_lite:2021-05-07 | |
cpu_info: raspberrypi_zero_w | |
buildFolder: "Raspberry" | |
buildConfig: "Release" | |
- arch: aarch64 | |
cpu: cortex-a53 | |
base_image: raspios_lite_arm64:2022-04-04 | |
cpu_info: raspberrypi_zero2_w_arm64_w | |
buildFolder: "Raspberry64" | |
buildConfig: "Release" | |
fail-fast: false | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v2 | |
with: | |
submodules: 'recursive' | |
- name: Set Variables | |
id: set_variables | |
uses: ./.github/actions/set-variables | |
with: | |
os: ${{ matrix.arch }} | |
- name: Checkout JUCE | |
uses: actions/checkout@v2 | |
with: | |
repository: benkuper/JUCE | |
ref: ${{ env.juce-branch }} | |
path: JUCE | |
- name: Download and prepare AppImage | |
run: | | |
sudo apt-get update | |
sudo apt-get install libfuse2 # required on ubuntu 22.04 | |
wget "https://github.com/AppImage/AppImageKit/releases/download/13/appimagetool-x86_64.AppImage" | |
chmod a+x appimagetool-x86_64.AppImage | |
echo "Downloading AppImage runtime for ${{ matrix.arch }}" | |
wget "https://github.com/AppImage/AppImageKit/releases/download/13/runtime-${{ matrix.arch }}" | |
mkdir -p ./Builds/${{ matrix.buildFolder }}/${{ env.ProjectName }}.AppDir/usr/bin/ | |
working-directory: ${{ github.workspace }} | |
- name: Install dependencies and build | |
id: build | |
uses: pguyot/arm-runner-action@v2 | |
with: | |
image_additional_mb: 2048 | |
base_image: ${{ matrix.base_image }} | |
cpu: ${{ matrix.cpu }} | |
copy_artifact_path: Builds/${{ matrix.buildFolder }}/build/${{ env.ProjectName }} | |
copy_artifact_dest: Builds/${{ matrix.buildFolder }}/${{ env.ProjectName }}.AppDir/usr/bin/ | |
commands: | | |
apt-get update | |
echo "Installing JUCE lib dependencies and extra tools" | |
apt-get install -qyf libcurl3-gnutls libfreetype6-dev libx11-dev libxinerama-dev libxrandr-dev libxcursor-dev libxcomposite-dev mesa-common-dev libasound2-dev freeglut3-dev libcurl4-gnutls-dev libasound2-dev libjack-dev libbluetooth-dev libgtk-3-dev libwebkit2gtk-4.0-dev libsdl2-dev libusb-1.0-0-dev libhidapi-dev ladspa-sdk libssl-dev | |
apt-get install -qy curl | |
cd Builds/${{ matrix.buildFolder }} | |
make -j2 CONFIG=${{ matrix.buildConfig }} | |
- name: Create AppImage | |
id: create_package | |
run: | | |
PKGNAME=${{ env.ProjectName }}-linux-${{ steps.set_variables.outputs.suffix }}.AppImage | |
echo "pkg-name=$PKGNAME" >> $GITHUB_OUTPUT | |
${{ github.workspace }}/appimagetool-x86_64.AppImage --runtime-file ${{ github.workspace }}/runtime-${{ matrix.arch }} ${{ env.ProjectName }}.AppDir $PKGNAME | |
working-directory: ./Builds/${{ matrix.buildFolder }} | |
- name: Upload | |
uses: ./.github/actions/upload | |
with: | |
pkg-name: ./Builds/${{ matrix.buildFolder }}/${{ steps.create_package.outputs.pkg-name }} | |
url: ${{ secrets.UPLOADURL }} | |
pass: ${{ secrets.UPLOADPASS }} |