mirror of
https://github.com/fergalmoran/picard.git
synced 2025-12-30 21:28:21 +00:00
108 lines
3.3 KiB
YAML
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 }}
|