Upgrade to 1.0.0 (#825) #1763
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/install-poetry@v1.3.1 | |
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/setup-ffmpeg@v3.1 | |
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/install-poetry@v1.3.1 | |
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/setup-ffmpeg@v3.1 | |
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 | |
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 | |
dist/buzz-*.deb | |
publish-pypi: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: macos-latest | |
- os: windows-latest | |
- os: ubuntu-20.04 | |
needs: [ build, test ] | |
if: startsWith(github.ref, 'refs/tags/') | |
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/install-poetry@v1.3.1 | |
with: | |
virtualenvs-create: true | |
virtualenvs-in-project: true | |
- name: Publish to PyPI | |
run: | | |
poetry config pypi-token.pypi ${{ secrets.PYPI_TOKEN }} | |
poetry publish --build --skip-existing | |
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/install-poetry@v1.3.1 | |
with: | |
virtualenvs-create: true | |
virtualenvs-in-project: true | |
- name: Release | |
uses: softprops/action-gh-release@v1 | |
with: | |
files: | | |
buzz-*.deb | |
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/install-poetry@v1.3.1 | |
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 }} |