--- /dev/null
+name: Build Docs
+on:
+ push:
+ pull_request:
+ types: [opened, synchronize]
+jobs:
+ build-docs:
+ runs-on: ubuntu-20.04
+ steps:
+ - name: Dump GitHub context
+ env:
+ GITHUB_CONTEXT: ${{ toJson(github) }}
+ run: echo "$GITHUB_CONTEXT"
+ - uses: actions/checkout@v2
+ - name: Set up Python
+ uses: actions/setup-python@v2
+ with:
+ python-version: "3.7"
+ - uses: actions/cache@v2
+ id: cache
+ with:
+ path: ${{ env.pythonLocation }}
+ key: ${{ runner.os }}-python-${{ env.pythonLocation }}-${{ hashFiles('pyproject.toml') }}-docs
+ - name: Install poetry
+ if: steps.cache.outputs.cache-hit != 'true'
+ run: |
+ python -m pip install --upgrade pip
+ python -m pip install "poetry>=1.2.0a1"
+ python -m poetry plugin add poetry-version-plugin
+ - name: Configure poetry
+ run: python -m poetry config virtualenvs.in-project true
+ - name: Ensure cache is healthy
+ if: steps.cache.outputs.cache-hit == 'true'
+ run: python -m poetry run pip --version >/dev/null 2>&1 || rm -rf .venv
+ - name: Install Dependencies
+ if: steps.cache.outputs.cache-hit != 'true'
+ run: python -m poetry install
+ - name: Install Material for MkDocs Insiders
+ if: github.event.pull_request.head.repo.fork == false && steps.cache.outputs.cache-hit != 'true'
+ run: pip install git+https://${{ secrets.ACTIONS_TOKEN }}@github.com/squidfunk/mkdocs-material-insiders.git
+ - name: Build Docs
+ run: python3.7 -m mkdocs build
+ - name: Zip docs
+ run: bash ./scripts/zip-docs.sh
+ - uses: actions/upload-artifact@v2
+ with:
+ name: docs-zip
+ path: ./docs.zip
+ - name: Deploy to Netlify
+ uses: nwtgck/actions-netlify@v1.1.5
+ with:
+ publish-dir: './site'
+ production-branch: main
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+ enable-commit-comment: false
+ env:
+ NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
+ NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
--- /dev/null
+name: Publish
+
+on:
+ release:
+ types:
+ - created
+
+jobs:
+ publish:
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up Python
+ uses: actions/setup-python@v2
+ with:
+ python-version: "3.7"
+ - uses: actions/cache@v2
+ id: cache
+ with:
+ path: ${{ env.pythonLocation }}
+ key: ${{ runner.os }}-python-${{ env.pythonLocation }}-${{ hashFiles('pyproject.toml') }}-test
+ - name: Install poetry
+ if: steps.cache.outputs.cache-hit != 'true'
+ run: |
+ python -m pip install --upgrade pip
+ python -m pip install "poetry>=1.2.0a1"
+ python -m poetry plugin add poetry-version-plugin
+ - name: Configure poetry
+ run: python -m poetry config virtualenvs.in-project true
+ - name: Ensure cache is healthy
+ if: steps.cache.outputs.cache-hit == 'true'
+ run: python -m poetry run pip --version >/dev/null 2>&1 || rm -rf .venv
+ - name: Install Dependencies
+ if: steps.cache.outputs.cache-hit != 'true'
+ run: python -m poetry install
+ - name: Publish
+ env:
+ PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
+ run: |
+ python -m poetry config pypi-token.pypi $PYPI_TOKEN
+ bash scripts/publish.sh
--- /dev/null
+name: Test
+
+on:
+ push:
+ pull_request:
+ types: [opened, synchronize]
+
+jobs:
+ test:
+ runs-on: ubuntu-20.04
+ strategy:
+ matrix:
+ python-version: [3.6, 3.7, 3.8, 3.9]
+ fail-fast: false
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up Python
+ uses: actions/setup-python@v2
+ with:
+ python-version: ${{ matrix.python-version }}
+ - uses: actions/cache@v2
+ id: cache
+ with:
+ path: ${{ env.pythonLocation }}
+ key: ${{ runner.os }}-python-${{ env.pythonLocation }}-${{ hashFiles('pyproject.toml') }}-test
+ - name: Install poetry
+ if: steps.cache.outputs.cache-hit != 'true'
+ run: |
+ python -m pip install --upgrade pip
+ python -m pip install "poetry>=1.2.0a1"
+ python -m poetry plugin add poetry-version-plugin
+ - name: Configure poetry
+ run: python -m poetry config virtualenvs.in-project true
+ - name: Ensure cache is healthy
+ if: steps.cache.outputs.cache-hit == 'true'
+ run: python -m poetry run pip --version >/dev/null 2>&1 || rm -rf .venv
+ - name: Install Dependencies
+ if: steps.cache.outputs.cache-hit != 'true'
+ run: python -m poetry install
+ - name: Test
+ run: bash scripts/test.sh
+ - name: Upload coverage
+ uses: codecov/codecov-action@v1