Fix for GPU setting on macs #2680
Workflow file for this run
This file contains hidden or 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
| name: CI | |
| on: | |
| push: | |
| branches: | |
| - main | |
| tags: | |
| - "*" | |
| pull_request: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| test: | |
| runs-on: ${{ matrix.os }} | |
| env: | |
| BUZZ_DISABLE_TELEMETRY: true | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: macos-15-intel | |
| - os: macos-latest | |
| - os: windows-latest | |
| - os: ubuntu-22.04 | |
| - os: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| # Should be removed with next update to whisper.cpp | |
| - name: Downgrade Xcode | |
| uses: maxim-lobanov/setup-xcode@v1 | |
| with: | |
| xcode-version: '16.0.0' | |
| if: matrix.os == 'macos-latest' | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Install Vulkan SDK | |
| if: "startsWith(matrix.os, 'ubuntu-') || matrix.os == 'windows-latest'" | |
| uses: humbletim/[email protected] | |
| with: | |
| version: 1.4.309.0 | |
| cache: true | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v6 | |
| - name: Load cached venv | |
| id: cached-uv-dependencies | |
| uses: actions/cache@v4 | |
| with: | |
| path: .venv | |
| key: venv-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('**/uv.lock') }} | |
| - uses: AnimMouse/setup-ffmpeg@v1 | |
| id: setup-ffmpeg | |
| with: | |
| version: ${{ matrix.os == 'macos-15-intel' && '7.1.1' || matrix.os == 'macos-latest' && '80' || '8.0' }} | |
| - name: Test ffmpeg | |
| run: ffmpeg -i ./testdata/audio-long.mp3 ./testdata/audio-long.wav | |
| - name: Add msbuild to PATH | |
| uses: microsoft/setup-msbuild@v2 | |
| if: runner.os == 'Windows' | |
| - name: Install apt dependencies | |
| run: | | |
| sudo apt-get update | |
| if [ "$(lsb_release -rs)" == "22.04" ]; then | |
| sudo apt-get install libegl1-mesa | |
| # Add ubuntu-toolchain-r PPA for newer libstdc++6 with GLIBCXX_3.4.32 | |
| sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y | |
| sudo apt-get update | |
| sudo apt-get install -y gcc-13 g++-13 libstdc++-13-dev | |
| fi | |
| sudo apt-get install libyaml-dev libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xinerama0 libxcb-shape0 libxcb-cursor0 libportaudio2 gettext libpulse0 libgl1-mesa-dev libvulkan-dev ccache | |
| if: "startsWith(matrix.os, 'ubuntu-')" | |
| - name: Install dependencies | |
| run: uv sync | |
| - name: Test | |
| run: | | |
| uv run make test | |
| shell: bash | |
| - name: Upload coverage reports to Codecov with GitHub Action | |
| uses: codecov/codecov-action@v4 | |
| with: | |
| flags: ${{ runner.os }} | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| build: | |
| runs-on: ${{ matrix.os }} | |
| timeout-minutes: 60 | |
| env: | |
| BUZZ_DISABLE_TELEMETRY: true | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: macos-15-intel | |
| - os: macos-latest | |
| - os: windows-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| # Should be removed with next update to whisper.cpp | |
| - name: Downgrade Xcode | |
| uses: maxim-lobanov/setup-xcode@v1 | |
| with: | |
| xcode-version: '16.0.0' | |
| if: matrix.os == 'macos-latest' | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Install Vulkan SDK | |
| if: "startsWith(matrix.os, 'ubuntu-') || matrix.os == 'windows-latest'" | |
| uses: humbletim/[email protected] | |
| with: | |
| version: 1.4.309.0 | |
| cache: true | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v6 | |
| - name: Load cached venv | |
| id: cached-uv-dependencies | |
| uses: actions/cache@v4 | |
| with: | |
| path: .venv | |
| key: venv-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('**/uv.lock') }} | |
| - name: Install Inno Setup on Windows | |
| uses: crazy-max/ghaction-chocolatey@v3 | |
| with: | |
| args: install innosetup --yes | |
| if: runner.os == 'Windows' | |
| - name: Install apt dependencies | |
| run: | | |
| sudo apt-get update | |
| if [ "$(lsb_release -rs)" == "22.04" ]; then | |
| sudo apt-get install libegl1-mesa | |
| # Add ubuntu-toolchain-r PPA for newer libstdc++6 with GLIBCXX_3.4.32 | |
| sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y | |
| sudo apt-get update | |
| sudo apt-get install -y gcc-13 g++-13 libstdc++-13-dev | |
| fi | |
| sudo apt-get install libyaml-dev libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xinerama0 libxcb-shape0 libxcb-cursor0 libportaudio2 gettext libpulse0 libgl1-mesa-dev libvulkan-dev ccache | |
| if: "startsWith(matrix.os, 'ubuntu-')" | |
| - name: Install dependencies | |
| run: uv sync | |
| - uses: AnimMouse/[email protected] | |
| id: setup-ffmpeg | |
| with: | |
| version: ${{ matrix.os == 'macos-15-intel' && '7.1.1' || matrix.os == 'macos-latest' && '71' || '7.1' }} | |
| - name: Install MSVC for Windows | |
| run: | | |
| if [ "$RUNNER_OS" == "Windows" ]; then | |
| uv add msvc-runtime | |
| uv cache clean | |
| uv run pip cache purge | |
| fi | |
| shell: bash | |
| - name: Add msbuild to PATH | |
| uses: microsoft/setup-msbuild@v2 | |
| if: runner.os == 'Windows' | |
| - uses: ruby/setup-ruby@v1 | |
| with: | |
| ruby-version: "3.0" | |
| bundler-cache: true | |
| if: "startsWith(matrix.os, 'ubuntu-')" | |
| - name: Install FPM | |
| run: gem install fpm | |
| if: "startsWith(matrix.os, 'ubuntu-')" | |
| - name: Clear space on Windows | |
| if: runner.os == 'Windows' | |
| run: | | |
| rm 'C:\Android\android-sdk\' -r -force | |
| rm 'C:\Program Files (x86)\Google\' -r -force | |
| rm 'C:\tools\kotlinc\' -r -force | |
| rm 'C:\tools\php\' -r -force | |
| rm 'C:\selenium\' -r -force | |
| shell: pwsh | |
| - name: Bundle | |
| run: | | |
| if [ "$RUNNER_OS" == "macOS" ]; then | |
| brew install create-dmg | |
| sudo pkill -9 XProtect >/dev/null || true; | |
| while pgrep XProtect; do sleep 3; done; | |
| CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12 | |
| KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db | |
| echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode -o $CERTIFICATE_PATH | |
| security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH | |
| security set-keychain-settings -lut 21600 $KEYCHAIN_PATH | |
| security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH | |
| security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH | |
| security list-keychain -d user -s $KEYCHAIN_PATH | |
| xcrun notarytool store-credentials --apple-id "$APPLE_ID" --password "$APPLE_APP_PASSWORD" --team-id "$APPLE_TEAM_ID" notarytool --validate | |
| uv run make bundle_mac | |
| elif [ "$RUNNER_OS" == "Windows" ]; then | |
| cp -r ./dll_backup ./buzz/ | |
| uv run make bundle_windows | |
| fi | |
| env: | |
| BUZZ_CODESIGN_IDENTITY: ${{ secrets.BUZZ_CODESIGN_IDENTITY }} | |
| BUZZ_KEYCHAIN_NOTARY_PROFILE: ${{ secrets.BUZZ_KEYCHAIN_NOTARY_PROFILE }} | |
| BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }} | |
| KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} | |
| P12_PASSWORD: ${{ secrets.P12_PASSWORD }} | |
| APPLE_ID: ${{ secrets.APPLE_ID }} | |
| APPLE_APP_PASSWORD: ${{ secrets.APPLE_APP_PASSWORD }} | |
| APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} | |
| shell: bash | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: Buzz-${{ runner.os }}-${{ runner.arch }} | |
| path: | | |
| dist/Buzz*-windows.exe | |
| dist/Buzz*-windows-*.bin | |
| dist/Buzz*-mac.dmg | |
| build_wheels: | |
| runs-on: ${{ matrix.os }} | |
| env: | |
| BUZZ_DISABLE_TELEMETRY: true | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, windows-latest, macos-15-intel, macos-latest] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| # Should be removed with next update to whisper.cpp | |
| - name: Downgrade Xcode | |
| uses: maxim-lobanov/setup-xcode@v1 | |
| with: | |
| xcode-version: '16.0.0' | |
| if: matrix.os == 'macos-latest' | |
| - name: Install Vulkan SDK | |
| if: "startsWith(matrix.os, 'ubuntu-') || matrix.os == 'windows-latest'" | |
| uses: humbletim/[email protected] | |
| with: | |
| version: 1.4.309.0 | |
| cache: true | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v6 | |
| - name: Build wheels | |
| run: uv build --wheel | |
| shell: bash | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: buzz-wheel-${{ runner.os }}-${{ runner.arch }} | |
| path: ./dist/*.whl | |
| publish_pypi: | |
| needs: [build_wheels, test] | |
| runs-on: ubuntu-latest | |
| env: | |
| BUZZ_DISABLE_TELEMETRY: true | |
| environment: pypi | |
| permissions: | |
| id-token: write | |
| if: startsWith(github.ref, 'refs/tags/') | |
| steps: | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| pattern: buzz-wheel-* | |
| path: dist | |
| merge-multiple: true | |
| - uses: pypa/gh-action-pypi-publish@release/v1 | |
| with: | |
| verbose: true | |
| password: ${{ secrets.PYPI_TOKEN }} | |
| release: | |
| runs-on: ${{ matrix.os }} | |
| env: | |
| BUZZ_DISABLE_TELEMETRY: true | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: macos-15-intel | |
| - os: macos-latest | |
| - os: windows-latest | |
| needs: [build, test] | |
| if: startsWith(github.ref, 'refs/tags/') | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: Buzz-${{ runner.os }}-${{ runner.arch }} | |
| - name: Rename .dmg files | |
| if: runner.os == 'macOS' | |
| run: | | |
| for file in Buzz*.dmg; do | |
| mv "$file" "${file%.dmg}-${{ runner.arch }}.dmg" | |
| done | |
| - name: Release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| files: | | |
| Buzz*-unix.tar.gz | |
| Buzz*.exe | |
| Buzz*.bin | |
| Buzz*.dmg | |
| # Brew Cask deployment fails and the app is deprecated on Brew. | |
| # deploy_brew_cask: | |
| # runs-on: macos-latest | |
| # env: | |
| # BUZZ_DISABLE_TELEMETRY: true | |
| # needs: [release] | |
| # if: startsWith(github.ref, 'refs/tags/') | |
| # steps: | |
| # - uses: actions/checkout@v4 | |
| # with: | |
| # submodules: recursive | |
| # | |
| # # Should be removed with next update to whisper.cpp | |
| # - name: Downgrade Xcode | |
| # uses: maxim-lobanov/setup-xcode@v1 | |
| # with: | |
| # xcode-version: '16.0.0' | |
| # if: matrix.os == 'macos-latest' | |
| # | |
| # - name: Install uv | |
| # uses: astral-sh/setup-uv@v6 | |
| # | |
| # - name: Set up Python | |
| # uses: actions/setup-python@v5 | |
| # with: | |
| # python-version: "3.12" | |
| # | |
| # - name: Install dependencies | |
| # run: uv sync | |
| # | |
| # - name: Upload to Brew | |
| # run: uv run make upload_brew | |
| # env: | |
| # HOMEBREW_GITHUB_API_TOKEN: ${{ secrets.HOMEBREW_GITHUB_API_TOKEN }} |