summaryrefslogtreecommitdiff
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
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.
-rw-r--r--.github/workflows/build.yml105
-rw-r--r--.travis.yml45
-rw-r--r--README.md4
3 files changed, 107 insertions, 47 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
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 133e57b..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,45 +0,0 @@
-language: cpp
-dist: xenial
-
-matrix:
- include:
- - os: linux
- compiler: gcc
-
- - os: linux
- compiler: clang
-
- - os: osx
-
-addons:
- homebrew:
- packages:
- - qt
- update: true
-
-before_install:
-
-install:
- - export QT_SELECT=5
- - if [ $TRAVIS_OS_NAME = linux ]; then sudo apt-get install -y qtbase5-dev; fi
- - if [ $TRAVIS_OS_NAME = osx ]; then brew link --force qt; fi
- - qmake -v
-
-script:
- - qmake -r "QMAKE_CXX=$CXX" "QMAKE_CC=$CC" && make -j 2
- - cd quackleio && qmake -r "QMAKE_CXX=$CXX" "QMAKE_CC=$CC" && make -j 2
- - cd ..
- - cd quacker && qmake -r "QMAKE_CXX=$CXX" "QMAKE_CC=$CC" && make -j 2
- - cd ..
- - cd encodeleaves && qmake -r "QMAKE_CXX=$CXX" "QMAKE_CC=$CC" && make -j 2
- - cd ..
- - cd gaddagize && qmake -r "QMAKE_CXX=$CXX" "QMAKE_CC=$CC" && make -j 2
- - cd ..
- - cd makegaddag && qmake -r "QMAKE_CXX=$CXX" "QMAKE_CC=$CC" && make -j 2
- - cd ..
- - cd makeminidawg && qmake -r "QMAKE_CXX=$CXX" "QMAKE_CC=$CC" && make -j 2
- - cd ..
- - cd quackleio/iotest && qmake -r "QMAKE_CXX=$CXX" "QMAKE_CC=$CC" && make -j 2
- - cd ../..
- - cd test && qmake -r "QMAKE_CXX=$CXX" "QMAKE_CC=$CC" && make -j 2
- - cd ..
diff --git a/README.md b/README.md
index a2e5b17..cbfdbdf 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,8 @@
Quackle ![Icon](https://github.com/quackle/quackle/raw/master/IconSmall.png)
=======
-[![Travis build status](https://secure.travis-ci.org/quackle/quackle.png?branch=master)](http://travis-ci.org/quackle/quackle)
[![AppVeyor build status](https://ci.appveyor.com/api/projects/status/ttcu5vruvcdljwel/branch/master?svg=true)](https://ci.appveyor.com/project/jfultz/quackle/branch/master)
+[![CI builds](https://github.com/quackle/quackle/workflows/CI%20builds/badge.svg)](https://github.com/quackle/quackle/actions?query=workflow%3A%22CI+Builds%22+event%3Apush)
Crossword game artificial intelligence and analysis tool.
@@ -10,7 +10,7 @@ See LICENSE in this directory.
Building Quackle:
-----------------
-Quackle is built and tested with the latest releases of Qt 5.12 and 5.13.
+Quackle runs automated GitHub CI builds on Qt 5.12 and 5.15, so it should work with any Qt version in that range.
See README.MacOS and README.Windows for platform-specific instructions. Generally:
Clone the repo or download the tarball and untar. Use qmake to build quackle.pro and quackleio/quackleio.pro: