|
- name: Build VCV Rack Plugin
- on: [push, pull_request]
-
- env:
- rack-sdk-version: 1.1.6
-
- defaults:
- run:
- shell: bash
-
- jobs:
- build:
- name: ${{ matrix.config.name }}
- runs-on: ${{ matrix.config.os }}
- strategy:
- matrix:
- config:
- - {
- name: Linux,
- os: ubuntu-16.04,
- prepare-os: sudo apt install -y libglu-dev
- }
- - {
- name: MacOS,
- os: macos-latest,
- prepare-os: ""
- }
- - {
- name: Windows,
- 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 }}.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-16.04
- 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
|