1
0
Fork 0

Split build and package workflows

This commit is contained in:
Robbert van der Helm 2022-04-11 16:10:16 +02:00
parent 5b5bbf19f7
commit e74172b67b
6 changed files with 85 additions and 65 deletions

81
.github/workflows/build.yml vendored Normal file
View file

@ -0,0 +1,81 @@
name: Automated Builds
on:
push:
branches:
- '**'
tags:
# Run when pushing version tags, since otherwise it's impossible to
# restart a successful build after pushing a tag
- '*.*.*'
pull_request:
branches:
- master
defaults:
run:
# This otherwise gets run under dash which does not support brace expansion
shell: bash
jobs:
# We'll only package the plugins with an entry in bundler.toml
package:
strategy:
matrix:
os: [ubuntu-18.04, macos-10.15, windows-latest]
name: Package plugin binaries
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
- name: Fetch all git history
run: git fetch --force --prune --tags --unshallow
- name: Install dependencies
if: startsWith(matrix.os, 'ubuntu')
run: |
sudo apt-get update
sudo apt-get install -y libgl-dev libxcb1-dev libxcb-icccm4-dev libxcursor-dev libxkbcommon-dev libxcb-shape0-dev libxcb-xfixes0-dev
- uses: actions/cache@v2
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Set up Rust toolchain
uses: actions-rs/toolchain@v1
with:
# FIXME: Needed for SIMD. Diopser can be compiled without SIMD support
# though, we'd actually need to test whether both versions
# compile
toolchain: nightly
profile: minimal
default: true
- name: Package all targets from bundler.toml
# Instead of hardcoding which targets to build and package, we'll
# package everything that's got en entry in the `bundler.toml` file
run: |
# Building can be sped up by specifying all packages in one go
package_args=()
for package in $(cargo xtask known-packages); do
package_args+=("-p" "$package")
done
cargo xtask bundle "${package_args[@]}" --release
- name: Determine build archive name
run: |
echo "ARCHIVE_NAME=nih-plugs-$(git describe --always)-${{ matrix.os }}" >> "$GITHUB_ENV"
- name: Move all packaged plugin into a directory
run: |
# GitHub Action strips the top level directory, great, have another one
mkdir -p "$ARCHIVE_NAME/$ARCHIVE_NAME"
mv target/bundled/* "$ARCHIVE_NAME/$ARCHIVE_NAME"
- uses: actions/upload-artifact@v2
with:
name: ${{ env.ARCHIVE_NAME }}
path: ${{ env.ARCHIVE_NAME }}

View file

@ -67,65 +67,3 @@ jobs:
with: with:
command: test command: test
args: --workspace args: --workspace
# We won't package the example plugins
package:
strategy:
matrix:
os: [ubuntu-18.04, macos-10.15, windows-latest]
name: Package plugin binaries
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
- name: Fetch all git history
run: git fetch --force --prune --tags --unshallow
- name: Install dependencies
if: startsWith(matrix.os, 'ubuntu')
run: |
sudo apt-get update
sudo apt-get install -y libgl-dev libxcb1-dev libxcb-icccm4-dev libxcursor-dev libxkbcommon-dev libxcb-shape0-dev libxcb-xfixes0-dev
- uses: actions/cache@v2
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Set up Rust toolchain
uses: actions-rs/toolchain@v1
with:
# FIXME: Needed for SIMD. Diopser can be compiled without SIMD support
# though, we'd actually need to test whether both versions
# compile
toolchain: nightly
profile: minimal
default: true
- name: Package all targets from bundler.toml
# Instead of hardcoding which targets to build and package, we'll
# package everything that's got en entry in the `bundler.toml` file
run: |
# Building can be sped up by specifying all packages in one go
package_args=()
for package in $(cargo xtask known-packages); do
package_args+=("-p" "$package")
done
cargo xtask bundle "${package_args[@]}" --release
- name: Determine build archive name
run: |
echo "ARCHIVE_NAME=nih-plugs-$(git describe --always)-${{ matrix.os }}" >> "$GITHUB_ENV"
- name: Move all packaged plugin into a directory
run: |
# GitHub Action strips the top level directory, great, have another one
mkdir -p "$ARCHIVE_NAME/$ARCHIVE_NAME"
mv target/bundled/* "$ARCHIVE_NAME/$ARCHIVE_NAME"
- uses: actions/upload-artifact@v2
with:
name: ${{ env.ARCHIVE_NAME }}
path: ${{ env.ARCHIVE_NAME }}

View file

@ -1,5 +1,6 @@
# NIH-plug # NIH-plug
[![Automated builds](https://github.com/robbert-vdh/nih-plug/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/robbert-vdh/nih-plug/actions/workflows/build.yml?query=branch%3Amaster)
[![Tests](https://github.com/robbert-vdh/nih-plug/actions/workflows/test.yml/badge.svg?branch=master)](https://github.com/robbert-vdh/nih-plug/actions/workflows/test.yml?query=branch%3Amaster) [![Tests](https://github.com/robbert-vdh/nih-plug/actions/workflows/test.yml/badge.svg?branch=master)](https://github.com/robbert-vdh/nih-plug/actions/workflows/test.yml?query=branch%3Amaster)
This is a work in progress API-agnostic audio plugin framework written in Rust This is a work in progress API-agnostic audio plugin framework written in Rust

View file

@ -9,7 +9,7 @@ You can download the development binaries for Linux, Windows and macOS from the
[automated [automated
builds](https://github.com/robbert-vdh/nih-plug/actions/workflows/test.yml?query=branch%3Amaster) builds](https://github.com/robbert-vdh/nih-plug/actions/workflows/test.yml?query=branch%3Amaster)
page. If you're not signed in on GitHub, then you can also find the last nightly page. If you're not signed in on GitHub, then you can also find the last nightly
build [here](https://nightly.link/robbert-vdh/nih-plug/workflows/test/master). build [here](https://nightly.link/robbert-vdh/nih-plug/workflows/build/master).
The macOS version has not been tested and may not work correctly. You may also The macOS version has not been tested and may not work correctly. You may also
have to [disable Gatekeeper](https://disable-gatekeeper.github.io/) to use the have to [disable Gatekeeper](https://disable-gatekeeper.github.io/) to use the

View file

@ -25,7 +25,7 @@ You can download the development binaries for Linux, Windows and macOS from the
[automated [automated
builds](https://github.com/robbert-vdh/nih-plug/actions/workflows/test.yml?query=branch%3Amaster) builds](https://github.com/robbert-vdh/nih-plug/actions/workflows/test.yml?query=branch%3Amaster)
page. If you're not signed in on GitHub, then you can also find the last nightly page. If you're not signed in on GitHub, then you can also find the last nightly
build [here](https://nightly.link/robbert-vdh/nih-plug/workflows/test/master). build [here](https://nightly.link/robbert-vdh/nih-plug/workflows/build/master).
The macOS version has not been tested and may not work correctly. You may also The macOS version has not been tested and may not work correctly. You may also
have to [disable Gatekeeper](https://disable-gatekeeper.github.io/) to use the have to [disable Gatekeeper](https://disable-gatekeeper.github.io/) to use the

View file

@ -13,7 +13,7 @@ You can download the development binaries for Linux, Windows and macOS from the
[automated [automated
builds](https://github.com/robbert-vdh/nih-plug/actions/workflows/test.yml?query=branch%3Amaster) builds](https://github.com/robbert-vdh/nih-plug/actions/workflows/test.yml?query=branch%3Amaster)
page. If you're not signed in on GitHub, then you can also find the last nightly page. If you're not signed in on GitHub, then you can also find the last nightly
build [here](https://nightly.link/robbert-vdh/nih-plug/workflows/test/master). build [here](https://nightly.link/robbert-vdh/nih-plug/workflows/build/master).
The macOS version has not been tested and may not work correctly. You may also The macOS version has not been tested and may not work correctly. You may also
have to [disable Gatekeeper](https://disable-gatekeeper.github.io/) to use the have to [disable Gatekeeper](https://disable-gatekeeper.github.io/) to use the