Skip to content

Consolidate VCV Rack and MetaModule CI into single workflow #20

Consolidate VCV Rack and MetaModule CI into single workflow

Consolidate VCV Rack and MetaModule CI into single workflow #20

Workflow file for this run

name: Build Scrambler
on: [push, pull_request]
env:
rack-sdk-version: 2.6.6
rack-plugin-toolchain-dir: /home/build/rack-plugin-toolchain
arm-toolchain-version: "12.3.rel1"
defaults:
run:
shell: bash
jobs:
build-vcvrack:
name: ${{ matrix.platform }}
runs-on: ubuntu-latest
container:
image: ghcr.io/qno/rack-plugin-toolchain-win-linux
options: --user root
strategy:
fail-fast: false
matrix:
platform: [win-x64, lin-x64]
steps:
- uses: actions/checkout@v6
- uses: actions/cache@v4
id: plugin-version-cache
with:
path: plugin.json
key: ${{ github.sha }}-${{ github.run_id }}
- name: Build plugin
run: |
export PLUGIN_DIR=$GITHUB_WORKSPACE
pushd ${{ env.rack-plugin-toolchain-dir }}
make plugin-build-${{ matrix.platform }}
- name: Upload artifact
uses: actions/upload-artifact@v6
with:
path: |
${{ env.rack-plugin-toolchain-dir }}/plugin-build/*.vcvplugin
name: ${{ matrix.platform }}
build-mac:
name: mac-${{ matrix.platform }}
runs-on: macos-14
strategy:
fail-fast: false
matrix:
platform: [x64, arm64]
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
- uses: actions/cache@v4
id: plugin-version-cache
with:
path: plugin.json
key: ${{ github.sha }}-${{ github.run_id }}
- name: Get Rack-SDK
run: |
pushd $HOME
wget -O Rack-SDK.zip https://vcvrack.com/downloads/Rack-SDK-${{ env.rack-sdk-version }}-mac-${{ matrix.platform }}.zip
unzip Rack-SDK.zip
- name: Build plugin
run: |
CROSS_COMPILE_TARGET_x64=x86_64-apple-darwin
CROSS_COMPILE_TARGET_arm64=arm64-apple-darwin
export RACK_DIR=$HOME/Rack-SDK
export CROSS_COMPILE=$CROSS_COMPILE_TARGET_${{ matrix.platform }}
make dep
make dist
- name: Upload artifact
uses: actions/upload-artifact@v6
with:
path: dist/*.vcvplugin
name: mac-${{ matrix.platform }}
build-metamodule:
name: metamodule
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y cmake ninja-build inkscape jq
- name: Install ARM GCC 12.3 toolchain
run: |
wget -q https://developer.arm.com/-/media/Files/downloads/gnu/${{ env.arm-toolchain-version }}/binrel/arm-gnu-toolchain-${{ env.arm-toolchain-version }}-x86_64-arm-none-eabi.tar.xz
mkdir -p $HOME/toolchains
tar -xf arm-gnu-toolchain-${{ env.arm-toolchain-version }}-x86_64-arm-none-eabi.tar.xz -C $HOME/toolchains
- name: Clone MetaModule Plugin SDK
run: |
git clone https://github.com/4ms/metamodule-plugin-sdk --recursive $HOME/metamodule-plugin-sdk
- name: Configure
run: |
cmake --fresh -B mm-build -G Ninja \
-DMETAMODULE_SDK_DIR=$HOME/metamodule-plugin-sdk \
-DTOOLCHAIN_BASE_DIR=$HOME/toolchains/arm-gnu-toolchain-${{ env.arm-toolchain-version }}-x86_64-arm-none-eabi/bin
- name: Build
run: cmake --build mm-build
- name: Rename with version
run: |
VERSION=$(jq -r '.version' plugin.json)
mv metamodule-plugins/Scrambler.mmplugin metamodule-plugins/Scrambler-v${VERSION}.mmplugin
- name: Upload artifact
uses: actions/upload-artifact@v6
with:
name: metamodule
path: metamodule-plugins/*.mmplugin
publish:
name: Publish Release
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-latest
needs: [build-vcvrack, build-mac, build-metamodule]
permissions:
contents: write
steps:
- uses: actions/checkout@v6
- name: Get version from plugin.json
id: version
run: |
VERSION=$(jq -r '.version' plugin.json)
echo "version=$VERSION" >> $GITHUB_OUTPUT
- uses: actions/download-artifact@v6
with:
path: _artifacts
- name: Create Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ github.ref }}
name: Scrambler v${{ steps.version.outputs.version }}
body: |
Scrambler v${{ steps.version.outputs.version }} for VCV Rack and 4ms MetaModule.
draft: false
prerelease: false
files: |
_artifacts/**/*.vcvplugin
_artifacts/**/*.mmplugin