File: tests.yaml

package info (click to toggle)
libmbd 0.12.8-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 700 kB
  • sloc: f90: 7,222; python: 1,512; ansic: 127; makefile: 48; sh: 12
file content (139 lines) | stat: -rw-r--r-- 5,394 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
name: Tests
on:
  push:
  pull_request:
  schedule:
    - cron: '0 6 * * 1'
jobs:
  all:
    if: github.event_name != 'schedule' || github.repository == 'libmbd/libmbd'
    name: All
    strategy:
      fail-fast: false
      matrix:
        include:
          - type: ubuntu
            mpi-nodes: 2
          - type: macos
            mpi-nodes: 2
          - type: conda
          - type: conda
            mpi: openmpi
            mpi-nodes: 8
            elsi: elsi
          - type: conda
            mpi: mpich
            mpi-nodes: 2
          - type: conda
            python-version: =3.6
            cmake-version: =3.14
            gfortran-version: =8
            mpi: openmpi
            mpi-nodes: 8
          - type: conda
            python-version: =3.6
            cmake-version: =3.14
            gfortran-version: =8
            mpi: mpich=3.4.3=\*_100
            mpi-nodes: 2
            elsi: elsi
    runs-on: ${{ fromJSON('{"ubuntu":"ubuntu-latest","macos":"macos-latest","conda":"ubuntu-latest"}')[matrix.type] }}
    env:
      CONDA_ALWAYS_YES: "true"
      CONDA_QUIET: "true"
    steps:
      - name: Set environment variables
        run: |
          case ${{ runner.os }} in
            Linux)
              XDG_CACHE_HOME=$HOME/.cache
              ;;
            macOS)
              XDG_CACHE_HOME=$HOME/Library/Caches
              ;;
          esac
          echo YEAR_MONTH=$(date +"%Y-%m") >>$GITHUB_ENV
          echo XDG_CACHE_HOME="$XDG_CACHE_HOME" >>$GITHUB_ENV
          if [[ "${{ matrix.mpi-nodes }}" ]]; then
            echo MPI_NODES=${{ matrix.mpi-nodes }} >>$GITHUB_ENV
          fi
          if [[ "${{ matrix.mpi }}" == "openmpi" || "${{ matrix.type }}" == "ubuntu" ]]; then
            echo MPIEXEC_EXTRA_FLAGS=--oversubscribe >>$GITHUB_ENV
          fi
          echo VIRTUAL_ENV=$HOME/env >>$GITHUB_ENV
          echo CONDA_PKGS_DIRS="$XDG_CACHE_HOME/conda/pkgs" >>$GITHUB_ENV
          echo $HOME/env/bin >>$GITHUB_PATH
      - uses: actions/checkout@v2
        with:
          fetch-depth: 0
      - uses: actions/cache@v2
        with:
          path: |
            ${{ env.XDG_CACHE_HOME }}/conda/pkgs
            ${{ env.XDG_CACHE_HOME }}/pip
          key: ${{ matrix.type }}-${{ matrix.python-version }}-${{ matrix.cmake-version }}-${{ matrix.gfortran-version }}-${{ matrix.mpi }}-${{ env.YEAR_MONTH }}-${{ hashFiles('pyproject.toml') }}
      - name: Install libMBD dependencies
        if: matrix.type == 'ubuntu'
        run: sudo apt-get install -yq --no-install-suggests --no-install-recommends gfortran libblas-dev liblapack-dev mpi-default-dev mpi-default-bin libscalapack-mpi-dev
      - name: Install libMBD dependencies
        if: matrix.type == 'macos'
        run: brew install open-mpi scalapack
      - name: Create Conda environment
        if: matrix.type == 'conda'
        run: conda create -p ${{ env.VIRTUAL_ENV }} -c conda-forge python${{ matrix.python-version }} cmake${{ matrix.cmake-version }} gfortran_linux-64${{ matrix.gfortran-version }} openblas ${{ matrix.mpi }} scalapack elsi numpy scipy mpi4py
      - name: Create Python virtual environment
        if: matrix.type != 'conda'
        run: |
          python3 -m venv ${{ env.VIRTUAL_ENV }}
          ${{ env.VIRTUAL_ENV }}/bin/pip install -U pip
      - name: Install coverage Python package
        run: pip install -U coverage
      - name: Report environment
        run: |
          type python
          type pip
          python --version
          cmake --version
          pip --version
          git describe --tags --dirty=.dirty
      - name: Set CMAKE_ARGS
        run: |
          FFLAGS=('-fprofile-arcs' '-ftest-coverage')
          CMAKE_ARGS=()
          if [[ "${{ matrix.mpi-nodes }}" ]]; then
              CMAKE_ARGS+=('-DENABLE_SCALAPACK_MPI=ON')
          fi
          if [[ "${{ matrix.elsi }}" == "elsi" ]]; then
              CMAKE_ARGS+=('-DENABLE_ELSI=ON')
          fi
          if [[ "${{ matrix.type }}" == "macos" ]]; then
              CMAKE_ARGS+=('-DCMAKE_Fortran_COMPILER=gfortran-12')
          fi
          if [[ "${{ matrix.type }}" == "ubuntu" ]]; then
            CMAKE_ARGS+=('-DCMAKE_IGNORE_PATH="/usr/lib/cmake/scalapack-2.1.0.openmpi;/lib/cmake/scalapack-2.1.0.openmpi"')
          fi
          echo CMAKE_ARGS=${CMAKE_ARGS[@]}
          echo CMAKE_ARGS=${CMAKE_ARGS[@]} >>$GITHUB_ENV
          echo FFLAGS=${FFLAGS[@]}
          echo FFLAGS=${FFLAGS[@]} >>$GITHUB_ENV
      - name: Run Cmake
        run: |
          [[ "${{ matrix.type }}" != "conda" ]] || { source $CONDA/etc/profile.d/conda.sh && conda activate $HOME/env && export CMAKE_ARGS="$CONDA_BACKUP_CMAKE_ARGS"; }
          make run_cmake
      - name: Build libMBD
        run: make build_libmbd -o run_cmake
      - name: Install libMBD
        run: make install_libmbd -o build_libmbd
      - name: Build & install pyMBD
        run: |
          [[ "${{ matrix.type }}" != "conda" ]] || { source $CONDA/etc/profile.d/conda.sh && conda activate $HOME/env; }
          make install -o install_libmbd
      - run: pip list
      - name: Test libMBD
        run: make test_libmbd
      - name: Test pyMBD
        run: |
          make test -o test_libmbd RUN_CMD="coverage run -m" | tee output
          ! grep failed output >/dev/null
      - name: Upload to Codecov
        run: bash <(curl -s https://codecov.io/bash) -f "!*#tests#*"