Initial release
This commit is contained in:
Vendored
+263
@@ -0,0 +1,263 @@
|
||||
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/ccache-action@v1.2
|
||||
with:
|
||||
create-symlink: true
|
||||
key: build-linux-ubuntu-22.04
|
||||
|
||||
- name: Install CUDA toolkit
|
||||
uses: Jimver/cuda-toolkit@v0.2.30
|
||||
with:
|
||||
log-file-suffix: 'ubuntu-22.04.txt'
|
||||
|
||||
- name: Install Vulkan SDK
|
||||
uses: humbletim/install-vulkan-sdk@v1.2
|
||||
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/ccache-action@v1.2
|
||||
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/cuda-toolkit@v0.2.30
|
||||
with:
|
||||
log-file-suffix: 'windows-latest.txt'
|
||||
|
||||
- name: Install Vulkan SDK
|
||||
uses: humbletim/install-vulkan-sdk@v1.2
|
||||
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
|
||||
Reference in New Issue
Block a user