Skip to content
Snippets Groups Projects
ci.yml 6.79 KiB
Newer Older
  • Learn to ignore specific revisions
  • name: CI
    on:
        push:
            branches:
    
            - main
    
        pull_request:
        schedule:
            - cron:  '17 3 * * 0'
    
    jobs:
        flake8:
            name: Flake8
            runs-on: ubuntu-latest
            steps:
            -   uses: actions/checkout@v2
            -
                uses: actions/setup-python@v1
                with:
    
                    python-version: '3.x'
    
            -   name: "Main Script"
                run: |
    
                    curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/main/prepare-and-run-flake8.sh
    
                    . ./prepare-and-run-flake8.sh "$(basename $GITHUB_REPOSITORY)" ./test
    
        pylint:
            name: Pylint
            runs-on: ubuntu-latest
            steps:
            -   uses: actions/checkout@v2
            -   name: "Main Script"
                run: |
    
                    CONDA_ENVIRONMENT=.test-conda-env-py3.yml
                    echo "- matplotlib" >> $CONDA_ENVIRONMENT
                    echo "- pyopengl" >> $CONDA_ENVIRONMENT
    
                    echo "- ipython" >> $CONDA_ENVIRONMENT
    
                    echo "-------------------------------------------"
                    cat $CONDA_ENVIRONMENT
                    echo "-------------------------------------------"
                    USE_CONDA_BUILD=1
    
                    curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/main/prepare-and-run-pylint.sh
    
    
                    # Pylint won't find the Cython bits without this
                    PROJECT_INSTALL_FLAGS="--editable"
    
                    . ./prepare-and-run-pylint.sh "$(basename $GITHUB_REPOSITORY)" test/test_*.py
    
        pytest:
            name: Pytest Linux
    
            runs-on: ubuntu-latest
            steps:
            -   uses: actions/checkout@v2
            -   name: "Main Script"
                run: |
                    CONDA_ENVIRONMENT=.test-conda-env-py3.yml
    
                    curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/main/build-and-test-py-project-within-miniconda.sh
    
                    ./configure.py --cl-use-shipped-ext
    
                    . ./build-and-test-py-project-within-miniconda.sh
    
    
        pytest_mac:
            name: Pytest Mac
            runs-on: macos-latest
            steps:
            -   uses: actions/checkout@v2
            -   name: "Main Script"
                run: |
                    export CC=gcc
    
                    CONDA_ENVIRONMENT=.test-conda-env.yml
                    grep -v ocl-icd .test-conda-env-py3.yml > $CONDA_ENVIRONMENT
    
                    curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/main/build-and-test-py-project-within-miniconda.sh
    
                    ./configure.py --cxxflags= --ldflags= --cl-libname=OpenCL
    
                    . ./build-and-test-py-project-within-miniconda.sh
    
    
        docs:
            name: Documentation
            runs-on: ubuntu-latest
            steps:
            -   uses: actions/checkout@v2
            -
                uses: actions/setup-python@v1
                with:
                    python-version: '3.x'
            -   name: "Main Script"
                run: |
                    CONDA_ENVIRONMENT=.test-conda-env-py3.yml
    
                    curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/main/ci-support.sh
    
                    . ci-support.sh
    
                    ./configure.py --cl-use-shipped-ext
    
                    build_py_project_in_conda_env
    
                    build_docs
    
    
        examples:
            name: Examples
            runs-on: ubuntu-latest
            steps:
            -   uses: actions/checkout@v2
            -   name: "Main Script"
                run: |
                    CONDA_ENVIRONMENT=.test-conda-env-py3.yml
    
                    curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/main/ci-support.sh
    
                    . ci-support.sh
    
                    EXTRA_INSTALL="pillow cgen mako imageio"
    
                    build_py_project_in_conda_env
                    (cd examples; rm -f gl_*)
    
                    run_examples --no-require-main
    
        wheels:
            name: Build and upload wheels
            runs-on: ubuntu-latest
            strategy:
                matrix:
                    DOCKER_IMAGE:
                    - quay.io/pypa/manylinux2014_x86_64
    
                    # Disable i686 builds for now: no binary wheels for cryptography,
                    # source build fails, e.g. https://github.com/inducer/pyopencl/pull/421/checks?check_run_id=1781071632
                    # - quay.io/pypa/manylinux2014_i686
    
            steps:
            -   uses: actions/checkout@v2
            -   name: "Main Script"
                env:
                    TWINE_USERNAME: __token__
                    TWINE_PASSWORD: ${{ secrets.TWINE_PASSWORD }}
                    DOCKER_IMAGE: ${{ matrix.DOCKER_IMAGE }}
    
                run: |
                    pwd
                    ls -la
    
    
                    # Only perform upload for tag builds, otherwise unset TWINE_USERNAME to prevent
    
                    if ! [[ $GITHUB_REF == refs/tags* ]]; then
    
                        echo "Not a tag build, GITHUB_REF is '$GITHUB_REF'. Unsetting TWINE_USERNAME"
                        unset TWINE_USERNAME
                    fi
    
                    if [[ $DOCKER_IMAGE == *i686* ]]; then
    
                        PRE_CMD=linux32
                    else
                        PRE_CMD=""
                    fi
    
    
                    docker run --rm -v `pwd`:/io -e TWINE_USERNAME -e TWINE_PASSWORD $DOCKER_IMAGE $PRE_CMD /io/scripts/build-wheels.sh
    
        downstream_tests:
            strategy:
                matrix:
                    downstream_project: [loopy, boxtree, meshmode]
            name: Tests for downstream project ${{ matrix.downstream_project }}
            runs-on: ubuntu-latest
            steps:
            -   uses: actions/checkout@v2
            -   name: "Main Script"
                env:
                    DOWNSTREAM_PROJECT: ${{ matrix.downstream_project }}
                run: |
    
                    # {{{ configure pyopencl so it finds its headers
    
                    TEST_ENV_ROOT="$(pwd)/$DOWNSTREAM_PROJECT/.miniforge3/envs/testing"
                    ./configure.py --cl-inc-dir="$TEST_ENV_ROOT/include" --cl-lib-dir="$TEST_ENV_ROOT/lib"
    
                    git add -f siteconf.py
    
    
                    git config --global user.email "inform@tiker.net"
                    git config --global user.name "Github CI runner"
    
                    git commit -a -m "Fake commit to add aksetup.py"
    
                    # }}}
    
    
                    git clone "https://github.com/inducer/$DOWNSTREAM_PROJECT.git"
    
                    cd "$DOWNSTREAM_PROJECT"
                    echo "*** $DOWNSTREAM_PROJECT version: $(git rev-parse --short HEAD)"
    
                    sed -i "/egg=pyopencl/ c git+file://$(readlink -f ..)#egg=pyopencl" requirements.txt
    
                    export CONDA_ENVIRONMENT=.test-conda-env-py3.yml
                    sed -i 's/pyopencl/ocl-icd/' "$CONDA_ENVIRONMENT"
    
                    # Avoid slow or complicated tests in downstream projects
                    export PYTEST_ADDOPTS="-k 'not (slowtest or octave or mpi)'"
    
    
                    curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/main/ci-support.sh
    
                    . ./ci-support.sh
    
                    build_py_project_in_conda_env
                    test_py_project
    
    
    # vim: sw=4