name: Build InstaDrums on: push: branches: [main] tags: ['v*'] pull_request: branches: [main] jobs: build-windows: runs-on: windows-latest steps: - uses: actions/checkout@v4 - name: Clone JUCE run: git clone --depth 1 https://github.com/juce-framework/JUCE.git ../JUCE - name: Configure CMake run: cmake -B build -G "Visual Studio 17 2022" -A x64 - name: Build Release run: cmake --build build --config Release - name: Package VST3 run: Compress-Archive -Path "build/InstaDrums_artefacts/Release/VST3/InstaDrums.vst3" -DestinationPath "InstaDrums-VST3-Win64.zip" - name: Package Standalone run: Compress-Archive -Path "build/InstaDrums_artefacts/Release/Standalone/InstaDrums.exe" -DestinationPath "InstaDrums-Standalone-Win64.zip" - name: Upload VST3 uses: actions/upload-artifact@v4 with: name: InstaDrums-VST3-Win64 path: InstaDrums-VST3-Win64.zip - name: Upload Standalone uses: actions/upload-artifact@v4 with: name: InstaDrums-Standalone-Win64 path: InstaDrums-Standalone-Win64.zip build-macos: runs-on: macos-latest steps: - uses: actions/checkout@v4 - name: Clone JUCE run: git clone --depth 1 https://github.com/juce-framework/JUCE.git ../JUCE - name: Configure CMake (Universal Binary) run: cmake -B build -G Xcode -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 - name: Build Release run: cmake --build build --config Release - name: Package VST3 working-directory: build/InstaDrums_artefacts/Release run: zip -r $GITHUB_WORKSPACE/InstaDrums-VST3-macOS.zip VST3/InstaDrums.vst3 - name: Package AU working-directory: build/InstaDrums_artefacts/Release run: zip -r $GITHUB_WORKSPACE/InstaDrums-AU-macOS.zip AU/InstaDrums.component - name: Package Standalone working-directory: build/InstaDrums_artefacts/Release run: zip -r $GITHUB_WORKSPACE/InstaDrums-Standalone-macOS.zip Standalone/InstaDrums.app - name: Upload VST3 uses: actions/upload-artifact@v4 with: name: InstaDrums-VST3-macOS path: InstaDrums-VST3-macOS.zip - name: Upload AU uses: actions/upload-artifact@v4 with: name: InstaDrums-AU-macOS path: InstaDrums-AU-macOS.zip - name: Upload Standalone uses: actions/upload-artifact@v4 with: name: InstaDrums-Standalone-macOS path: InstaDrums-Standalone-macOS.zip build-linux: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y build-essential cmake git libasound2-dev \ libfreetype6-dev libx11-dev libxrandr-dev libxcursor-dev \ libxinerama-dev libwebkit2gtk-4.1-dev libcurl4-openssl-dev - name: Clone JUCE run: git clone --depth 1 https://github.com/juce-framework/JUCE.git ../JUCE - name: Configure CMake run: cmake -B build -DCMAKE_BUILD_TYPE=Release - name: Build Release run: cmake --build build --config Release --parallel $(nproc) - name: Package VST3 working-directory: build/InstaDrums_artefacts/Release run: zip -r $GITHUB_WORKSPACE/InstaDrums-VST3-Linux-x64.zip VST3/InstaDrums.vst3 - name: Package Standalone run: zip -j InstaDrums-Standalone-Linux-x64.zip build/InstaDrums_artefacts/Release/Standalone/InstaDrums - name: Upload VST3 uses: actions/upload-artifact@v4 with: name: InstaDrums-VST3-Linux-x64 path: InstaDrums-VST3-Linux-x64.zip - name: Upload Standalone uses: actions/upload-artifact@v4 with: name: InstaDrums-Standalone-Linux-x64 path: InstaDrums-Standalone-Linux-x64.zip release: if: startsWith(github.ref, 'refs/tags/v') needs: [build-windows, build-macos, build-linux] runs-on: ubuntu-latest permissions: contents: write steps: - name: Download all artifacts uses: actions/download-artifact@v4 with: path: artifacts - name: Create Release uses: softprops/action-gh-release@v2 with: files: | artifacts/InstaDrums-VST3-Win64/InstaDrums-VST3-Win64.zip artifacts/InstaDrums-Standalone-Win64/InstaDrums-Standalone-Win64.zip artifacts/InstaDrums-VST3-macOS/InstaDrums-VST3-macOS.zip artifacts/InstaDrums-AU-macOS/InstaDrums-AU-macOS.zip artifacts/InstaDrums-Standalone-macOS/InstaDrums-Standalone-macOS.zip artifacts/InstaDrums-VST3-Linux-x64/InstaDrums-VST3-Linux-x64.zip artifacts/InstaDrums-Standalone-Linux-x64/InstaDrums-Standalone-Linux-x64.zip generate_release_notes: true