Skip to content

Upload sdist pip packages #369

Upload sdist pip packages

Upload sdist pip packages #369

name: Static Analysis & Test
on: [push, pull_request]
jobs:
static-analysis:
# We want to run on external PRs, but not on our own internal PRs as they'll
# be run by the push to the branch. Without this if check, checks are
# duplicated since internal PRs match both the push and pull_request events.
# https://github.com/psf/black/blob/f51e53726b39a177355a7917c91c56f390dda7ef/.github/workflows/lint.yml#L7-L12
if:
github.event_name == 'push' ||
github.event.pull_request.head.repo.full_name != github.repository
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: "3.11"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install tox coverage[toml]
- name: python-version
run: python --version
- name: Lint with flake8
run: tox -e flake8
- name: Format with black
run: tox -e black
test:
# We want to run on external PRs, but not on our own internal PRs as they'll
# be run by the push to the branch. Without this if check, checks are
# duplicated since internal PRs match both the push and pull_request events.
if:
github.event_name == 'push' ||
github.event.pull_request.head.repo.full_name != github.repository
strategy:
matrix:
# Test if using native json or pyjson5 for json parsing
json_ver: ['json', 'json5']
os: ['ubuntu-latest', 'windows-latest']
python: ['3.7', '3.8', '3.9', '3.10']
# Works around the depreciation of python 3.6 for ubuntu
# https://github.com/actions/setup-python/issues/544
include:
- json_ver: 'json'
os: 'ubuntu-20.04'
python: '3.6'
- json_ver: 'json5'
os: 'ubuntu-20.04'
python: '3.6'
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install tox
- name: Run Tox
run: |
tox -e begin,py-${{ matrix.json_ver }}
- name: Upload coverage
uses: actions/upload-artifact@v3
with:
name: coverage
path: .coverage.*
retention-days: 1
coverage:
# We want to run on external PRs, but not on our own internal PRs as they'll
# be run by the push to the branch. Without this if check, checks are
# duplicated since internal PRs match both the push and pull_request events.
if:
github.event_name == 'push' ||
github.event.pull_request.head.repo.full_name != github.repository
needs: test
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: "3.x"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install tox coverage[toml]
# Ensure version.py is created so coverage can read it's source
- name: Run begin
run: |
tox -e begin
- name: Download coverage artifacts
uses: actions/download-artifact@v3
with:
name: coverage
# Tox runs `coverage combine` and `coverage xml`
- name: Combine coverage and report
run: |
tox -e end
# Report and write to summary.
python -m coverage report --format=markdown >> $GITHUB_STEP_SUMMARY
# Write html coverage report to upload as an artifact
python -m coverage html
# # Report again and fail if under 100%.
# python -m coverage report --fail-under=100
- name: Upload HTML report if check failed.
uses: actions/upload-artifact@v3
with:
name: html-report
path: htmlcov
# # TODO: If we get 100% coverage we can re-enable this and the
# # `--fail-under` check so pull requests fail if the dev doesn't
# # add tests for new code.
# if: ${{ failure() }}
pip-package:
# We want to run on external PRs, but not on our own internal PRs as they'll
# be run by the push to the branch. Without this if check, checks are
# duplicated since internal PRs match both the push and pull_request events.
if:
github.event_name == 'push' ||
github.event.pull_request.head.repo.full_name != github.repository
# Build and upload pip packages as artifacts so we can inspect them and
# ensure they are correct for actual release
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: "3.x"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install --upgrade build setuptools wheel twine
- name: Build wheel
run: |
python -m build --wheel --sdist
- name: Upload packages.
uses: actions/upload-artifact@v3
with:
name: pip-packages
path: |
dist/hab-*.whl
dist/hab-*.tar.gz