Skip to content

Migrate CI/CD from AppVeyor to GitHub Actions #6

Migrate CI/CD from AppVeyor to GitHub Actions

Migrate CI/CD from AppVeyor to GitHub Actions #6

name: 'Test and Release Yakut'
on: [ push, pull_request ]
# Ensures that only one workflow is running at a time - required for duplicate pushes and repushing a PR
concurrency:
group: ${{ github.workflow }}
cancel-in-progress: true
jobs:
yakut-test:
name: Test Yakut
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-2019-npcap]
python: ['3.8', '3.9', '3.10']
exclude:
- os: windows-2019-npcap
python: 3.8
- os: windows-2019-npcap
python: 3.9
runs-on: ${{ matrix.os }}
steps:
- name: Check out
uses: actions/checkout@v3
- name: Install Python3
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python }}
- name: Log Python version
run: python --version
- name: Install dependencies
run: |
if [ "$RUNNER_OS" == "Linux" ]; then
sudo apt-get --ignore-missing update || true
sudo apt-get install -y linux-*-extra-$(uname -r) ncat
sudo apt-get install -y libsdl2-2.0-0 # For PySDL2. On Windows/macOS the binaries are pulled from PyPI.
sudo apt-get install -y libasound2-dev # For RtMidi.
fi
git submodule update --init --recursive
python -m pip install --upgrade pip setuptools nox
shell: bash
- name: Run build and test
run: |
nox --non-interactive --session test --python ${{ matrix.python }}
nox --non-interactive --session lint
yakut-release:
name: Release Yakut
runs-on: ubuntu-latest
if: contains(github.event.head_commit.message, '#release') || contains(github.ref, '/main')
needs: yakut-test
steps:
- name: Check out
uses: actions/checkout@v3
- name: Create distribution wheel
run: |
git submodule update --init --recursive
python -m pip install --upgrade pip setuptools wheel twine
python setup.py sdist bdist_wheel
- name: Get release version
run: echo "yakut_version=$(cat yakut/VERSION)" >> $GITHUB_ENV
- name: Upload distribution
run: |
python -m twine upload dist/*
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN_YAKUT }}
- name: Push version tag
uses: mathieudutour/[email protected]
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
custom_tag: ${{ env.yakut_version }}
tag_prefix: ''