Release v0.1.6 #2
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: CI | |
on: | |
push: | |
branches: [master] | |
tags: | |
- "*" | |
pull_request: | |
branches: [master] | |
defaults: | |
run: | |
working-directory: python | |
jobs: | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/setup-python@v2 | |
with: | |
python-version: "3.11" | |
- name: Install Hatch | |
run: pip install --upgrade hatch | |
- name: lint | |
run: hatch run lint | |
test: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [windows-latest, macos-latest, ubuntu-latest] | |
python-version: [3.7, 3.8, 3.9, "3.10", "3.11"] | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v2 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install Hatch | |
run: pip install --upgrade hatch | |
- name: pytest | |
run: hatch run test-CI | |
build: | |
name: Build wheels and sdist | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/setup-python@v2 | |
- name: Install Hatch | |
run: pip install --upgrade hatch | |
- name: Build sdist and wheel | |
run: hatch build | |
- uses: actions/upload-artifact@v2 | |
with: | |
name: artifacts | |
path: python/dist/* # Path must be relative to repo root, not CWD | |
if-no-files-found: error | |
data: | |
name: Normalize, regenerate, and push data | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: "." | |
env: | |
CI_COMMIT_MESSAGE: "chore: normalize data and re-sync" | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/setup-python@v2 | |
- name: Normalize the .csv | |
run: python normalize.py | |
- name: Test that SQL data is up to date - normalized | |
run: python sql/generate_sql.py | |
- name: Commit and push changes | |
# Don't do this on tags | |
if: ${{ !startsWith(github.event.ref, 'refs/tags') }} | |
run: | | |
git config user.name "$(git log -n 1 --pretty=format:%an)" | |
git config user.email "$(git log -n 1 --pretty=format:%ae)" | |
# short-circuit if we have no changes, otherwise attempt to commit and push | |
# should only fail on forks, in which case contributors will need to manually run black, commit, and push | |
git diff-index --quiet HEAD || (echo "Attempting to commit changes" && git commit -am '${{ env.CI_COMMIT_MESSAGE }}' && git push -f) | |
publish: | |
# Don't do this on forks, it will fail because secrets are not available | |
if: github.repository_owner == 'carltonnorthern' | |
needs: [lint, test, build, data] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/download-artifact@v2 | |
with: | |
name: artifacts | |
path: dist | |
- name: Push build artifacts to test PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
skip-existing: true | |
user: __token__ | |
password: ${{ secrets.TEST_PYPI_API_TOKEN }} | |
repository-url: https://test.pypi.org/legacy/ | |
- name: Push build artifacts to prod PyPI | |
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags') | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
skip-existing: true | |
user: __token__ | |
password: ${{ secrets.PYPI_API_TOKEN }} |