Skip to content

Reduce generated project jobs to steps #446

Reduce generated project jobs to steps

Reduce generated project jobs to steps #446

Workflow file for this run

name: Test template and generated project
on:
workflow_dispatch:
pull_request:
push:
branches:
- main
concurrency:
# Skip intermediate builds: always.
# Cancel intermediate builds: only if it is a pull request build.
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }}
env:
# This will let tools make use of the full palette of
# 256 colours.
FORCE_COLOR: "3"
jobs:
style:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Set up uv
uses: astral-sh/setup-uv@v7
with:
version: "latest"
enable-cache: true
cache-dependency-glob: "**/pyproject.toml"
- name: Check style
run: uvx pre-commit run -a
template_test:
needs: style
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-13, macos-14, windows-latest]
python-version: ["3.9", "3.10", "3.11", "3.12"]
name:
Template Generation/Project Tests (${{ matrix.os }} / Python ${{ matrix.python-version }})
steps:
- name: Checkout pybamm-cookie
uses: actions/checkout@v5
- name: Set up uv
uses: astral-sh/setup-uv@v7
with:
version: "latest"
python-version: ${{ matrix.python-version }}
activate-environment: true
enable-cache: true
cache-dependency-glob: "**/pyproject.toml"
- name: Install nox
run: uv tool install nox
- name: Set up Git
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
- name: Test template generation
run: nox -s template-tests --verbose
- name: Run coverage tests
if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.12'
run: nox -s coverage --verbose
- name: Upload coverage report
if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.12'
uses: codecov/[email protected]
with:
token: ${{ secrets.CODECOV_TOKEN }}
run_doctests:
needs: style
runs-on: ubuntu-latest
name: Doctests (ubuntu-latest / Python 3.12)
steps:
- name: Check out pybamm-cookie repository
uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Set up uv
uses: astral-sh/setup-uv@v7
with:
version: "latest"
enable-cache: true
cache-dependency-glob: "**/pyproject.toml"
- name: Set up Git
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
- name: Check if the documentation can be built
run: uvx nox -s docs --verbose
generated_project_tests:
needs: [template_test]
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-13, macos-14, windows-latest]
python-version: ["3.9", "3.10", "3.11", "3.12"]
name: Generated Project Tests (${{ matrix.os }} / Python ${{ matrix.python-version }})
steps:
- name: Checkout pybamm-cookie
uses: actions/checkout@v5
- name: Set up uv
uses: astral-sh/setup-uv@v7
with:
version: "latest"
python-version: ${{ matrix.python-version }}
activate-environment: true
enable-cache: true
cache-dependency-glob: "**/pyproject.toml"
- name: Install dependencies
run: |
uv pip install copier jinja2_time
uv tool install nox
- name: Set up Git
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
- name: Generate projects with Copier
run: |
copier copy . ../ --data project_name=pybamm-hatch-true --data project_slug=pybamm_hatch_true --data backend=hatch --data vcs=true --trust --defaults
copier copy . ../ --data project_name=pybamm-hatch-false --data project_slug=pybamm_hatch_false --data backend=hatch --data vcs=false --trust --defaults
copier copy . ../ --data project_name=pybamm-setuptools-true --data project_slug=pybamm_setuptools_true --data backend=setuptools --data vcs=true --trust --defaults
copier copy . ../ --data project_name=pybamm-setuptools-false --data project_slug=pybamm_setuptools_false --data backend=setuptools --data vcs=false --trust --defaults
- name: Run nox tests for pybamm-hatch-true
run: nox -s generated-project-tests --verbose
working-directory: ../pybamm-hatch-true
- name: Run nox tests for pybamm-hatch-false
run: nox -s generated-project-tests --verbose
working-directory: ../pybamm-hatch-false
- name: Run nox tests for pybamm-setuptools-true
run: nox -s generated-project-tests --verbose
working-directory: ../pybamm-setuptools-true
- name: Run nox tests for pybamm-setuptools-false
run: nox -s generated-project-tests --verbose
working-directory: ../pybamm-setuptools-false
run_generated_project_doctests:
needs: [template_test]
runs-on: ubuntu-latest
name: Generated Project Doctests (ubuntu-latest / Python 3.12)
steps:
- name: Check out pybamm-cookie repository
uses: actions/checkout@v5
with:
fetch-depth: 0
python-version: 3.12
- name: Set up uv
uses: astral-sh/setup-uv@v7
with:
version: "latest"
python-version: 3.12
activate-environment: true
enable-cache: true
cache-dependency-glob: "**/pyproject.toml"
- name: Install dependencies
run: uv pip install copier jinja2_time
- name: Install copier and jinja2_time and generate a template with default values
run: copier copy . . --trust --defaults
- name: Set up Git
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
- name: Check if the documentation can be built
working-directory: ./pybamm-example-project
run: |
git add .
git commit -am "initial commit"
uvx nox -s docs --verbose