mirror of
https://github.com/vsariola/sointu.git
synced 2025-05-27 19:00:25 -04:00
167 lines
6.2 KiB
YAML
167 lines
6.2 KiB
YAML
name: Binaries
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
- dev
|
|
tags:
|
|
- 'v*'
|
|
pull_request:
|
|
branches:
|
|
- master
|
|
- dev
|
|
|
|
jobs:
|
|
create_release:
|
|
name: Create release
|
|
runs-on: ubuntu-latest
|
|
# Note this. We are going to use that in further jobs.
|
|
outputs:
|
|
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Create release
|
|
id: create_release
|
|
uses: actions/create-release@v1
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
tag_name: ${{ github.ref }}
|
|
release_name: ${{ github.ref_name }}
|
|
body_path: CHANGELOG.md
|
|
draft: false
|
|
prerelease: false
|
|
if: startsWith(github.ref, 'refs/tags/')
|
|
binaries:
|
|
needs: create_release # we need to know the upload URL
|
|
runs-on: ${{ matrix.config.os }}
|
|
strategy:
|
|
matrix:
|
|
config:
|
|
- os: windows-latest
|
|
asmnasm: C:\Users\runneradmin\nasm\nasm
|
|
output: sointu-track.exe
|
|
params: cmd/sointu-track/main.go
|
|
ldflags: -H=windowsgui
|
|
- os: windows-latest
|
|
asmnasm: C:\Users\runneradmin\nasm\nasm
|
|
output: sointu-compile.exe
|
|
params: cmd/sointu-compile/main.go
|
|
- os: windows-latest
|
|
asmnasm: C:\Users\runneradmin\nasm\nasm
|
|
output: sointu-track-native.exe
|
|
params: -tags=native cmd/sointu-track/main.go
|
|
ldflags: -H=windowsgui
|
|
- os: windows-latest
|
|
asmnasm: C:\Users\runneradmin\nasm\nasm
|
|
output: sointu-vsti.dll
|
|
params: -buildmode=c-shared -tags=plugin ./cmd/sointu-vsti/
|
|
- os: windows-latest
|
|
asmnasm: C:\Users\runneradmin\nasm\nasm
|
|
output: sointu-vsti-native.dll
|
|
params: -buildmode=c-shared -tags="plugin,native" ./cmd/sointu-vsti/
|
|
- os: ubuntu-latest
|
|
asmnasm: /home/runner/nasm/nasm
|
|
output: sointu-track
|
|
params: cmd/sointu-track/main.go
|
|
packages: libegl-dev libvulkan-dev libxkbcommon-x11-dev libwayland-dev libasound2-dev libx11-xcb-dev libxcursor-dev libxfixes-dev
|
|
- os: ubuntu-latest
|
|
asmnasm: /home/runner/nasm/nasm
|
|
output: sointu-compile
|
|
params: cmd/sointu-compile/main.go
|
|
packages: libegl-dev libvulkan-dev libxkbcommon-x11-dev libwayland-dev libasound2-dev libx11-xcb-dev libxcursor-dev libxfixes-dev
|
|
- os: ubuntu-latest
|
|
asmnasm: /home/runner/nasm/nasm
|
|
output: sointu-track-native
|
|
params: -tags=native cmd/sointu-track/main.go
|
|
packages: libegl-dev libvulkan-dev libxkbcommon-x11-dev libwayland-dev libasound2-dev libx11-xcb-dev libxcursor-dev libxfixes-dev
|
|
- os: ubuntu-latest
|
|
asmnasm: /home/runner/nasm/nasm
|
|
output: sointu-vsti.so
|
|
params: -buildmode=c-shared -tags=plugin ./cmd/sointu-vsti/
|
|
packages: libegl-dev libvulkan-dev libxkbcommon-x11-dev libwayland-dev libasound2-dev libx11-xcb-dev libxcursor-dev libxfixes-dev
|
|
- os: ubuntu-latest
|
|
asmnasm: /home/runner/nasm/nasm
|
|
output: sointu-vsti-native.so
|
|
params: -buildmode=c-shared -tags="plugin,native" ./cmd/sointu-vsti/
|
|
packages: libegl-dev libvulkan-dev libxkbcommon-x11-dev libwayland-dev libasound2-dev libx11-xcb-dev libxcursor-dev libxfixes-dev
|
|
- os: macos-latest
|
|
asmnasm: /Users/runner/nasm/nasm
|
|
output: sointu-track
|
|
params: cmd/sointu-track/main.go
|
|
- os: macos-latest
|
|
asmnasm: /Users/runner/nasm/nasm
|
|
output: sointu-compile
|
|
params: cmd/sointu-compile/main.go
|
|
- os: macos-12 # this is intel still
|
|
asmnasm: /Users/runner/nasm/nasm
|
|
output: sointu-track-native
|
|
params: -tags=native cmd/sointu-track/main.go
|
|
steps:
|
|
- uses: benjlevesque/short-sha@v3.0
|
|
id: short-sha
|
|
with:
|
|
length: 7
|
|
- uses: lukka/get-cmake@latest
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
- uses: actions/setup-go@v5 # has to be after checkout, see https://medium.com/@s0k0mata/github-actions-and-go-the-new-cache-feature-in-actions-setup-go-v4-and-what-to-watch-out-for-aeea373ed07d
|
|
with:
|
|
go-version: '>=1.21.0'
|
|
- uses: ilammy/setup-nasm@v1.5.1
|
|
- uses: awalsh128/cache-apt-pkgs-action@latest
|
|
with:
|
|
packages: ${{ matrix.config.packages }}
|
|
version: 1.0
|
|
if: runner.os == 'Linux'
|
|
- name: Build library
|
|
env:
|
|
ASM_NASM: ${{ matrix.config.asmnasm }}
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
cmake -GNinja ..
|
|
ninja sointu
|
|
- name: Build binary
|
|
run: |
|
|
go build -ldflags "-X github.com/vsariola/sointu/version.Version=$(git describe) ${{ matrix.config.ldflags}}" -o ${{ matrix.config.output }} ${{ matrix.config.params }}
|
|
- name: Upload binary
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ${{ runner.os }}-${{ steps.short-sha.outputs.sha }}-${{ matrix.config.output }}
|
|
path: ${{ matrix.config.output }}
|
|
upload_release_asset:
|
|
needs: [create_release, binaries]
|
|
runs-on: ubuntu-latest
|
|
if: startsWith(github.ref, 'refs/tags/')
|
|
strategy:
|
|
matrix:
|
|
config:
|
|
- os: Windows
|
|
- os: Linux
|
|
- os: macOS
|
|
steps:
|
|
- uses: benjlevesque/short-sha@v2.2
|
|
id: short-sha
|
|
with:
|
|
length: 7
|
|
- name: Download artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
pattern: ${{ matrix.config.os }}-${{ steps.short-sha.outputs.sha }}-*
|
|
merge-multiple: true
|
|
path: sointu-${{ matrix.config.os }}
|
|
- name: Zip binaries
|
|
run: |
|
|
zip ./sointu-${{ matrix.config.os }}.zip sointu-${{ matrix.config.os }}/*
|
|
- name: Upload release assets
|
|
uses: actions/upload-release-asset@v1
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: ${{ needs.create_release.outputs.upload_url }}
|
|
asset_name: sointu-${{ matrix.config.os }}.zip
|
|
asset_path: ./sointu-${{ matrix.config.os }}.zip
|
|
asset_content_type: application/octet-stream |