From 8fa5c45acc14bf65bd467b4d13941b852c4932fc Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 11 Mar 2026 20:12:39 +0000 Subject: [PATCH 1/5] Initial plan From 2d546164e0ee0d1b6d8949e812107c2c56e963c9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 11 Mar 2026 20:22:45 +0000 Subject: [PATCH 2/5] feat: add multi-platform release workflow, extend CI smoke tests to all tools Co-authored-by: lmangani <1423657+lmangani@users.noreply.github.com> --- .github/workflows/ci-build.yml | 10 +- .github/workflows/release.yml | 187 +++++++++++++++++++++++++++++++++ 2 files changed, 194 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index 0a57c41..ff186bf 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -37,9 +37,13 @@ jobs: - name: Smoke test run: | - ./build/ace-qwen3 --help 2>&1 | head -5 - ./build/dit-vae --help 2>&1 | head -5 - ./build/quantize --help 2>&1 | head -3 + ./build/ace-qwen3 --help 2>&1 | head -5 + ./build/dit-vae --help 2>&1 | head -5 + ./build/ace-understand --help 2>&1 | head -5 + ./build/neural-codec --help 2>&1 | head -5 + # quantize and mp3-codec print usage on bad args (exit 1 swallowed by pipe) + ./build/quantize --help 2>&1 | head -3 + ./build/mp3-codec 2>&1 | head -3 lint: name: Lint & Static Analysis diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..ca0f199 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,187 @@ +# Build and publish portable release binaries for every supported platform. +# Runs automatically when a GitHub Release is published, and can also be +# triggered manually via workflow_dispatch (provide the existing release tag). +name: Release Binaries + +on: + release: + types: [published] + workflow_dispatch: + inputs: + release_tag: + description: 'Existing release tag to attach binaries to (e.g. v0.1.0)' + required: true + type: string + +# Allow uploading assets to releases +permissions: + contents: write + +jobs: + build: + name: Build · ${{ matrix.name }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + include: + # ──────────── Linux ──────────────────────────────────────────── + - name: linux-x64-cpu-blas + os: ubuntu-22.04 + cmake_flags: -DGGML_BLAS=ON + apt_extra: pkg-config libopenblas-dev + + - name: linux-x64-cuda + os: ubuntu-22.04 + cmake_flags: -DGGML_CUDA=ON + install_cuda: true + + - name: linux-x64-vulkan + os: ubuntu-22.04 + cmake_flags: -DGGML_VULKAN=ON + apt_extra: libvulkan-dev glslang-tools + + # ──────────── macOS ──────────────────────────────────────────── + # macos-latest = arm64 (M-series); Metal + Accelerate auto-enabled + - name: macos-arm64-metal + os: macos-latest + + # macos-13 = x86_64 (Intel); Metal + Accelerate auto-enabled + - name: macos-x86_64-metal + os: macos-13 + + # ──────────── Windows ────────────────────────────────────────── + - name: windows-x64-cpu + os: windows-latest + + # CUDA 12.6.3 is pre-installed on windows-latest + - name: windows-x64-cuda + os: windows-latest + cmake_flags: -DGGML_CUDA=ON + + - name: windows-x64-vulkan + os: windows-latest + cmake_flags: -DGGML_VULKAN=ON + install_vulkan_sdk: true + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + + # ── Linux: base build tools & optional apt packages ─────────────── + - name: Install build tools (Linux) + if: runner.os == 'Linux' + run: | + sudo apt-get update -qq + sudo apt-get install -y -qq cmake build-essential ${{ matrix.apt_extra || '' }} + + # ── Linux: CUDA toolkit from NVIDIA apt repository ──────────────── + - name: Install CUDA toolkit (Linux) + if: matrix.install_cuda == true + run: | + wget -q https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb + sudo dpkg -i cuda-keyring_1.1-1_all.deb + sudo apt-get update -qq + sudo apt-get install -y -qq cuda-toolkit-12-8 + echo "/usr/local/cuda/bin" >> $GITHUB_PATH + + # ── Windows: Vulkan SDK via Chocolatey ──────────────────────────── + - name: Install Vulkan SDK (Windows) + if: matrix.install_vulkan_sdk == true + shell: pwsh + run: | + choco install vulkan-sdk --yes --no-progress + # Reload env so VULKAN_SDK is visible in subsequent steps + $sdkRoot = (Get-ChildItem 'C:\VulkanSDK' | Sort-Object Name | Select-Object -Last 1).FullName + "VULKAN_SDK=$sdkRoot" | Out-File -FilePath $env:GITHUB_ENV -Append + "$sdkRoot\Bin" | Out-File -FilePath $env:GITHUB_PATH -Append + + # ── Configure & Build ───────────────────────────────────────────── + - name: Configure & Build (Linux / macOS) + if: runner.os != 'Windows' + run: | + mkdir build && cd build + cmake .. ${{ matrix.cmake_flags || '' }} + CORES=$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo 4) + cmake --build . --config Release -j"$CORES" + + - name: Configure & Build (Windows) + if: runner.os == 'Windows' + shell: pwsh + run: | + New-Item -ItemType Directory -Path build | Out-Null + Set-Location build + cmake .. ${{ matrix.cmake_flags || '' }} + cmake --build . --config Release -j $env:NUMBER_OF_PROCESSORS + + # ── Smoke test: verify binaries run (no GPU / model required) ───── + - name: Smoke test + shell: bash + run: | + if [ "$RUNNER_OS" = "Windows" ]; then + BIN="build/Release" + EXT=".exe" + else + BIN="build" + EXT="" + fi + "$BIN/ace-qwen3$EXT" --help 2>&1 | head -5 + "$BIN/dit-vae$EXT" --help 2>&1 | head -5 + "$BIN/ace-understand$EXT" --help 2>&1 | head -5 + "$BIN/neural-codec$EXT" --help 2>&1 | head -5 + # quantize and mp3-codec print usage on bad args (exit 1 swallowed by pipe) + "$BIN/quantize$EXT" --help 2>&1 | head -3 + "$BIN/mp3-codec$EXT" 2>&1 | head -3 + + # ── Determine which release tag to upload to ────────────────────── + - 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 + + # ── Package binaries ────────────────────────────────────────────── + - name: Package binaries (Linux / macOS) + if: runner.os != 'Windows' + run: | + mkdir -p dist + cp build/ace-qwen3 build/dit-vae build/ace-understand \ + build/quantize build/neural-codec build/mp3-codec dist/ + tar -C dist -czf "acestep-${{ matrix.name }}.tar.gz" . + + - name: Package binaries (Windows) + if: runner.os == 'Windows' + shell: pwsh + run: | + New-Item -ItemType Directory -Path dist | Out-Null + $bins = @('ace-qwen3','dit-vae','ace-understand','quantize','neural-codec','mp3-codec') + foreach ($b in $bins) { + Copy-Item "build\Release\$b.exe" dist\ + } + Compress-Archive -Path dist\* -DestinationPath "acestep-${{ matrix.name }}.zip" + + # ── Upload archive to the GitHub release ────────────────────────── + - name: Upload to release (Linux / macOS) + if: runner.os != 'Windows' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh release upload "${{ steps.tag.outputs.value }}" \ + "acestep-${{ matrix.name }}.tar.gz" \ + --clobber + + - name: Upload to release (Windows) + if: runner.os == 'Windows' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + shell: pwsh + run: | + gh release upload "${{ steps.tag.outputs.value }}" ` + "acestep-${{ matrix.name }}.zip" ` + --clobber From 33e1ba23109cab165e66aaaf28696d29ec08405e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 11 Mar 2026 20:27:49 +0000 Subject: [PATCH 3/5] feat: remove macos-13 Intel target, keep only arm64 Metal Co-authored-by: lmangani <1423657+lmangani@users.noreply.github.com> --- .github/workflows/release.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ca0f199..79f3459 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -46,10 +46,6 @@ jobs: - name: macos-arm64-metal os: macos-latest - # macos-13 = x86_64 (Intel); Metal + Accelerate auto-enabled - - name: macos-x86_64-metal - os: macos-13 - # ──────────── Windows ────────────────────────────────────────── - name: windows-x64-cpu os: windows-latest From 680574ba0d0ebc3488b36a066465cbf44fe978d4 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Wed, 11 Mar 2026 21:46:08 +0100 Subject: [PATCH 4/5] Modify release.yml for release_tag description and jobs Updated the description for the release_tag input and commented out the windows-x64-cpu job. --- .github/workflows/release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 79f3459..22f4ad7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,7 +9,7 @@ on: workflow_dispatch: inputs: release_tag: - description: 'Existing release tag to attach binaries to (e.g. v0.1.0)' + description: 'Release tag to attach binaries to (e.g. v0.1.0)' required: true type: string @@ -47,8 +47,8 @@ jobs: os: macos-latest # ──────────── Windows ────────────────────────────────────────── - - name: windows-x64-cpu - os: windows-latest + # - name: windows-x64-cpu + # os: windows-latest # CUDA 12.6.3 is pre-installed on windows-latest - name: windows-x64-cuda From a8ec7dc53207186f9b405c5e4e0dbc78d4734952 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Wed, 11 Mar 2026 21:48:21 +0100 Subject: [PATCH 5/5] Update ci-build.yml --- .github/workflows/ci-build.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index ff186bf..30ff838 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -41,9 +41,8 @@ jobs: ./build/dit-vae --help 2>&1 | head -5 ./build/ace-understand --help 2>&1 | head -5 ./build/neural-codec --help 2>&1 | head -5 - # quantize and mp3-codec print usage on bad args (exit 1 swallowed by pipe) - ./build/quantize --help 2>&1 | head -3 - ./build/mp3-codec 2>&1 | head -3 + #./build/quantize --help 2>&1 | head -3 + #./build/mp3-codec 2>&1 | head -3 lint: name: Lint & Static Analysis