ci: cache the venv #9
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: main | |
on: [push] | |
jobs: | |
setup: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
cache: "pip" | |
- name: Install dependencies | |
run: | | |
export PYTHONDONTWRITEBYTECODE=1; export POETRY_VIRTUALENVS_IN_PROJECT=1 | |
python --version; python -m pip --version | |
python -m pip install poetry; poetry --version | |
make install | |
- name: Cache venv | |
id: cache-venv | |
uses: actions/cache@v4 | |
with: | |
path: .venv | |
key: ${{ runner.os }}-venv | |
lint: | |
runs-on: ubuntu-22.04 | |
needs: [setup] | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
cache: "pip" | |
- name: Restore venv | |
id: cache-venv-restore | |
uses: actions/cache/restore@v4 | |
with: | |
path: .venv | |
key: ${{ runner.os }}-venv | |
- name: Run the linter | |
run: | | |
export PYTHONDONTWRITEBYTECODE=1; export POETRY_VIRTUALENVS_IN_PROJECT=1 | |
python -m pip install poetry | |
make lint-ci | |
type-check: | |
runs-on: ubuntu-22.04 | |
needs: [setup] | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
cache: "pip" | |
- name: Restore venv | |
id: cache-venv-restore | |
uses: actions/cache/restore@v4 | |
with: | |
path: .venv | |
key: ${{ runner.os }}-venv | |
- name: Run the type-checker | |
run: | | |
export PYTHONDONTWRITEBYTECODE=1; export POETRY_VIRTUALENVS_IN_PROJECT=1 | |
python -m pip install poetry | |
make type-check-ci | |
test: | |
runs-on: ubuntu-22.04 | |
needs: [lint,type-check] | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
cache: "pip" | |
- name: Restore venv | |
id: cache-venv-restore | |
uses: actions/cache/restore@v4 | |
with: | |
path: .venv | |
key: ${{ runner.os }}-venv | |
- name: Run the test suite and coverage | |
run: | | |
export PYTHONDONTWRITEBYTECODE=1; export POETRY_VIRTUALENVS_IN_PROJECT=1 | |
python -m pip install poetry | |
sudo apt-get install -y --no-install-recommends pandoc texlive texlive-latex-extra | |
make coverage-ci | |
source .venv/bin/activate | |
make doctest | |
docs: | |
runs-on: ubuntu-22.04 | |
needs: [lint,type-check] | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
cache: "pip" | |
- name: Restore venv | |
id: cache-venv-restore | |
uses: actions/cache/restore@v4 | |
with: | |
path: .venv | |
key: ${{ runner.os }}-venv | |
- name: Build the docs | |
run: | | |
export PYTHONDONTWRITEBYTECODE=1; export POETRY_VIRTUALENVS_IN_PROJECT=1 | |
python -m pip install poetry | |
sudo apt-get install -y --no-install-recommends pandoc | |
source .venv/bin/activate | |
make docs | |
upload-docs: | |
if: success() && github.ref == 'refs/heads/main' | |
needs: [test,docs] | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
cache: "pip" | |
- name: Restore venv | |
id: cache-venv-restore | |
uses: actions/cache/restore@v4 | |
with: | |
path: .venv | |
key: ${{ runner.os }}-venv | |
- name: Build docs for publishing | |
run: | | |
export PYTHONDONTWRITEBYTECODE=1; export POETRY_VIRTUALENVS_IN_PROJECT=1 | |
python -m pip install poetry | |
sudo apt-get install -y --no-install-recommends pandoc | |
source .venv/bin/activate | |
make pages-ci | |
- name: Upload artifact | |
uses: actions/upload-pages-artifact@v1 | |
with: | |
path: docs/build/public | |
pages: | |
needs: [upload-docs] | |
if: success() && github.ref == 'refs/heads/main' | |
permissions: | |
pages: write | |
id-token: write | |
environment: | |
name: github-pages | |
url: ${{ steps.deployment.outputs.page_url }} | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Publish to pages | |
id: deployment | |
uses: actions/deploy-pages@v4 | |
build: | |
needs: [test,docs] | |
if: success() && github.ref == 'refs/heads/main' | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
cache: "pip" | |
- name: Restore venv | |
id: cache-venv-restore | |
uses: actions/cache/restore@v4 | |
with: | |
path: .venv | |
key: ${{ runner.os }}-venv | |
- name: Build the package | |
run: | | |
export PYTHONDONTWRITEBYTECODE=1; export POETRY_VIRTUALENVS_IN_PROJECT=1 | |
python -m pip install poetry | |
sudo apt-get install -y --no-install-recommends pandoc texlive texlive-latex-extra | |
make build-ci | |
- name: Upload build | |
uses: actions/upload-artifact@v3 | |
with: | |
name: package-build | |
path: ./dist/* | |
publish: | |
needs: [pages,build] | |
if: success() && github.ref == 'refs/heads/main' && startsWith(github.ref, 'refs/tags') | |
runs-on: ubuntu-22.04 | |
environment: | |
name: testpypi | |
url: https://test.pypi.org/p/crypto-condor | |
permissions: | |
contents: write | |
id-token: write | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
cache: "pip" | |
- name: Download build | |
uses: actions/download-artifact@v3 | |
with: | |
# By omitting the name we are downloading all the artifacts | |
path: ./dist/ | |
- name: Publish the package | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
repository-url: https://test.pypi.org/legacy/ | |