Skip to content

Bump

Bump #4

Workflow file for this run

name: CI
on:
pull_request:
branches:
- master
push:
branches:
- master
tags:
- "*"
permissions:
contents: read
jobs:
test:
name: Test Python ${{ matrix.python-version }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version:
- "3.11"
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: pip
cache-dependency-path: setup.py
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install awscli
python -m pip install -e '.[test]'
- name: Check AWS credentials
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
run: |
if [ -z "$AWS_ACCESS_KEY_ID" ] || [ -z "$AWS_SECRET_ACCESS_KEY" ]; then
echo "AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY secrets are required to fetch test files." >&2
exit 1
fi
- name: Fetch test files
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: us-east-1
run: aws s3 cp s3://educreations-secrets/python-iap/ tests/. --recursive
- name: Run flake8
run: python -m flake8
- name: Run pytest
run: python -m pytest
publish:
name: Publish to PyPI
runs-on: ubuntu-latest
needs: test
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: pip
cache-dependency-path: setup.py
- name: Check release tag
id: release_tag
run: |
if [[ "$GITHUB_REF_NAME" =~ ^[0-9]+(\.[0-9]+)*$ ]]; then
echo "publish=true" >> "$GITHUB_OUTPUT"
else
echo "publish=false" >> "$GITHUB_OUTPUT"
echo "Tag $GITHUB_REF_NAME is not a version tag; skipping publish."
fi
- name: Check PyPI password
if: steps.release_tag.outputs.publish == 'true'
env:
PYPI_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
run: |
if [ -z "$PYPI_PASSWORD" ]; then
echo "PYPI_PASSWORD secret is required to publish to PyPI." >&2
exit 1
fi
- name: Build package
if: steps.release_tag.outputs.publish == 'true'
run: |
python -m pip install --upgrade pip setuptools wheel
python setup.py sdist bdist_wheel
- name: Publish package
if: steps.release_tag.outputs.publish == 'true'
env:
PYPI_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
run: |
python -m pip install --upgrade twine
python -m twine upload --username streeter --password "$PYPI_PASSWORD" dist/*