mirror of
https://github.com/chidiwilliams/buzz.git
synced 2024-06-07 10:42:12 +02:00
271 lines
8.1 KiB
YAML
271 lines
8.1 KiB
YAML
---
|
|
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
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: recursive
|
|
|
|
- uses: actions/setup-python@v5
|
|
with:
|
|
python-version: "3.10.11"
|
|
|
|
- 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 }}-${{ hashFiles('**/poetry.lock') }}-2
|
|
|
|
- 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-${{ runner.os }}
|
|
|
|
- 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
|
|
sudo apt-get install --no-install-recommends libyaml-dev libegl1-mesa 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.10.11"
|
|
|
|
- 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 }}-${{ hashFiles('**/poetry.lock') }}-2
|
|
|
|
- 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
|
|
sudo apt-get install --no-install-recommends libyaml-dev libegl1-mesa 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.10.11"
|
|
- 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 }}
|