Fix for macOS 13 test #1898
Workflow file for this run
This file contains 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 }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: macos-13 | |
- os: macos-latest | |
- os: windows-latest | |
- os: ubuntu-20.04 | |
- os: ubuntu-22.04 | |
- os: ubuntu-24.04 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11.9" | |
- name: Install Poetry Action | |
uses: snok/[email protected] | |
with: | |
virtualenvs-create: true | |
virtualenvs-in-project: true | |
- name: Load cached venv | |
id: cached-poetry-dependencies | |
uses: actions/cache@v4 | |
with: | |
path: .venv | |
key: venv-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('**/poetry.lock') }} | |
- name: Load cached Whisper models | |
id: cached-whisper-models | |
uses: actions/cache@v4 | |
with: | |
path: | | |
~/Library/Caches/Buzz | |
~/.cache/whisper | |
~/.cache/huggingface | |
~/AppData/Local/Buzz/Buzz/Cache | |
key: whisper-models | |
- uses: FedericoCarboni/[email protected] | |
id: setup-ffmpeg | |
with: | |
ffmpeg-version: release | |
architecture: 'x64' | |
github-token: ${{ github.server_url == 'https://github.com' && github.token || '' }} | |
- name: Install dependencies | |
run: poetry install | |
- name: Install apt dependencies | |
run: | | |
sudo apt-get update | |
if [ "$(lsb_release -rs)" != "24.04" ]; then | |
sudo apt-get install --no-install-recommends libegl1-mesa | |
fi | |
sudo apt-get install --no-install-recommends 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 | |
if: "startsWith(matrix.os, 'ubuntu-')" | |
- name: Test | |
run: | | |
poetry 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 }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: macos-latest | |
- os: windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11.9" | |
- name: Install Poetry Action | |
uses: snok/[email protected] | |
with: | |
virtualenvs-create: true | |
virtualenvs-in-project: true | |
- name: Load cached venv | |
id: cached-poetry-dependencies | |
uses: actions/cache@v4 | |
with: | |
path: .venv | |
key: venv-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('**/poetry.lock') }} | |
- uses: FedericoCarboni/[email protected] | |
id: setup-ffmpeg | |
with: | |
ffmpeg-version: release | |
architecture: 'x64' | |
github-token: ${{ github.server_url == 'https://github.com' && github.token || '' }} | |
- name: Install dependencies | |
run: poetry install | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: "3.0" # Not needed with a .ruby-version file | |
bundler-cache: true # runs 'bundle install' and caches installed gems automatically | |
if: "startsWith(matrix.os, 'ubuntu-')" | |
- name: Install apt dependencies | |
run: | | |
sudo apt-get update | |
if [ "$(lsb_release -rs)" != "24.04" ]; then | |
sudo apt-get install --no-install-recommends libegl1-mesa | |
fi | |
sudo apt-get install --no-install-recommends 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 | |
if: "startsWith(matrix.os, 'ubuntu-')" | |
- name: Install FPM | |
run: gem install fpm | |
if: "startsWith(matrix.os, 'ubuntu-')" | |
- name: Bundle | |
run: | | |
if [ "$RUNNER_OS" == "macOS" ]; then | |
brew install create-dmg | |
# create variables | |
CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12 | |
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db | |
# import certificate and provisioning profile from secrets | |
echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode --output $CERTIFICATE_PATH | |
# create temporary keychain | |
security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH | |
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH | |
security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH | |
# import certificate to keychain | |
security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH | |
security list-keychain -d user -s $KEYCHAIN_PATH | |
# store notarytool credentials | |
xcrun notarytool store-credentials --apple-id "$APPLE_ID" --password "$APPLE_APP_PASSWORD" --team-id "$APPLE_TEAM_ID" notarytool --validate | |
poetry run make bundle_mac | |
elif [ "$RUNNER_OS" == "Windows" ]; then | |
cp -r ./dll_backup ./buzz/ | |
poetry 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 }} | |
path: | | |
dist/Buzz*-windows.exe | |
dist/Buzz*-mac.dmg | |
build_wheels: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
# macos-13 is an intel runner, macos-14 is apple silicon | |
os: [ubuntu-latest, windows-latest, macos-13, macos-14] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Copy Windows DLLs | |
run: | | |
if [ "$RUNNER_OS" == "Windows" ]; then | |
cp -r ./dll_backup ./buzz/ | |
fi | |
shell: bash | |
- name: Build wheels | |
uses: pypa/[email protected] | |
env: | |
CIBW_ARCHS_WINDOWS: "auto" | |
CIBW_ARCHS_MACOS: "universal2" | |
CIBW_ARCHS_LINUX: "auto" | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: cibw-wheels-${{ matrix.os }} | |
path: ./wheelhouse/*.whl | |
publish_pypi: | |
needs: [ build_wheels, test ] | |
runs-on: ubuntu-latest | |
environment: pypi | |
permissions: | |
id-token: write | |
if: startsWith(github.ref, 'refs/tags/') | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
pattern: cibw-* | |
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 }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- 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 }} | |
- name: Install Poetry Action | |
uses: snok/[email protected] | |
with: | |
virtualenvs-create: true | |
virtualenvs-in-project: true | |
- name: Release | |
uses: softprops/action-gh-release@v2 | |
with: | |
files: | | |
Buzz*-unix.tar.gz | |
Buzz*-windows.exe | |
Buzz*-mac.dmg | |
deploy_brew_cask: | |
runs-on: macos-latest | |
needs: [ release ] | |
if: startsWith(github.ref, 'refs/tags/') | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Install Poetry Action | |
uses: snok/[email protected] | |
with: | |
virtualenvs-create: true | |
virtualenvs-in-project: true | |
- name: Upload to Brew | |
run: make upload_brew | |
env: | |
HOMEBREW_GITHUB_API_TOKEN: ${{ secrets.HOMEBREW_GITHUB_API_TOKEN }} |