Skip to content
ci.yml 5.19 KiB
Newer Older
Andreas Klöckner's avatar
Andreas Klöckner committed
name: CI
        - main
    pull_request:
        paths-ignore:
        - 'doc/*.rst'
    schedule:
        - cron:  '17 3 * * 0'

concurrency:
    group: ${{ github.head_ref || github.ref_name }}
    cancel-in-progress: true

        runs-on: ubuntu-latest
        steps:
Matthias Diener's avatar
Matthias Diener committed
        -   uses: actions/checkout@v4
        -   uses: actions/setup-python@v5
                pip install ruff
                ruff check
    typos:
        name: Typos
        runs-on: ubuntu-latest
        steps:
        -   uses: actions/checkout@v4
        -   uses: crate-ci/typos@master

    validate_cff:
        name: Validate CITATION.cff
        runs-on: ubuntu-latest
        steps:
Matthias Diener's avatar
Matthias Diener committed
        -   uses: actions/checkout@v4
        -   uses: actions/setup-python@v5
            with:
                python-version: '3.x'
        -   run: |
                pip install cffconvert
                cffconvert -i CITATION.cff --validate

    pylint:
        name: Pylint
        runs-on: ubuntu-latest
        steps:
Matthias Diener's avatar
Matthias Diener committed
        -   uses: actions/checkout@v4
Matthias Diener's avatar
Matthias Diener committed
            uses: actions/setup-python@v5
                python-version: '3.x'
                EXTRA_INSTALL="numpy pymbolic orderedsets"
                curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/prepare-and-run-pylint.sh
                . ./prepare-and-run-pylint.sh "$(basename $GITHUB_REPOSITORY)"
    mypy:
        name: Mypy
        runs-on: ubuntu-latest
        steps:
Matthias Diener's avatar
Matthias Diener committed
        -   uses: actions/checkout@v4
Matthias Diener's avatar
Matthias Diener committed
            uses: actions/setup-python@v5
            with:
                python-version: '3.x'
        -   name: "Main Script"
            run: |
                EXTRA_INSTALL="numpy siphash24"
                curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/prepare-and-run-mypy.sh
Matt Wala's avatar
Matt Wala committed
                . ./prepare-and-run-mypy.sh python3 mypy
Matthias Diener's avatar
Matthias Diener committed
        name: Pytest on Py${{ matrix.python-version }} ${{ matrix.os }}
        runs-on: ${{ matrix.os }}
        strategy:
            matrix:
                python-version: ["3.10", "3.12", "3.x", "pypy3.10"]
Matthias Diener's avatar
Matthias Diener committed
                os: [ubuntu-latest, macos-latest]
Matthias Diener's avatar
Matthias Diener committed
        -   uses: actions/checkout@v4
Matthias Diener's avatar
Matthias Diener committed
            uses: actions/setup-python@v5
            with:
                python-version: ${{ matrix.python-version }}
                # untested, causes import error with Pytest >= 6.2.0
                # AK, 2020-12-13
                rm pytools/mpiwrap.py

                EXTRA_INSTALL="numpy frozendict immutabledict orderedsets constantdict immutables pyrsistent attrs siphash24"
                curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/build-and-test-py-project.sh
                . ./build-and-test-py-project.sh

                # Also run with optimizations turned on, since opt_frozen_dataclass
                # depends on the __debug__ setting.
                python -O -m pytest pytools/test/test_dataclasses.py

    pytest_nonumpy:
        name: Pytest without Numpy
        runs-on: ubuntu-latest
        steps:
Matthias Diener's avatar
Matthias Diener committed
        -   uses: actions/checkout@v4
Matthias Diener's avatar
Matthias Diener committed
            uses: actions/setup-python@v5
            with:
                python-version: '3.x'
        -   name: "Main Script"
            run: |
                EXTRA_INSTALL="siphash24"
                rm pytools/{convergence,spatial_btree,obj_array,mpiwrap}.py
                curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/build-and-test-py-project.sh
                . ./build-and-test-py-project.sh

    #examples:
    #    name: Examples Py3
    #    runs-on: ubuntu-latest
    #    steps:
Matthias Diener's avatar
Matthias Diener committed
    #    -   uses: actions/checkout@v4
Matthias Diener's avatar
Matthias Diener committed
    #        uses: actions/setup-python@v5
    #        with:
    #            python-version: '3.x'
    #    -   name: "Main Script"
    #        run: |
    #            EXTRA_INSTALL="numpy pymbolic"
    #            curl -L -O https://tiker.net/ci-support-v0
    #            . ./ci-support-v0
    #            build_py_project_in_venv
    #            run_examples
    downstream_tests:
        strategy:
            matrix:
                downstream_project: [loopy, pytato]
        name: Tests for downstream project ${{ matrix.downstream_project }}
        runs-on: ubuntu-latest
        steps:
Matthias Diener's avatar
Matthias Diener committed
        -   uses: actions/checkout@v4
        -   name: "Main Script"
            env:
                DOWNSTREAM_PROJECT: ${{ matrix.downstream_project }}
            run: |
                curl -L -O https://tiker.net/ci-support-v0
                test_downstream "$DOWNSTREAM_PROJECT"
Andreas Klöckner's avatar
Andreas Klöckner committed
    docs:
        name: Documentation
        runs-on: ubuntu-latest
        steps:
Matthias Diener's avatar
Matthias Diener committed
        -   uses: actions/checkout@v4
Matthias Diener's avatar
Matthias Diener committed
            uses: actions/setup-python@v5
Andreas Klöckner's avatar
Andreas Klöckner committed
            with:
                python-version: '3.x'
        -   name: "Main Script"
            run: |
                EXTRA_INSTALL="numpy"
                curl -L -O https://tiker.net/ci-support-v0
                . ci-support-v0
Andreas Klöckner's avatar
Andreas Klöckner committed
                build_py_project_in_venv
                build_docs