projectsyn/commodore

View on GitHub
.github/workflows/build-virtualenv-caches.yml

Summary

Maintainability
Test Coverage
name: Build virtualenv caches
on:
  push:
    branches:
    - master
  # Verify & rebuild caches every Monday at 04:00
  # This should mostly ensure that the caches aren't evicted after 7 days of
  # inactivity
  schedule:
    - cron: '0 4 * * MON'

jobs:
  build-lint-virtualenvs:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        command:
          - flake8
          - pylint
          - bandit
          - mypy
          - black
    steps:
    - uses: actions/checkout@v4
    - uses: actions/setup-python@v5
      with:
        python-version: '3.9'
    - uses: Gr1N/setup-poetry@v9
    - name: Install tox
      run: |
        pip install tox
    - uses: actions/cache@v4
      with:
        path: |
          .tox
          ~/.cache/pypoetry/virtualenvs
        key: ${{ runner.os }}-lint-${{ matrix.command }}-${{ hashFiles('poetry.lock', 'tox.ini') }}
    - name: Build virtualenv for ${{ matrix.command }}
      run: make lintenv_${{ matrix.command }}
  build-test-virtualenvs:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version:
          - '3.8'
          - '3.9'
          - '3.10'
          - '3.11'
    steps:
    - uses: actions/checkout@v4
    - uses: actions/setup-python@v5
      with:
        python-version: ${{ matrix.python-version }}
    - uses: Gr1N/setup-poetry@v9
    - name: Install tox
      run: |
        pip install tox
    - uses: actions/cache@v4
      with:
        path: |
          .tox
          ~/.cache/pypoetry/virtualenvs
        key: ${{ runner.os }}-test-py${{ matrix.python-version }}-${{ hashFiles('poetry.lock', 'tox.ini') }}
    - name: Extract Python minor version from matrix python-version
      run: echo "PYVER=$(echo ${{ matrix.python-version}} |cut -d. -f1,2)" >> $GITHUB_ENV
    - run: |
        make testenv_py${PYVER}
  build-test-reclass-rs-virtualenvs:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: actions/setup-python@v5
      with:
        python-version: '3.11'
    - uses: Gr1N/setup-poetry@v9
    - name: Install tox
      run: |
        pip install tox
    - uses: actions/cache@v4
      with:
        path: |
          .tox
          ~/.cache/pypoetry/virtualenvs
        key: ${{ runner.os }}-test-py3.11-reclass-rs-${{ hashFiles('poetry.lock', 'tox.ini') }}
    - run: |
        make testenv_py3.11_reclass_rs

  build-bench-virtualenvs:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version:
          - '3.8'
          - '3.9'
          - '3.10'
          - '3.11'
    steps:
    - uses: actions/checkout@v4
    - uses: actions/setup-python@v5
      with:
        python-version: ${{ matrix.python-version }}
    - uses: Gr1N/setup-poetry@v9
    - name: Install tox
      run: |
        pip install tox
    - uses: actions/cache@v4
      with:
        path: |
          .tox
          ~/.cache/pypoetry/virtualenvs
        key: ${{ runner.os }}-bench-py${{ matrix.python-version }}-${{ hashFiles('poetry.lock', 'tox.ini') }}
    - name: Extract Python minor version from matrix python-version
      run: echo "PYVER=$(echo ${{ matrix.python-version}} |cut -d. -f1,2)" >> $GITHUB_ENV
    - run: |
        make benchenv_py${PYVER}

  build_poetry_virtualenv:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: actions/setup-python@v5
      with:
        python-version: '3.9'
    - uses: Gr1N/setup-poetry@v9
    - uses: actions/cache@v4
      with:
        path: ~/.cache/pypoetry/virtualenvs
        key: ${{ runner.os }}-poetry-${{ hashFiles('poetry.lock') }}
    - name: Install Poetry and setup Poetry virtualenv
      run: |
        poetry env use python3.9
        poetry install