Hello! I’m working with @zakforrest on a niche module. I built him a distributable (voxglitch-2.2.0-win.vcvplugin - Google Drive), and he installed it, but the new module is not appearing in his right-click menu. Any suggestions?
He’s using Rack 2.0.3. I’m building it for Rack. I’m using 2.beta.1.
im on a mac and bret is developing the module on a PC, is there a workaround for this? his other finished/released Voxglitch modules work on my computer…
heres a screen recording of my install issue if it helps…
I should say that even for an experienced person it can easily take more than one evening to figure this out. and you need to download a large (but free) copy of XCode from the Apple store. It might be more practical to find someone to do it for you?
Silvio Kunaschks “Action Script” for Github is probably the best solution.
In your repository on Github (containing src & res folder, makefile, license and plugin.json) go to “Actions” and create a new action/workflow.
Call the new action/workflow file build-plugin.yml
Paste following code into it:
name: Build VCV Rack Plugin
on: [push, pull_request]
env:
rack-sdk-version: 2.0.2
defaults:
run:
shell: bash
jobs:
build:
name: ${{ matrix.config.name }}
runs-on: ${{ matrix.config.os }}
strategy:
matrix:
config:
- {
name: Linux,
sdk-platform: lin,
os: ubuntu-latest,
prepare-os: sudo apt update && sudo apt install -y libglu-dev
}
- {
name: MacOS,
sdk-platform: mac,
os: macos-latest,
prepare-os: ""
}
- {
name: Windows,
sdk-platform: win,
os: windows-latest,
prepare-os: export CC=gcc
}
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Get Rack-SDK
run: |
pushd $HOME
curl -o Rack-SDK.zip https://vcvrack.com/downloads/Rack-SDK-${{ env.rack-sdk-version }}-${{ matrix.config.sdk-platform }}.zip
unzip Rack-SDK.zip
- name: Patch plugin.mk, use 7zip on Windows
if: runner.os == 'Windows'
run: |
sed -i 's/zip -q -9 -r/7z a -tzip -mx=9/' $HOME/Rack-SDK/plugin.mk
- name: Modify plugin version
# only modify plugin version if no tag was created
if: "! startsWith(github.ref, 'refs/tags/v')"
run: |
gitrev=`git rev-parse --short HEAD`
pluginversion=`jq -r '.version' plugin.json`
echo "Set plugin version from $pluginversion to $pluginversion-$gitrev"
cat <<< `jq --arg VERSION "$pluginversion-$gitrev" '.version=$VERSION' plugin.json` > plugin.json
- name: Build plugin
run: |
${{ matrix.config.prepare-os }}
export RACK_DIR=$HOME/Rack-SDK
make -j dep
make -j dist
- name: Upload artifact
uses: actions/upload-artifact@v2
with:
path: dist
name: ${{ matrix.config.name }}
publish:
name: Publish plugin
# only create a release if a tag was created that is called e.g. v1.2.3
# see also https://vcvrack.com/manual/Manifest#version
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v2
- uses: FranzDiebold/github-env-vars-action@v1.2.1
- name: Check if plugin version matches tag
run: |
pluginversion=`jq -r '.version' plugin.json`
if [ "v$pluginversion" != "${{ env.GITHUB_REF_NAME }}" ]; then
echo "Plugin version from plugin.json 'v$pluginversion' doesn't match with tag version '${{ env.GITHUB_REF_NAME }}'"
exit 1
fi
- name: Create Release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
body: |
${{ env.GITHUB_REPOSITORY_NAME }} VCV Rack Plugin ${{ env.GITHUB_REF_NAME }}
draft: false
prerelease: false
- uses: actions/download-artifact@v2
with:
path: _artifacts
- name: Upload release assets
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: _artifacts/**/*.zip
tag: ${{ github.ref }}
file_glob: true
save the action
create a new release and tag it v2.0.0 (replace the numbers with your plugins version as stated in your plugin.json) & (click create tag on publish)
after publishing, immediately delete the release (since you want an empty tag)
go back to actions - either the action is automatically running already OR you have to click “events” and then push - which will run the compiler.
if the created tag is identical with the version in plugin.json and the compilation runs without errors, you should have a new release for Windows, Linux and MacOS in your repository a few minutes later.