Skip to content

feat(ci): cache

feat(ci): cache #33

Workflow file for this run

name: Code Quality
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Setup Local Variables
id: variable-setup
run: |
echo "pipx-home=$PIPX_HOME" >> $GITHUB_OUTPUT
echo "pipx-bin-dir=$PIPX_BIN_DIR" >> $GITHUB_OUTPUT
shell: bash
- name: Cache pipx
id: cache-pipx
uses: actions/cache@v4
with:
path: |
${{ steps.variable-setup.outputs.pipx-home }}
${{ steps.variable-setup.outputs.pipx-bin-dir }}
key: ${{ steps.variable-setup.outputs.cache-key-pipx }}
- name: Install Poetry
if: steps.cache-pipx.outputs.cache-hit != 'true'
run: pipx install poetry
- name: Generate hash of lint dependencies only
run: |
poetry export --only=lint --format=requirements.txt --output=requirements.txt
echo "hash=$(sha256sum requirements.txt | cut -d ' ' -f 1)" >> $GITHUB_ENV
- name: Cache dependencies
id: cql
uses: actions/cache@v4
with:
path: |
~/.cache/pypoetry
key: ${{ runner.os }}-lint-${{ env.hash }}
restore-keys: |
${{ runner.os }}-lint-
- name: Install lint dependencies
if: steps.cql.outputs.cache-hit != 'true'
run: poetry install --only=lint --no-interaction --no-root
- name: Check code quality
run: poetry run ruff check .
format:
name: Format
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install poetry
run: pipx install poetry
- name: Generate hash of lint dependencies only
run: |
poetry export --only=lint --format=requirements.txt --output=requirements.txt
echo "hash=$(sha256sum requirements.txt | cut -d ' ' -f 1)" >> $GITHUB_ENV
- name: Cache dependencies
id: cqf
uses: actions/cache@v4
with:
path: |
~/.cache/pypoetry
key: ${{ runner.os }}-lint-${{ env.hash }}
restore-keys: |
${{ runner.os }}-lint-
- name: Install lint dependencies
if: steps.cqf.outputs.cache-hit != 'true'
run: poetry install --only=lint --no-interaction --no-root
- name: Check code style
run: poetry run ruff format --check
type-check:
name: Type Check
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Setup Local Variables
id: variable-setup
run: |
echo "pipx-home=$PIPX_HOME" >> $GITHUB_OUTPUT
echo "pipx-bin-dir=$PIPX_BIN_DIR" >> $GITHUB_OUTPUT
export BASE64_PIPX_ID=$(echo -n '${{ inputs.pipx-packages }}' | base64)
echo "cache-key-pipx=pipx-${{ inputs.os }}-${{ inputs.python-version }}-$BASE64_PIPX_ID" >> $GITHUB_OUTPUT
shell: bash
- name: Cache pipx
id: cache-pipx
uses: actions/cache@v4
with:
path: |
${{ steps.variable-setup.outputs.pipx-home }}
${{ steps.variable-setup.outputs.pipx-bin-dir }}
key: ${{ steps.variable-setup.outputs.cache-key-pipx }}
- name: Install Poetry ${{ inputs.poetry-version }} and '${{ inputs.pipx-packages }}'
if: ${{ steps.cache-pipx.outputs.cache-hit != 'true' }}
run: |
for tool in ${{ inputs.pipx-packages }}; do;
pipx install $tool
done
shell: bash
- name: Install Poetry
if: steps.cache-poetry.outputs.cache-hit != 'true'
run: |
python -m pip install --user pipx
python -m pipx ensurepath
pipx install poetry
- name: Generate hash of types dependencies only
run: |
poetry export --only=types --format=requirements.txt --output=requirements.txt
echo "hash=$(sha256sum requirements.txt | cut -d ' ' -f 1)" >> $GITHUB_ENV
- name: Cache dependencies
id: cqtc
uses: actions/cache@v4
with:
path: |
~/.cache/pypoetry
key: ${{ runner.os }}-types-${{ env.hash }}
restore-keys: |
${{ runner.os }}-types-
- name: Install types and mypy dependencies
run: poetry install --only=types --no-interaction --no-root
- name: Check types
run: poetry run mypy tesk/
spell-check:
name: Spell Check
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install poetry
run: pipx install poetry
- name: Generate hash of lint dependencies only
run: |
poetry export --only=lint --format=requirements.txt --output=requirements.txt
echo "hash=$(sha256sum requirements.txt | cut -d ' ' -f 1)" >> $GITHUB_ENV
- name: Cache dependencies
id: cqsc
uses: actions/cache@v4
with:
path: |
~/.cache/pypoetry
key: ${{ runner.os }}-lint-${{ env.hash }}
restore-keys: |
${{ runner.os }}-lint-
- name: Install lint dependencies
if: steps.cqsc.outputs.cache-hit != 'true'
run: poetry install --only=lint --no-interaction --no-root
- name: Check spellings
run: poetry run typos .