Skip to content

ci: cache the venv

ci: cache the venv #9

Workflow file for this run

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/