Skip to content

v0.0.4

v0.0.4 #24

Workflow file for this run

name: Build & Release Binaries
on:
release:
types: [published]
workflow_dispatch:
inputs:
release_tag:
description: 'Release tag to attach binaries to (e.g. v0.1.0)'
required: true
type: string
skip_linux:
description: 'Skip Linux build'
required: false
type: boolean
default: false
skip_mac:
description: 'Skip macOS build'
required: false
type: boolean
default: false
skip_windows:
description: 'Skip Windows build'
required: false
type: boolean
default: false
permissions:
contents: write
jobs:
build-linux:
name: Build · linux-x64
runs-on: ubuntu-22.04
if: github.event_name != 'workflow_dispatch' || !inputs.skip_linux
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install build tools
run: |
sudo apt-get update -qq
sudo apt-get install -y -qq cmake build-essential pkg-config libopenblas-dev
- name: ccache
uses: hendrikmuhs/[email protected]
with:
create-symlink: true
key: build-linux-ubuntu-22.04
- name: Install CUDA toolkit
uses: Jimver/[email protected]
with:
log-file-suffix: 'ubuntu-22.04.txt'
- name: Install Vulkan SDK
uses: humbletim/[email protected]
with:
version: 1.4.309.0
cache: true
- name: Configure & Build
run: |
./buildall.sh
- name: Smoke test
continue-on-error: true
shell: bash
run: |
BIN="build"
"$BIN/ace-lm" 2>&1 | head -5
"$BIN/ace-synth" 2>&1 | head -5
"$BIN/ace-understand" 2>&1 | head -5
"$BIN/neural-codec" 2>&1 | head -5
"$BIN/quantize" 2>&1 | head -3
"$BIN/mp3-codec" 2>&1 | head -3
- name: Resolve release tag
id: tag
shell: bash
run: |
if [ "${{ github.event_name }}" = "release" ]; then
echo "value=${{ github.event.release.tag_name }}" >> $GITHUB_OUTPUT
else
echo "value=${{ inputs.release_tag }}" >> $GITHUB_OUTPUT
fi
- name: Package binaries
run: |
mkdir -p dist
cp build/ace-* \
build/quantize build/neural-codec build/mp3-codec build/*.so dist/
tar -C dist -czf "acestep-linux-x64.tar.gz" .
- name: Upload to release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release upload "${{ steps.tag.outputs.value }}" \
"acestep-linux-x64.tar.gz" \
--clobber
build-mac:
name: Build · macos-arm64-metal
runs-on: macos-latest
if: github.event_name != 'workflow_dispatch' || !inputs.skip_mac
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: ccache
uses: hendrikmuhs/[email protected]
with:
create-symlink: true
key: build-mac-macos-latest
- name: Configure & Build
run: |
mkdir build
cd build
cmake ..
cmake --build . --config Release -j "$(nproc)"
- name: Smoke test
continue-on-error: true
shell: bash
run: |
BIN="build"
"$BIN/ace-lm" 2>&1 | head -5
"$BIN/ace-synth" 2>&1 | head -5
"$BIN/ace-understand" 2>&1 | head -5
"$BIN/neural-codec" 2>&1 | head -5
"$BIN/quantize" 2>&1 | head -3
"$BIN/mp3-codec" 2>&1 | head -3
- name: Resolve release tag
id: tag
shell: bash
run: |
if [ "${{ github.event_name }}" = "release" ]; then
echo "value=${{ github.event.release.tag_name }}" >> $GITHUB_OUTPUT
else
echo "value=${{ inputs.release_tag }}" >> $GITHUB_OUTPUT
fi
- name: Package binaries
run: |
mkdir -p dist
cd build
for bin in ace-* quantize neural-codec mp3-codec; do
install_name_tool -add_rpath @executable_path "$bin"
done
cp -P ace-* quantize neural-codec mp3-codec libacestep*.a libggml*.dylib ../dist/
cd ..
tar -C dist -czf "acestep-macos-arm64-metal.tar.gz" .
- name: Upload to release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release upload "${{ steps.tag.outputs.value }}" \
"acestep-macos-arm64-metal.tar.gz" \
--clobber
build-windows:
name: Build · windows-x64
runs-on: windows-latest
if: github.event_name != 'workflow_dispatch' || !inputs.skip_windows
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Cache CUDA toolkit
id: cache-cuda
uses: actions/cache@v4
with:
path: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA
key: cuda-12-windows-latest
- name: Install CUDA toolkit
if: steps.cache-cuda.outputs.cache-hit != 'true'
uses: Jimver/[email protected]
with:
log-file-suffix: 'windows-latest.txt'
- name: Install Vulkan SDK
uses: humbletim/[email protected]
with:
version: 1.4.309.0
cache: true
- name: Cache build directory
uses: actions/cache@v4
with:
path: build-msvc
key: build-msvc-${{ github.sha }}
restore-keys: |
build-msvc-
- name: Configure & Build
shell: pwsh
run: |
# Configure — only print errors
cmake -S . -B build-msvc `
-DGGML_CPU_ALL_VARIANTS=ON `
-DGGML_CUDA=ON `
-DGGML_VULKAN=ON `
-DGGML_BACKEND_DL=ON `
--log-level=ERROR 2>&1 | Where-Object { $_ -notmatch '^--' }
# Build — suppress per-file progress, only show warnings/errors
cmake --build build-msvc --config Release -j $env:NUMBER_OF_PROCESSORS `
-- /v:minimal /consoleloggerparameters:ErrorsOnly 2>&1 `
| Where-Object { $_ -match '(error|warning|FAILED|fatal)' -or $_ -eq '' } `
| Select-Object -Last 50
- name: Smoke test
continue-on-error: true
shell: bash
run: |
BIN="build-msvc/Release"
"$BIN/ace-lm.exe" 2>&1 | head -5
"$BIN/ace-synth.exe" 2>&1 | head -5
"$BIN/ace-understand.exe" 2>&1 | head -5
"$BIN/neural-codec.exe" 2>&1 | head -5
"$BIN/quantize.exe" 2>&1 | head -3
"$BIN/mp3-codec.exe" 2>&1 | head -3
- name: Resolve release tag
id: tag
shell: bash
run: |
if [ "${{ github.event_name }}" = "release" ]; then
echo "value=${{ github.event.release.tag_name }}" >> $GITHUB_OUTPUT
else
echo "value=${{ inputs.release_tag }}" >> $GITHUB_OUTPUT
fi
- name: Package binaries
shell: pwsh
run: |
New-Item -ItemType Directory -Path dist | Out-Null
Copy-Item "build-msvc\Release\*.exe" dist\ -ErrorAction SilentlyContinue
Copy-Item "build-msvc\Release\*.dll" dist\ -ErrorAction SilentlyContinue
Compress-Archive -Path dist\* -DestinationPath "acestep-windows-x64.zip"
- name: Upload to release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
shell: pwsh
run: |
gh release upload "${{ steps.tag.outputs.value }}" `
"acestep-windows-x64.zip" `
--clobber