Signals and ATP v2 #280
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: Build | |
on: | |
push: | |
branches: | |
- main | |
tags: | |
- '*' | |
pull_request: | |
permissions: | |
# https://github.community/t/permissions-nesecary-to-comment-on-a-pr/179047/5 | |
pull-requests: write | |
jobs: | |
build: | |
name: Build | |
strategy: | |
matrix: | |
python-version: [ '3.9', '3.10', 'pypy3.9' ] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v3 | |
- name: Update version number | |
if: startsWith(github.ref, 'refs/tags/') | |
run: sed -i -e "s/0.0.0/${GITHUB_REF##*/}/" pyproject.toml | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Check isort, black, and flake8 | |
run: | | |
pip install black flake8 isort | |
isort --profile black . | |
black . | |
flake8 . | |
- name: Install Python Poetry | |
uses: snok/[email protected] | |
- name: Install project dependencies | |
run: poetry install --no-interaction --with dev | |
- name: Run tests with coverage | |
run: | | |
# Run the unit tests | |
poetry run python3 -m coverage run -a -m unittest discover -v src | |
# Run the example plugin | |
poetry run python3 -m coverage run -a ./example_plugin.py -f example.yaml | |
# Test the example plugin | |
poetry run python3 -m coverage run -a ./test_example_plugin.py | |
# Generate the coverage HTML report | |
poetry run python3 -m coverage html | |
- name: Publish coverage report to job summary | |
# publishing only once | |
if: ${{ matrix.python-version == '3.9'}} | |
run: | | |
poetry run html2text --ignore-images --ignore-links -b 0 htmlcov/index.html >> $GITHUB_STEP_SUMMARY | |
- name: Generate documentation | |
run: | | |
poetry run sphinx-apidoc -o docs/ -f -a -e src/ --doc-project "Python SDK for Arcaflow" | |
poetry run make -C docs html | |
- name: Build | |
run: poetry build | |
- name: Upload dist artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: dist | |
path: dist | |
if-no-files-found: error | |
- name: Upload coverage HTML artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: coverage | |
path: htmlcov | |
if-no-files-found: error | |
publish: | |
name: Publish | |
runs-on: ubuntu-latest | |
needs: | |
- build | |
if: startsWith(github.ref, 'refs/tags/') | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v3 | |
- name: Download artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: dist | |
path: dist | |
- name: Install twine | |
run: pip install -U twine | |
- name: Publish | |
env: | |
TWINE_USERNAME: __token__ | |
TWINE_PASSWORD: ${{secrets.PYPI_TOKEN}} | |
TWINE_NON_INTERACTIVE: true | |
run: twine upload dist/* |