main.yml 9.2 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
name: CI

on: [push, pull_request]

env:
  GH_REPO_NAME: ${{ github.event.repository.name }}
  DOXYFILE: ${{ github.workspace }}/scripts/doc_autogeneration.doxygen
  GH_REPO_REF: ${{ github.repositoryUrl }}

jobs:
  build:
    name: ${{ matrix.env.NAME }}
    runs-on: ${{ matrix.os }}
    env: ${{ matrix.env }}
    strategy:
      fail-fast: false
      matrix:
        include:
19 20 21
          # Ubuntu
          # Ubuntu 20.04 - Default - CMake - CUDA
          - os: ubuntu-20.04
22 23
            os_name: linux
            env:
24 25
              NAME: U20-default-cmake-cuda
              WITH_CUDNN: false
26
              CI_OS_NAME: linux
27 28 29 30 31 32
          # Ubuntu 18.04 - Default - CMake - CUDA
          - os: ubuntu-18.04
            os_name: linux
            env:
              NAME: U18-default-cmake-cuda
              WITH_CUDNN: false
33
              CI_OS_NAME: linux
34 35
          # Ubuntu 20.04 - Python - CMake - CUDA
          - os: ubuntu-20.04
36 37
            os_name: linux
            env:
38 39
              NAME: U20-python-cmake-cuda
              WITH_CUDNN: false
40
              WITH_PYTHON: true
41 42 43
              CI_OS_NAME: linux
              CI_BUILD_NUMBER: ${{ github.run_number }}
              CI_COMMIT: ${{ github.sha }}
44
              PYTHON3_VERSION: python3.8
45
            DOCS: true
46 47 48 49 50 51 52
          # Ubuntu 18.04 - Python - CMake - CUDA
          - os: ubuntu-18.04
            os_name: linux
            env:
              NAME: U18-python-cmake-cuda
              WITH_CUDNN: false
              WITH_PYTHON: true
53 54 55
              CI_OS_NAME: linux
              CI_BUILD_NUMBER: ${{ github.run_number }}
              CI_COMMIT: ${{ github.sha }}
56 57 58 59 60 61 62 63 64
            DOCS: true
          # Ubuntu 20.04 - Python - CMake - CPU
          - os: ubuntu-20.04
            os_name: linux
            env:
              NAME: U20-python-cmake-cpu
              WITH_PYTHON: true
              WITH_CUDA: false
              WITH_CUDNN: false
65
              CI_OS_NAME: linux
66 67 68 69 70 71 72 73 74
              PYTHON3_VERSION: python3.8
          # Ubuntu 18.04 - Python - CMake - CPU
          - os: ubuntu-18.04
            os_name: linux
            env:
              NAME: U18-python-cmake-cpu
              WITH_PYTHON: true
              WITH_CUDA: false
              WITH_CUDNN: false
75
              CI_OS_NAME: linux
76 77 78 79 80 81 82 83
          # Ubuntu 16.04 - Python - CMake - CPU
          - os: ubuntu-16.04
            os_name: linux
            env:
              NAME: U16-python-cmake-cpu
              WITH_PYTHON: true
              WITH_CUDA: false
              WITH_CUDNN: false
84
              CI_OS_NAME: linux
85 86 87 88 89 90 91 92 93 94
          # TO-DO (not passing)
          # # Ubuntu 20.04 - Python - CMake - OpenCL
          # - os: ubuntu-20.04
          #   os_name: linux
          #   env:
          #     NAME: U20-python-cmake-opencl
          #     WITH_PYTHON: true
          #     WITH_CUDA: false
          #     WITH_CUDNN: false
          #     WITH_OPEN_CL: true
95
          #     CI_OS_NAME: linux
96 97 98 99 100 101 102 103 104 105
          #     PYTHON3_VERSION: python3.8
          # Ubuntu 18.04 - Python - CMake - OpenCL
          - os: ubuntu-18.04
            os_name: linux
            env:
              NAME: U18-python-cmake-opencl
              WITH_PYTHON: true
              WITH_CUDA: false
              WITH_CUDNN: false
              WITH_OPEN_CL: true
106
              CI_OS_NAME: linux
107 108 109 110 111 112 113 114 115
          # Ubuntu 16.04 - Python - CMake - OpenCL
          - os: ubuntu-16.04
            os_name: linux
            env:
              NAME: U16-python-cmake-opencl
              WITH_PYTHON: true
              WITH_CUDA: false
              WITH_CUDNN: false
              WITH_OPEN_CL: true
116
              CI_OS_NAME: linux
117 118 119 120 121 122 123 124 125
          # Ubuntu 20.04 - Python - CMake - CPU - Debug
          - os: ubuntu-20.04
            os_name: linux
            env:
              NAME: U20-python-cmake-cpu-debug
              WITH_PYTHON: true
              WITH_CUDA: false
              WITH_CUDNN: false
              WITH_DEBUG: true
126
              CI_OS_NAME: linux
127 128 129 130 131 132 133 134 135 136
              PYTHON3_VERSION: python3.8
          # Ubuntu 18.04 - Python - CMake - CPU - Debug
          - os: ubuntu-18.04
            os_name: linux
            env:
              NAME: U18-python-cmake-cpu-debug
              WITH_PYTHON: true
              WITH_CUDA: false
              WITH_CUDNN: false
              WITH_DEBUG: true
137
              CI_OS_NAME: linux
138 139 140 141 142 143 144 145 146
          # Ubuntu 16.04 - Python - CMake - CPU - Debug
          - os: ubuntu-16.04
            os_name: linux
            env:
              NAME: U16-python-cmake-cpu-debug
              WITH_PYTHON: true
              WITH_CUDA: false
              WITH_CUDNN: false
              WITH_DEBUG: true
147
              CI_OS_NAME: linux
148 149
          # Ubuntu 20.04 - Python - CMake - CPU - Unity
          - os: ubuntu-20.04
150 151
            os_name: linux
            env:
152
              NAME: U20-python-cmake-cpu-unity
153 154 155 156
              WITH_PYTHON: true
              WITH_UNITY: true
              WITH_CUDA: false
              WITH_CUDNN: false
157
              CI_OS_NAME: linux
158 159 160 161 162 163 164 165
              PYTHON3_VERSION: python3.8
          # Ubuntu 20.04 - Default - CMake - CPU
          - os: ubuntu-20.04
            os_name: linux
            env:
              NAME: U20-default-cmake-cpu
              WITH_CUDA: false
              WITH_CUDNN: false
166
              CI_OS_NAME: linux
167 168 169 170 171 172 173 174 175 176

          # Mac OSX
          # Mac OSX - Python - CMake - CPU
          - os: macos-10.15
            os_name: osx
            env:
              NAME: OSX-python-cmake-cpu
              WITH_CUDA: false
              WITH_CUDNN: false
              WITH_PYTHON: true
177
              CI_OS_NAME: osx
178 179 180 181 182 183 184 185
          # Mac OSX - Python - CMake - OpenCL
          - os: macos-10.15
            os_name: osx
            env:
              NAME: OSX-default-cmake-opencl
              WITH_CUDA: false
              WITH_CUDNN: false
              WITH_OPEN_CL: true
186
              CI_OS_NAME: osx
187 188 189 190 191 192 193 194 195
          # Mac OSX - Python - CMake - CPU - Debug
          - os: macos-10.15
            os_name: osx
            env:
              NAME: OSX-python-cmake-cpu-debug
              WITH_CUDA: false
              WITH_CUDNN: false
              WITH_PYTHON: true
              WITH_DEBUG: true
196
              CI_OS_NAME: osx
197 198 199 200 201 202 203 204 205
          # Mac OSX - Python - CMake - CPU - Unity
          - os: macos-10.15
            os_name: osx
            env:
              NAME: OSX-python-cmake-cpu-unity
              WITH_CUDA: false
              WITH_CUDNN: false
              WITH_PYTHON: true
              WITH_UNITY: true
206
              CI_OS_NAME: osx
207 208 209 210 211 212 213
          # Mac OSX - Default - CMake - CPU
          - os: macos-10.15
            os_name: osx
            env:
              NAME: OSX-default-cmake-cpu
              WITH_CUDA: false
              WITH_CUDNN: false
214
              CI_OS_NAME: osx
215

216 217 218 219 220
          # TO-DO (not passing)
          # Note: CUDA jobs fail in U16 because of an issue with GCC 5.5 (https://github.com/NVIDIA/apex/issues/529). GH Actions doesn't support
          # GCC 5.4 and CUDA does not support newer than GCC 5.X. Thus, cuDNN (sh file only for Ubuntu 16) is no longer tested.
          # # Ubuntu 16.04
          # # Ubuntu 16.04 - Default - CMake - CUDA
221 222 223
          # - os: ubuntu-16.04
          #   os_name: linux
          #   env:
224
          #     NAME: U16-default-cmake-cuda8
225
          #     CI_OS_NAME: linux
226

227 228
          # # Deprecated (not working for the above issue between CUDA and the Ubuntu16 from GitHub Actions) 
          # # Ubuntu 16.04 - Default - Make - CUDA
229 230 231
          # - os: ubuntu-16.04
          #   os_name: linux
          #   env:
232
          #     NAME: U16-default-make-cuda
233
          #     WITH_CUDNN: false
234
          #     WITH_CMAKE: false
235
          #     CI_OS_NAME: linux
236 237 238 239 240 241 242 243 244 245 246 247 248 249

    steps:
    - uses: actions/checkout@v2
      with:
        fetch-depth: 0
        submodules: recursive
    - uses: actions/setup-python@v2
      with:
        python-version: 2.x
      if: ${{ matrix.env.WITH_PYTHON }}
    - name: Docs APT packages
      run: sudo apt-get -yq install doxygen doxygen-doc doxygen-latex doxygen-gui graphviz
      if: ${{ matrix.DOCS }}
    - name: Install (Linux)
250
      run: scripts/CI/install_deps_ubuntu.sh
251 252
      if: ${{ matrix.os_name == 'linux' }}
    - name: Install (Mac OS)
253
      run: scripts/CI/install_deps_osx.sh
254 255 256
      if: ${{ matrix.os_name == 'osx' }}

    - name: Configure
257
      run: scripts/CI/configure.sh
258
    - name: Make
259
      run: scripts/CI/run_make.sh
260
    - name: Tests
261
      run: scripts/CI/run_tests.sh
262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281
    - name: Generate docs
      run: |
        cd ${{ github.workspace }}
        echo 'Generating Doxygen code documentation...'
        echo "INPUT                  = ${{ github.workspace }}/README.md ${{ github.workspace }}/include/openpose/" >> $DOXYFILE
        echo "USE_MDFILE_AS_MAINPAGE = ${{ github.workspace }}/README.md" >> $DOXYFILE
        echo "OUTPUT_DIRECTORY       = " >> $DOXYFILE
        doxygen $DOXYFILE 2>&1 | tee doxygen.log
        echo "" > html/.nojekyll
        cp doxygen.log html/doxygen.log
      if: ${{ matrix.DOCS }}
    - name: Deploy Docs
      uses: peaceiris/actions-gh-pages@v3
      with:
        github_token: ${{ secrets.GITHUB_TOKEN }}
        publish_dir: html
        destination_dir: .
        enable_jekyll: false
        force_orphan: true
      if: ${{ matrix.DOCS && github.event_name == 'push' && github.ref == 'refs/heads/master' }}