move to github ci

This commit is contained in:
pantor
2020-03-21 15:14:22 +01:00
parent 93b307b079
commit 095defcf13
3 changed files with 303 additions and 159 deletions

View File

@@ -1,43 +1,315 @@
name: C++ CI
name: CI
on: push
env:
BUILD_TYPE: Release
jobs:
test:
ci:
name: ${{ matrix.name }}
runs-on: ${{ matrix.os }}
env:
CMAKE_GENERATOR: Ninja
strategy:
fail-fast: false
matrix:
os: [
ubuntu-latest,
ubuntu-16.04,
windows-latest,
windows-2016,
macos-latest
# Github Actions requires a single row to be added to the build matrix.
# See https://help.github.com/en/articles/workflow-syntax-for-github-actions.
name: [
ubuntu-18.04-gcc-4.8,
ubuntu-18.04-gcc-4.9,
ubuntu-18.04-gcc-5,
ubuntu-18.04-gcc-6,
ubuntu-18.04-gcc-7,
ubuntu-18.04-gcc-8,
ubuntu-18.04-gcc-9,
ubuntu-18.04-clang-3.5,
ubuntu-18.04-clang-3.6,
ubuntu-18.04-clang-3.7,
ubuntu-18.04-clang-3.8,
ubuntu-18.04-clang-3.9,
ubuntu-18.04-clang-4.0,
ubuntu-18.04-clang-5.0,
ubuntu-18.04-clang-6.0,
ubuntu-18.04-clang-7,
ubuntu-18.04-clang-8,
ubuntu-18.04-clang-9,
windows-2016-cl,
windows-2016-clang-cl,
windows-2016-clang,
windows-2016-gcc,
windows-2019-cl,
windows-2019-clang-cl,
windows-2019-clang,
windows-2019-gcc,
macOS-10.14-xcode-9.4.1,
macOS-10.14-xcode-10.0,
macOS-10.14-xcode-10.1,
macOS-10.14-xcode-10.2,
macOS-10.14-xcode-10.2.1,
macOS-10.14-xcode-10.3,
macOS-10.14-gcc-7,
macOS-10.14-gcc-8,
macOS-10.14-gcc-9,
]
include:
- name: ubuntu-18.04-gcc-4.8
os: ubuntu-18.04
compiler: gcc
version: "4.8"
- name: ubuntu-18.04-gcc-4.9
os: ubuntu-18.04
compiler: gcc
version: "4.9"
- name: ubuntu-18.04-gcc-5
os: ubuntu-18.04
compiler: gcc
version: "5"
- name: ubuntu-18.04-gcc-6
os: ubuntu-18.04
compiler: gcc
version: "6"
- name: ubuntu-18.04-gcc-7
os: ubuntu-18.04
compiler: gcc
version: "7"
- name: ubuntu-18.04-gcc-8
os: ubuntu-18.04
compiler: gcc
version: "8"
- name: ubuntu-18.04-gcc-9
os: ubuntu-18.04
compiler: gcc
version: "9"
- name: ubuntu-18.04-clang-3.5
os: ubuntu-18.04
compiler: clang
version: "3.5"
- name: ubuntu-18.04-clang-3.6
os: ubuntu-18.04
compiler: clang
version: "3.6"
- name: ubuntu-18.04-clang-3.7
os: ubuntu-18.04
compiler: clang
version: "3.7"
- name: ubuntu-18.04-clang-3.8
os: ubuntu-18.04
compiler: clang
version: "3.8"
- name: ubuntu-18.04-clang-3.9
os: ubuntu-18.04
compiler: clang
version: "3.9"
- name: ubuntu-18.04-clang-4.0
os: ubuntu-18.04
compiler: clang
version: "4.0"
- name: ubuntu-18.04-clang-5.0
os: ubuntu-18.04
compiler: clang
version: "5.0"
- name: ubuntu-18.04-clang-6.0
os: ubuntu-18.04
compiler: clang
version: "6.0"
- name: ubuntu-18.04-clang-7
os: ubuntu-18.04
compiler: clang
version: "7"
- name: ubuntu-18.04-clang-8
os: ubuntu-18.04
compiler: clang
version: "8"
- name: ubuntu-18.04-clang-9
os: ubuntu-18.04
compiler: clang
version: "9"
- name: windows-2016-cl
os: windows-2016
compiler: cl
- name: windows-2016-clang-cl
os: windows-2016
compiler: clang-cl
- name: windows-2016-clang
os: windows-2016
compiler: clang
- name: windows-2019-cl
os: windows-2019
compiler: cl
- name: windows-2016-gcc
os: windows-2016
compiler: gcc
- name: windows-2019-clang-cl
os: windows-2019
compiler: clang-cl
- name: windows-2019-clang
os: windows-2019
compiler: clang
- name: windows-2019-gcc
os: windows-2019
compiler: gcc
- name: macOS-10.14-xcode-9.4.1
os: macOS-10.14
compiler: xcode
version: "9.4.1"
- name: macOS-10.14-xcode-10.0
os: macOS-10.14
compiler: xcode
version: "10"
- name: macOS-10.14-xcode-10.1
os: macOS-10.14
compiler: xcode
version: "10.1"
- name: macOS-10.14-Xcode-10.2
os: macOS-10.14
compiler: xcode
version: "10.2"
- name: macOS-10.14-xcode-10.2.1
os: macOS-10.14
compiler: xcode
version: "10.2.1"
- name: macOS-10.14-xcode-10.3
os: macOS-10.14
compiler: xcode
version: "10.3"
- name: macOS-10.14-gcc-7
os: macOS-10.14
compiler: gcc
version: "7"
- name: macOS-10.14-gcc-8
os: macOS-10.14
compiler: gcc
version: "8"
- name: macOS-10.14-gcc-9
os: macOS-10.14
compiler: gcc
version: "9"
steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v1
#- name: Install Dependencies
# env:
# dependency_packages: build-essential g++-5
# run: sudo apt-get update && sudo apt-get -y install ${dependency_packages}
- name: Install (Linux)
if: runner.os == 'Linux'
run: |
# CMake 3.15 allows specifying the generator using the CMAKE_GENERATOR
# environment variable.
curl -sSL https://github.com/Kitware/CMake/releases/download/v3.15.4/cmake-3.15.4-Linux-x86_64.tar.gz -o cmake.tar.gz
sudo tar xf cmake.tar.gz --strip 1 -C /usr/local
# Required for libc6-dbg:i386 and g++-multilib packages which are
# needed for x86 builds.
sudo dpkg --add-architecture i386
# clang-3.7 and earlier are not available in Bionic anymore so we get
# them from the Xenial repositories instead.
sudo add-apt-repository "deb http://dk.archive.ubuntu.com/ubuntu/ xenial main"
sudo add-apt-repository "deb http://dk.archive.ubuntu.com/ubuntu/ xenial universe"
# LLVM 9 is not in Bionic's repositories so we add the official LLVM repository.
if [ "${{ matrix.compiler }}" = "clang" ] && [ "${{ matrix.version }}" = "9" ]; then
sudo add-apt-repository "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-9 main"
fi
sudo apt-get update
# libc6-dbg:i386 is required for running valgrind on x86.
sudo apt-get install -y ninja-build valgrind libc6-dbg:i386
if [ "${{ matrix.compiler }}" = "gcc" ]; then
sudo apt-get install -y g++-${{ matrix.version }} g++-${{ matrix.version }}-multilib
echo "::set-env name=CC::gcc-${{ matrix.version }}"
echo "::set-env name=CXX::g++-${{ matrix.version }}"
else
sudo apt-get install -y clang-${{ matrix.version }} g++-multilib
echo "::set-env name=CC::clang-${{ matrix.version }}"
echo "::set-env name=CXX::clang++-${{ matrix.version }}"
fi
- name: Install (macOS)
if: runner.os == 'macOS'
run: |
brew install cmake ninja
if [ "${{ matrix.compiler }}" = "gcc" ]; then
brew install gcc@${{ matrix.version }}
echo "::set-env name=CC::gcc-${{ matrix.version }}"
echo "::set-env name=CXX::g++-${{ matrix.version }}"
else
sudo xcode-select -switch /Applications/Xcode_${{ matrix.version }}.app
echo "::set-env name=CC::clang"
echo "::set-env name=CXX::clang++"
fi
- name: Install (Windows)
if: runner.os == 'Windows'
shell: powershell
run: |
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
scoop install ninja --global
if ("${{ matrix.compiler }}".StartsWith("clang")) {
scoop install llvm --global
}
if ("${{ matrix.compiler }}" -eq "gcc") {
# Chocolatey GCC is broken on the windows-2019 image.
# See: https://github.com/DaanDeMeyer/doctest/runs/231595515
# See: https://github.community/t5/GitHub-Actions/Something-is-wrong-with-the-chocolatey-installed-version-of-gcc/td-p/32413
scoop install gcc --global
echo "::set-env name=CC::gcc"
echo "::set-env name=CXX::g++"
} elseif ("${{ matrix.compiler }}" -eq "clang") {
echo "::set-env name=CC::clang"
echo "::set-env name=CXX::clang++"
} else {
echo "::set-env name=CC::${{ matrix.compiler }}"
echo "::set-env name=CXX::${{ matrix.compiler }}"
}
# Scoop modifies the PATH so we make the modified PATH global.
echo "::set-env name=PATH::$env:PATH"
- name: Configure
if: runner.os == 'Windows'
run: .github\workflows\vsenv.bat -arch=x64 -host_arch=x64
- name: Create Build Environment
run: cmake -E make_directory ${{runner.workspace}}/inja/build
- name: Build
working-directory: ${{runner.workspace}}/inja/build
shell: bash
run: |
cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE
cmake --build . --config $BUILD_TYPE -j4
- name: Test
working-directory: ${{runner.workspace}}/inja/build
shell: bash
run: |
ctest -C $BUILD_TYPE -V
- name: Build & Test Debug
run: |
cmake -E remove_directory build
cmake -B build -S . -DCMAKE_BUILD_TYPE=Debug
cmake --build build -j2
cd build && ctest -j2 --output-on-failure
- name: Build & Test Release
run: |
cmake -E remove_directory build
cmake -B build -S . -DCMAKE_BUILD_TYPE=Release
cmake --build build -j2
cd build && ctest -j2 --output-on-failure

View File

@@ -1,85 +0,0 @@
language: cpp
dist: trusty
sudo: required
matrix:
include:
- os: linux
compiler: gcc
env: COMPILER=g++-5
addons:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: g++-5
- os: linux
compiler: gcc
env: COMPILER=g++-6
addons:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: g++-6
- os: linux
compiler: gcc
env:
- COMPILER=g++-7
- DOCS="true"
addons:
apt:
sources: ubuntu-toolchain-r-test
packages: g++-7
- os: linux
compiler: gcc
env:
- COMPILER=g++-8
addons:
apt:
sources: ubuntu-toolchain-r-test
packages: g++-8
- os: linux
compiler: gcc
env:
- COMPILER=g++-8
- CXXFLAGS=-std=c++17
addons:
apt:
sources: ubuntu-toolchain-r-test
packages: g++-8
- os: linux
compiler: clang
env: COMPILER=clang++-5.0
addons:
apt:
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-5.0']
packages: ['clang-5.0', 'libstdc++-7-dev']
- os: linux
compiler: clang
env: COMPILER=clang++-6.0
addons:
apt:
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-6.0']
packages: ['clang-6.0', 'libstdc++-7-dev']
- os: osx
osx_image: xcode9
- os: osx
osx_image: xcode10
script:
- if [[ "${COMPILER}" != "" ]]; then export CXX=${COMPILER}; fi
- uname -a
- $CXX --version
- mkdir -p build
- cd build
- cmake -DCMAKE_BUILD_TYPE=Release ..
- cmake --build . -- VERBOSE=1 -j4
- ctest -V
- cd ..

View File

@@ -1,43 +0,0 @@
version: '{build}'
image:
- Visual Studio 2019
platform:
- Win32
- x64
configuration:
- Debug
- Release
environment:
matrix:
# Visual Studio 2015
- TOOLCHAIN: v140
STD: 14
# Visual Studio 2017
- TOOLCHAIN: v141
STD: 14
- TOOLCHAIN: v141
STD: 17
# Visual Studio 2019
- TOOLCHAIN: v142
STD: 14
- TOOLCHAIN: v142
STD: 17
init:
- cmake --version
- msbuild /version
before_build:
- mkdir -p build
- cd build
- cmake .. -A %PLATFORM% -T %TOOLCHAIN% -DCMAKE_CXX_STANDARD=%STD%
build_script:
- cmake --build . --config %CONFIGURATION% -- -verbosity:n
test_script:
- ctest -C %CONFIGURATION% -V -j