summaryrefslogtreecommitdiff
path: root/.github/workflows
diff options
context:
space:
mode:
authorJohn Fultz <jfultz@wolfram.com>2020-12-09 00:50:41 -0600
committerJohn Fultz <jfultz@wolfram.com>2020-12-09 17:48:11 -0600
commit169c0a31d36012c6dcb7f77f293bbfbadf4340fe (patch)
tree1c83bc73df9bcc2062dd2f72d137bd22cd89b1ae /.github/workflows
parent4eabf744cb68d7dce443fd2c221d2df6ba2a8788 (diff)
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.
Diffstat (limited to '.github/workflows')
-rw-r--r--.github/workflows/build.yml105
1 files changed, 105 insertions, 0 deletions
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