From e74172b67b0a78bb22a8605317e5bfc53fa5972d Mon Sep 17 00:00:00 2001 From: Robbert van der Helm Date: Mon, 11 Apr 2022 16:10:16 +0200 Subject: [PATCH] Split build and package workflows --- .github/workflows/build.yml | 81 +++++++++++++++++++++++++++++ .github/workflows/test.yml | 62 ---------------------- README.md | 1 + plugins/crisp/README.md | 2 +- plugins/diopser/README.md | 2 +- plugins/puberty_simulator/README.md | 2 +- 6 files changed, 85 insertions(+), 65 deletions(-) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..4b173f03 --- /dev/null +++ b/.github/workflows/build.yml @@ -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 }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6201e339..474aa396 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -67,65 +67,3 @@ jobs: with: command: test 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 }} diff --git a/README.md b/README.md index 78c36f12..e257d198 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # 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) This is a work in progress API-agnostic audio plugin framework written in Rust diff --git a/plugins/crisp/README.md b/plugins/crisp/README.md index ad2681d8..2f44acba 100644 --- a/plugins/crisp/README.md +++ b/plugins/crisp/README.md @@ -9,7 +9,7 @@ You can download the development binaries for Linux, Windows and macOS from the [automated 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 -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 have to [disable Gatekeeper](https://disable-gatekeeper.github.io/) to use the diff --git a/plugins/diopser/README.md b/plugins/diopser/README.md index 63cf6631..0ea5cbbb 100644 --- a/plugins/diopser/README.md +++ b/plugins/diopser/README.md @@ -25,7 +25,7 @@ You can download the development binaries for Linux, Windows and macOS from the [automated 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 -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 have to [disable Gatekeeper](https://disable-gatekeeper.github.io/) to use the diff --git a/plugins/puberty_simulator/README.md b/plugins/puberty_simulator/README.md index 3fd5c3b1..6075df3e 100644 --- a/plugins/puberty_simulator/README.md +++ b/plugins/puberty_simulator/README.md @@ -13,7 +13,7 @@ You can download the development binaries for Linux, Windows and macOS from the [automated 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 -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 have to [disable Gatekeeper](https://disable-gatekeeper.github.io/) to use the