Files
picard/.github/workflows/pypi-release.yml

108 lines
3.3 KiB
YAML

name: Package for PyPI
on: [push]
jobs:
pypi-sdist:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v1
with:
python-version: 3.8
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install --upgrade -r requirements.txt
- name: Run tests
run: |
python setup.py test
- name: Build Python source distribution
run: |
python setup.py clean sdist
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: picard-sdist
path: dist/*
- name: Prepare GPG signing key
run: |
if [ -n "$CODESIGN_PGP_URL" ] && [ -n "$AWS_ACCESS_KEY_ID" ]; then
pip3 install awscli
aws s3 cp "$CODESIGN_PGP_URL" signkey.asc.enc
openssl enc -d -aes-256-cbc -pbkdf2 -iter 100000 -in signkey.asc.enc -out signkey.asc -k "$CODESIGN_PGP_PASSWORD"
gpg --import signkey.asc
rm signkey.asc*
echo "CODESIGN=1" >> $GITHUB_ENV
else
echo "::warning::No signing key available, skipping code signing."
fi
env:
AWS_DEFAULT_REGION: eu-central-1
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
CODESIGN_PGP_URL: ${{ secrets.CODESIGN_PGP_URL }}
CODESIGN_PGP_PASSWORD: ${{ secrets.CODESIGN_PGP_PASSWORD }}
- name: Publish Python distribution to PyPI
if: startsWith(github.ref, 'refs/tags/')
run: |
pip install --upgrade twine
if [ "$CODESIGN" = '1' ]; then
twine upload --non-interactive --sign --identity "$SIGN_IDENTITY" dist/*
else
twine upload --non-interactive dist/*
fi
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_UPLOAD_TOKEN }}
SIGN_IDENTITY: picard@metabrainz.org
- name: Cleanup
if: env.CODESIGN
run: |
rm -rf "$HOME/.gnupg"
pypi-bdist:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-10.15, windows-2019]
python-version: [3.6, 3.7, 3.8, 3.9]
steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v1
with:
python-version: ${{ matrix.python-version }}
- name: Install gettext (macOS)
if: runner.os == 'macOS'
run: |
brew install gettext
brew link gettext --force
echo "/usr/local/opt/gettext/bin" >> $GITHUB_PATH
- name: Install dependencies
run: |
python -m pip install --upgrade pip wheel
pip install --upgrade -r requirements.txt
- name: Run tests
run: |
python setup.py test
- name: Build Python binary distribution
run: |
python setup.py clean bdist_wheel
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: picard-bdist-${{ runner.os }}
path: dist/*.whl
- name: Publish Python distribution to PyPI
if: startsWith(github.ref, 'refs/tags/')
run: |
pip install --upgrade twine>=3.0
twine upload --non-interactive dist/*.whl
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_UPLOAD_TOKEN }}