From 169c0a31d36012c6dcb7f77f293bbfbadf4340fe Mon Sep 17 00:00:00 2001 From: John Fultz Date: Wed, 9 Dec 2020 00:50:41 -0600 Subject: Add cmake/GitHub Actions-based CI, dump Travis-CI. Travis has been throwing a lot of false failures on the Mac build, which was always super-slow anyway. And now it's been suggested that Travis ain't gonna last in the open-source-free-for-use CI business. So out it goes. In its place, GitHub Actions. Just one for now, which runs the build on pushes to master and on PRs (I hope...haven't tested the PR bit yet). Notes about the new system... * It uses the cmake build. Next step...document the cmake system and de-document the qmake system. * It tests against both Qt 5.12.0 and 5.15.1. * Mac, Windows (x64, x86) and Linux (Ubuntu 18.04, 20.04) * On Linux, it also builds clang and g++. * In all of the above cases, it's just pretty much default compilers. Which is probably good...particularly on Linux, where it's not so common for non-developers to be running major compiler updates. * All cmake builds use ninja and cache their Qt downloads, so the result is fairly fast. * No builds of makegaddag, gaddagize, makeminidawg, iotest, or encodeleaves yet, as I haven't migrated those to cmake. Need to get on that. --- .github/workflows/build.yml | 105 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 .github/workflows/build.yml (limited to '.github/workflows/build.yml') diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..10e0430 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,105 @@ +# Continuous integration and pull request validation builds +name: CI builds +on: + push: + branches: [ master, actions_ci ] + pull_request: + branches: [ master, actions_ci ] + +jobs: + job: + name: ${{ matrix.name }}-build + runs-on: ${{ matrix.os }} + env: ${{ matrix.env }} + + strategy: + fail-fast: false + matrix: + name: [macos-clang, ubuntu-20.04-clang, ubuntu-18.04-g++, ubuntu-20.04-g++] + qt_ver: [5.12.0, 5.15.1] + include: + - name: macos-clang + os: macos-latest + env: + CXX: clang++ + CC: clang + - name: ubuntu-20.04-clang + os: ubuntu-20.04 + env: + CXX: clang++ + CC: clang + - name: ubuntu-18.04-g++ + os: ubuntu-18.04 + env: + CXX: g++ + CC: gcc + - name: ubuntu-20.04-g++ + os: ubuntu-20.04 + env: + CXX: g++ + CC: gcc + - name: windows-x64-vs19-qt-5.15.1 + qt_ver: 5.15.1 + os: windows-latest + msvc_arch: x64 + qt_arch: win64_msvc2019_64 + env: + CXX: cl + C: cl + - name: windows-x64-vs19-qt-5.12.0 + qt_ver: 5.12.0 + os: windows-latest + msvc_arch: x64 + qt_arch: win64_msvc2017_64 + env: + CXX: cl + C: cl + - name: windows-x86-vs19-qt-5.15.1 + qt_ver: 5.15.1 + os: windows-latest + msvc_arch: x86 + qt_arch: win32_msvc2019 + env: + CXX: cl + C: cl + - name: windows-x86-vs19-qt-5.12.0 + qt_ver: 5.12.0 + os: windows-latest + msvc_arch: x86 + qt_arch: win32_msvc2017 + env: + CXX: cl + C: cl + + steps: + - name: Check out sources + uses: actions/checkout@v2 + + - name: Get latest CMake and ninja + uses: lukka/get-cmake@latest + + - name: Cache Qt + id: cache-qt + uses: actions/cache@v2 + with: + path: ../Qt + key: ${{ runner.os }}-${{ matrix.qt_ver }}-${{ matrix.qt_arch }}-Qt-cache + + - name: Install Qt + uses: jurplel/install-qt-action@v2 + with: + version: ${{ matrix.qt_ver }} + arch: ${{ matrix.qt_arch }} + cached: ${{ steps.cache-qt.outputs.cache-hit }} + + - name: Add MSVC to path + uses: ilammy/msvc-dev-cmd@v1 + with: + arch: ${{ matrix.msvc_arch }} + + - name: Generate and build + run: | + mkdir build + cd build + cmake -G Ninja ../quacker + ninja -v -- cgit v1.2.3