Add publish PyPI step #1308
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-latest | |
- os: windows-latest | |
- os: ubuntu-20.04 | |
- os: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10.7" | |
- 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@v3 | |
with: | |
path: .venv | |
key: venv-${{ runner.os }}-${{ hashFiles('**/poetry.lock') }}-2 | |
- name: Load cached Whisper models | |
id: cached-whisper-models | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/Library/Caches/Buzz | |
~/.cache/whisper | |
~/.cache/huggingface | |
~/AppData/Local/Buzz/Buzz/Cache | |
key: whisper-models-${{ runner.os }} | |
- uses: FedericoCarboni/setup-ffmpeg@v1 | |
id: setup-ffmpeg | |
with: | |
token: ${{ secrets.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@v3 | |
with: | |
flags: ${{ runner.os }} | |
build: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: macos-latest | |
- os: windows-latest | |
- os: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10.7" | |
- 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@v3 | |
with: | |
path: .venv | |
key: venv-${{ runner.os }}-${{ hashFiles('**/poetry.lock') }}-2 | |
- uses: FedericoCarboni/setup-ffmpeg@v1 | |
id: setup-ffmpeg | |
with: | |
token: ${{ secrets.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 | |
elif [ "$RUNNER_OS" == "Linux" ]; then | |
poetry run make bundle_linux | |
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@v3 | |
with: | |
name: Buzz-${{ runner.os }} | |
path: | | |
dist/Buzz*-windows.exe | |
dist/Buzz*-mac.dmg | |
dist/buzz-*.deb | |
benchmark: | |
runs-on: ${{ matrix.os }} | |
if: github.ref == 'refs/heads/main' | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: macos-latest | |
- os: windows-latest | |
- os: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10.7" | |
- 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@v3 | |
with: | |
path: .venv | |
key: venv-${{ runner.os }}-${{ hashFiles('**/poetry.lock') }}-2 | |
- name: Load cached Whisper models | |
id: cached-whisper-models | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/Library/Caches/Buzz | |
~/.cache/whisper | |
~/.cache/huggingface | |
~/AppData/Local/Buzz/Buzz/Cache | |
key: whisper-models-${{ runner.os }} | |
- uses: FedericoCarboni/setup-ffmpeg@v1 | |
id: setup-ffmpeg | |
with: | |
token: ${{ secrets.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 | |
if: "startsWith(matrix.os, 'ubuntu-')" | |
- name: Test | |
run: | | |
poetry run make benchmarks | |
shell: bash | |
- name: Store benchmark results | |
uses: benchmark-action/github-action-benchmark@v1 | |
with: | |
name: ${{ runner.os }} | |
tool: "pytest" | |
output-file-path: benchmarks.json | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
comment-on-alert: true | |
summary-always: true | |
auto-push: true | |
publish-pypi: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: macos-latest | |
- os: windows-latest | |
- os: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10.7" | |
- name: Install Poetry Action | |
uses: snok/[email protected] | |
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 | |
- os: ubuntu-20.04 | |
needs: [ build, test ] | |
if: startsWith(github.ref, 'refs/tags/') | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- uses: actions/download-artifact@v3 | |
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@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@v3 | |
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 }} |