Create release #240
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
on: | |
create: | |
ref_type: tag | |
ref: 'v*' | |
name: Create release | |
jobs: | |
build-release-artifacts: | |
name: Build artifact | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
include: | |
- artifact: windows-x86_64 | |
os: windows-latest | |
toolchain-suffix: x86_64-pc-windows-msvc | |
lib-file-name: helgobox.dll | |
extension-file-name: reaper_helgobox.dll | |
target: x86_64-pc-windows-msvc | |
use-cross: false | |
profile: release | |
features: "playtime,egui,licensing" | |
- artifact: windows-i686 | |
os: windows-latest | |
toolchain-suffix: i686-pc-windows-msvc | |
lib-file-name: helgobox.dll | |
extension-file-name: reaper_helgobox.dll | |
target: i686-pc-windows-msvc | |
use-cross: false | |
profile: release-llvm-out-of-memory-fix | |
features: "egui" | |
- artifact: macos-x86_64 | |
os: macos-latest | |
toolchain-suffix: x86_64-apple-darwin | |
lib-file-name: libhelgobox.dylib | |
extension-file-name: libreaper_helgobox.dylib | |
target: x86_64-apple-darwin | |
use-cross: false | |
profile: release | |
features: "playtime,egui,licensing" | |
- artifact: macos-aarch64 | |
os: macos-latest | |
toolchain-suffix: x86_64-apple-darwin | |
lib-file-name: libhelgobox.dylib | |
extension-file-name: libreaper_helgobox.dylib | |
target: aarch64-apple-darwin | |
use-cross: false | |
profile: release | |
features: "playtime,egui,licensing" | |
- artifact: linux-x86_64 | |
os: ubuntu-20.04 | |
toolchain-suffix: x86_64-unknown-linux-gnu | |
lib-file-name: libhelgobox.so | |
extension-file-name: "" | |
target: x86_64-unknown-linux-gnu | |
use-cross: false | |
strip-cmd: strip | |
profile: release | |
features: "" | |
# - artifact: linux-aarch64 | |
# os: ubuntu-22.04 | |
# toolchain-suffix: x86_64-unknown-linux-gnu | |
# lib-file-name: libhelgobox.so | |
# extension-file-name: "" | |
# target: aarch64-unknown-linux-gnu | |
# use-cross: true | |
# strip-cmd: aarch64-linux-gnu-strip | |
# profile: release | |
# features: "" | |
# - artifact: linux-armv7 | |
# os: ubuntu-22.04 | |
# toolchain-suffix: x86_64-unknown-linux-gnu | |
# lib-file-name: libhelgobox.so | |
# extension-file-name: "" | |
# target: armv7-unknown-linux-gnueabihf | |
# use-cross: true | |
# strip-cmd: arm-linux-gnueabihf-strip | |
# profile: release | |
# features: "" | |
env: | |
# This is relevant for macOS builds only (and only if not overridden). | |
# TODO-high This is temporarily 10.9 (should be 10.7) until https://github.com/rust-lang/cc-rs/issues/902 is fixed | |
MACOSX_DEPLOYMENT_TARGET: 10.9 | |
steps: | |
# Prepare (all) | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- uses: webfactory/[email protected] | |
with: | |
ssh-private-key: | | |
${{ secrets.PRIVATE_PLAYTIME_CLIP_ENGINE_DEPLOY_KEY }} | |
${{ secrets.PRIVATE_HELGOBOSS_LICENSE_PROCESSOR_DEPLOY_KEY }} | |
- name: Update submodules | |
run: | | |
git submodule update --init | |
- name: Install Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: 1.79.0-${{ matrix.toolchain-suffix }} | |
target: ${{ matrix.target }} | |
override: true | |
# Install OS dependencies (Linux/macOS only) | |
- name: Install native Linux dependencies | |
if: startsWith(matrix.os, 'ubuntu-') | |
run: | | |
sudo apt-get update | |
sudo apt-get install nasm php binutils-arm-linux-gnueabihf binutils-aarch64-linux-gnu libxdo-dev libx11-dev libxcursor-dev libxcb-dri2-0-dev libxcb-icccm4-dev libx11-xcb-dev mesa-common-dev libgl1-mesa-dev libglu1-mesa-dev libspeechd-dev libgtk-3-dev | |
- run: brew install php | |
if: matrix.os == 'macos-latest' | |
# Override SDK root and deployment target (macOS aarch64 only) | |
- name: Set SDKROOT | |
if: matrix.target == 'aarch64-apple-darwin' | |
run: echo "SDKROOT=$(xcrun -sdk macosx11.1 --show-sdk-path)" >> $GITHUB_ENV | |
- name: Set MACOSX_DEPLOYMENT_TARGET | |
if: matrix.target == 'aarch64-apple-darwin' | |
run: echo "MACOSX_DEPLOYMENT_TARGET=$(xcrun -sdk macosx11.1 --show-sdk-platform-version)" >> $GITHUB_ENV | |
# Generate dialogs outside of Docker containers in cross builds because PHP is not available in container. | |
# TODO-high-performance Update: Actually, now it is ... I added it to Cross.toml. So I guess we can remove this. | |
- name: cargo test (for generating dialogs with php) | |
if: matrix.use-cross == true | |
uses: actions-rs/cargo@v1 | |
env: | |
RUST_MIN_STACK: 5242880 | |
with: | |
command: test | |
args: --features "${{ matrix.features }}" | |
# Build (all) | |
- name: Build release | |
uses: actions-rs/cargo@v1 | |
env: | |
PLAYTIME_AUTHENTICITY_SIGNING_KEY: "${{ secrets.PLAYTIME_AUTHENTICITY_SIGNING_KEY }}" | |
PLAYTIME_LICENSE_VERIFYING_KEY: "${{ secrets.PLAYTIME_LICENSE_VERIFYING_KEY }}" | |
PLAYTIME_PRESET_VERIFYING_KEY: "${{ secrets.PLAYTIME_PRESET_VERIFYING_KEY }}" | |
with: | |
command: build | |
args: --features "${{ matrix.features }}" --profile ${{ matrix.profile }} --target ${{ matrix.target }} | |
use-cross: ${{ matrix.use-cross }} | |
# Strip debug symbols (Linux and macOS) | |
# TODO-medium We could replace this with Cargo's recent built-in strip function | |
- name: Strip debug symbols from Linux binary | |
if: startsWith(matrix.os, 'ubuntu-') | |
run: | | |
cp target/${{ matrix.target }}/${{ matrix.profile }}/${{ matrix.lib-file-name }} target/${{ matrix.target }}/${{ matrix.profile }}/libhelgobox-debug.so | |
${{ matrix.strip-cmd }} target/${{ matrix.target }}/${{ matrix.profile }}/${{ matrix.lib-file-name }} | |
- name: Strip debug symbols from macOS binary | |
if: matrix.os == 'macos-latest' | |
run: | | |
strip -u -r target/${{ matrix.target }}/${{ matrix.profile }}/${{ matrix.lib-file-name }} | |
# Upload plug-in (all) | |
- name: Upload plug-in to artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.artifact }} | |
path: target/${{ matrix.target }}/${{ matrix.profile }}/${{ matrix.lib-file-name }} | |
# Upload extension (macOS and Windows only for now) | |
- name: Upload extension to artifact | |
if: matrix.extension-file-name != '' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.artifact }} | |
path: target/${{ matrix.target }}/${{ matrix.profile }}/${{ matrix.extension-file-name }} | |
# Upload debug symbols (all) | |
- name: Upload Windows debug symbols to artifact | |
if: matrix.os == 'windows-latest' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.artifact }} | |
path: target/${{ matrix.target }}/${{ matrix.profile }}/helgobox.pdb | |
- name: Upload macOS debug symbols to artifact | |
if: matrix.os == 'macos-latest' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.artifact }} | |
path: target/${{ matrix.target }}/${{ matrix.profile }}/deps/libhelgobox.dylib.dSYM/ | |
- name: Upload Linux debug symbols to artifact | |
if: startsWith(matrix.os, 'ubuntu-') | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.artifact }} | |
path: target/${{ matrix.target }}/${{ matrix.profile }}/libhelgobox-debug.so | |
create-release: | |
name: Publish release | |
needs: build-release-artifacts | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Get tag name | |
id: get_tag_name | |
run: echo ::set-output name=TAG_NAME::${GITHUB_REF/refs\/tags\//} | |
- name: Create release | |
id: create_release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token | |
with: | |
tag_name: ${{ steps.get_tag_name.outputs.TAG_NAME }} | |
release_name: ${{ steps.get_tag_name.outputs.TAG_NAME }} | |
draft: true | |
prerelease: ${{ contains(github.ref, 'pre') }} | |
- name: Download artifacts from build job | |
uses: actions/download-artifact@v4 | |
# Upload Windows x86_64 artifacts | |
- name: Upload windows-x86_64 release artifact 1 | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./windows-x86_64/helgobox.dll | |
asset_name: helgobox-windows-x86_64.dll | |
asset_content_type: application/octet-stream | |
- name: Upload windows-x86_64 release artifact 2 | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./windows-x86_64/reaper_helgobox.dll | |
asset_name: reaper_helgobox-windows-x86_64.dll | |
asset_content_type: application/octet-stream | |
# Upload Windows i686 artifacts | |
- name: Upload windows-i686 release artifact 1 | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./windows-i686/helgobox.dll | |
asset_name: helgobox-windows-i686.dll | |
asset_content_type: application/octet-stream | |
- name: Upload windows-i686 release artifact 2 | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./windows-i686/reaper_helgobox.dll | |
asset_name: reaper_helgobox-windows-i686.dll | |
asset_content_type: application/octet-stream | |
# Upload macOS x86_64 artifacts | |
- name: Upload macos-x86_64 release artifact 1 | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./macos-x86_64/libhelgobox.dylib | |
asset_name: helgobox-macos-x86_64.vst.dylib | |
asset_content_type: application/octet-stream | |
- name: Upload macos-x86_64 release artifact 2 | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./macos-x86_64/libreaper_helgobox.dylib | |
asset_name: reaper_helgobox-macos-x86_64.dylib | |
asset_content_type: application/octet-stream | |
# Upload macOS aarch64 artifacts | |
- name: Upload macos-aarch64 release artifact 1 | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./macos-aarch64/libhelgobox.dylib | |
asset_name: helgobox-macos-aarch64.vst.dylib | |
asset_content_type: application/octet-stream | |
- name: Upload macos-aarch64 release artifact 2 | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./macos-aarch64/libreaper_helgobox.dylib | |
asset_name: reaper_helgobox-macos-aarch64.dylib | |
asset_content_type: application/octet-stream | |
# Upload Linux x86_64 artifacts | |
- name: Upload linux-x86_64 release artifact | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./linux-x86_64/libhelgobox.so | |
asset_name: helgobox-linux-x86_64.so | |
asset_content_type: application/octet-stream | |
# Upload Linux aarch64 artifacts | |
# - name: Upload linux-aarch64 release artifact | |
# uses: actions/upload-release-asset@v1 | |
# env: | |
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# with: | |
# upload_url: ${{ steps.create_release.outputs.upload_url }} | |
# asset_path: ./linux-aarch64/libhelgobox.so | |
# asset_name: helgobox-linux-aarch64.so | |
# asset_content_type: application/octet-stream | |
# Upload Linux armv7 artifacts | |
# - name: Upload linux-armv7 release artifact | |
# uses: actions/upload-release-asset@v1 | |
# env: | |
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# with: | |
# upload_url: ${{ steps.create_release.outputs.upload_url }} | |
# asset_path: ./linux-armv7/libhelgobox.so | |
# asset_name: helgobox-linux-armv7.so | |
# asset_content_type: application/octet-stream |