Upload sdist pip packages #363
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.x" | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install tox | |
- 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 |