Przeglądaj źródła

CI: move to GitHub Actions

Benoit Blanchon 1 dzień temu
rodzic
commit
a6f2330c32
3 zmienionych plików z 137 dodań i 148 usunięć
  1. 115 0
      .github/workflows/ci.yml
  2. 0 134
      .travis.yml
  3. 22 14
      appveyor.yml

+ 115 - 0
.github/workflows/ci.yml

@@ -0,0 +1,115 @@
+name: Continuous Integration
+
+on: [push, pull_request]
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  gcc:
+    name: GCC
+    runs-on: ubuntu-22.04
+    strategy:
+      fail-fast: false
+      matrix:
+        include:
+          - gcc: "5"
+          - gcc: "6"
+          - gcc: "7"
+          - gcc: "8"
+          - gcc: "9"
+          - gcc: "10"
+            cxxflags: -funsigned-char # Issue #1715
+          - gcc: "11"
+          - gcc: "12"
+    steps:
+      - name: Workaround for actions/runner-images#9491
+        run: sudo sysctl vm.mmap_rnd_bits=28
+
+      - name: Install
+        run: |
+          sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5 3B4FE6ACC0B21F32
+          sudo add-apt-repository -yn 'deb http://archive.ubuntu.com/ubuntu/ xenial main universe'
+          sudo add-apt-repository -yn 'deb http://archive.ubuntu.com/ubuntu/ bionic main universe'
+          sudo add-apt-repository -yn 'deb http://archive.ubuntu.com/ubuntu/ focal main universe'
+          sudo apt-get update
+          sudo apt-get install -y gcc-${{ matrix.gcc }} g++-${{ matrix.gcc }}
+        timeout-minutes: 5
+
+      - name: Checkout
+        uses: actions/checkout@v4
+        timeout-minutes: 1
+
+      - name: Configure
+        run: cmake -DCMAKE_BUILD_TYPE=Debug .
+        env:
+          CC: gcc-${{ matrix.gcc }}
+          CXX: g++-${{ matrix.gcc }}
+          CXXFLAGS: ${{ matrix.cxxflags }}
+        timeout-minutes: 1
+
+      - name: Build
+        run: cmake --build .
+        timeout-minutes: 10
+
+      - name: Test
+        run: ctest --output-on-failure -C Debug .
+        timeout-minutes: 2
+
+  clang:
+    name: Clang
+    strategy:
+      fail-fast: false
+      matrix:
+        include:
+          - clang: "7"
+            runner: ubuntu-22.04
+            archive: focal
+          - clang: "8"
+            runner: ubuntu-22.04
+            archive: focal
+          - clang: "9"
+            runner: ubuntu-22.04
+            archive: focal
+          - clang: "10"
+            runner: ubuntu-22.04
+            archive: focal
+          - clang: "11"
+            runner: ubuntu-22.04
+          - clang: "12"
+            runner: ubuntu-22.04
+          - clang: "13"
+            runner: ubuntu-22.04
+          - clang: 16
+          - clang: 17
+          - clang: 18
+          - clang: 19
+    runs-on: ${{ matrix.runner || 'ubuntu-latest' }}
+    steps:
+      - name: Add archive repositories
+        if: matrix.archive
+        run: |
+          sudo gpg --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32
+          sudo gpg --export 3B4FE6ACC0B21F32 | sudo tee /etc/apt/trusted.gpg.d/ubuntu-keyring.gpg > /dev/null
+          sudo add-apt-repository -yn 'deb http://archive.ubuntu.com/ubuntu/ ${{ matrix.archive }} main'
+          sudo add-apt-repository -yn 'deb http://archive.ubuntu.com/ubuntu/ ${{ matrix.archive }} universe'
+      - name: Install Clang ${{ matrix.clang }}
+        run: |
+          sudo apt-get update
+          sudo apt-get install -y clang-${{ matrix.clang }}
+      - name: Install libunwind ${{ matrix.clang }}
+        if: matrix.clang == 12 # dependency is missing in Ubuntu 22.04
+        run: sudo apt-get install -y libunwind-${{ matrix.clang }}-dev
+      - name: Checkout
+        uses: actions/checkout@v4
+      - name: Configure
+        run: cmake -DCMAKE_BUILD_TYPE=Debug .
+        env:
+          CC: clang-${{ matrix.clang }}
+          CXX: clang++-${{ matrix.clang }}
+          CXXFLAGS: ${{ matrix.cxxflags }}
+      - name: Build
+        run: cmake --build .
+      - name: Test
+        run: ctest --output-on-failure -C Debug .

+ 0 - 134
.travis.yml

@@ -1,134 +0,0 @@
-sudo: false
-language: cpp
-matrix:
-  include:
-    - compiler: gcc
-      addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test']
-          packages: ['g++-4.4']
-      env: SCRIPT=cmake GCC=4.4
-    - compiler: gcc
-      addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test']
-          packages: ['g++-4.6']
-      env: SCRIPT=cmake GCC=4.6
-    - compiler: gcc
-      addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test']
-          packages: ['g++-4.7']
-      env: SCRIPT=cmake GCC=4.7
-    - compiler: gcc
-      addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test']
-          packages: ['g++-4.8']
-      env: SCRIPT=cmake GCC=4.8 SANITIZE=address
-    - compiler: gcc
-      addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test']
-          packages: ['g++-4.9']
-      env: SCRIPT=cmake GCC=4.9 SANITIZE=leak
-    - compiler: gcc
-      addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test']
-          packages: ['g++-5']
-      env: SCRIPT=cmake GCC=5
-    - compiler: gcc
-      addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test']
-          packages: ['g++-6']
-      env: SCRIPT=cmake GCC=6
-    - compiler: gcc
-      addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test']
-          packages: ['g++-7']
-      env: SCRIPT=cmake GCC=7
-    - compiler: clang
-      env: SCRIPT=cmake
-    - compiler: clang
-      addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test','llvm-toolchain-precise-3.5']
-          packages: ['clang-3.5']
-      env: SCRIPT=cmake CLANG=3.5 SANITIZE=address
-    - compiler: clang
-      addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test','llvm-toolchain-precise-3.6']
-          packages: ['clang-3.6']
-      env: SCRIPT=cmake CLANG=3.6 SANITIZE=leak
-    - compiler: clang
-      addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test','llvm-toolchain-precise-3.7']
-          packages: ['clang-3.7']
-      env: SCRIPT=cmake CLANG=3.7
-    - compiler: clang
-      addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test','llvm-toolchain-precise-3.8']
-          packages: ['clang-3.8']
-      env: SCRIPT=cmake CLANG=3.8 SANITIZE=undefined
-    - compiler: clang
-      addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test','llvm-toolchain-trusty-3.9']
-          packages: ['clang-3.9']
-      env: SCRIPT=cmake CLANG=3.9
-    - compiler: clang
-      addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test','llvm-toolchain-trusty-4.0']
-          packages: ['clang-4.0']
-      env: SCRIPT=cmake CLANG=4.0
-    - compiler: clang
-      addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test','llvm-toolchain-trusty-5.0']
-          packages: ['clang-5.0']
-      env: SCRIPT=cmake CLANG=5.0
-    - compiler: clang
-      addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test','llvm-toolchain-trusty-6.0']
-          packages: ['clang-6.0']
-      env: SCRIPT=cmake CLANG=6.0
-    - compiler: gcc
-      env: SCRIPT=coverage
-    - os: osx
-      osx_image: xcode7.3
-      compiler: clang
-      env: SCRIPT=cmake
-    - os: osx
-      osx_image: xcode8.3
-      compiler: clang
-      env: SCRIPT=cmake
-    - os: osx
-      osx_image: xcode9.4
-      compiler: clang
-      env: SCRIPT=cmake
-    - os: osx
-      osx_image: xcode10
-      compiler: clang
-      env: SCRIPT=cmake SANITIZE=address
-    - env: SCRIPT=arduino VERSION=1.6.7 BOARD=arduino:avr:uno
-    - env: SCRIPT=arduino VERSION=1.8.2 BOARD=arduino:avr:uno
-    - env: SCRIPT=platformio BOARD=uno
-    - env: SCRIPT=platformio BOARD=esp01
-    - compiler: clang
-      addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test','llvm-toolchain-trusty-6.0']
-          packages: ['clang-6.0','llvm-6.0']
-      env: SCRIPT=fuzz CLANG=6.0
-cache:
-  directories:
-    - "~/.platformio"
-script: scripts/travis/$SCRIPT.sh

+ 22 - 14
appveyor.yml

@@ -1,20 +1,28 @@
-version: 5.13.5.{build}
+version: 7.4.2.{build}
 environment:
   matrix:
-  - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
-    CMAKE_GENERATOR: Visual Studio 15 2017
-  - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
-    CMAKE_GENERATOR: Visual Studio 14 2015
-  - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
-    CMAKE_GENERATOR: Visual Studio 12 2013
-  - CMAKE_GENERATOR: Visual Studio 11 2012
-  - CMAKE_GENERATOR: Visual Studio 10 2010
-  - CMAKE_GENERATOR: MinGW Makefiles
+    - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
+      CMAKE_GENERATOR: Visual Studio 17 2022
+    - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
+      CMAKE_GENERATOR: Visual Studio 16 2019
+    - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
+      CMAKE_GENERATOR: Visual Studio 15 2017
+    - CMAKE_GENERATOR: Ninja
+      MINGW32: i686-6.3.0-posix-dwarf-rt_v5-rev1 # MinGW-w64 6.3.0 i686
+    - CMAKE_GENERATOR: Ninja
+      MINGW64: x86_64-6.3.0-posix-seh-rt_v5-rev1 # MinGW-w64 6.3.0 x86_64
+    - CMAKE_GENERATOR: Ninja
+      MINGW64: x86_64-7.3.0-posix-seh-rt_v5-rev0 # MinGW-w64 7.3.0 x86_64
+    - CMAKE_GENERATOR: Ninja
+      MINGW64: x86_64-8.1.0-posix-seh-rt_v6-rev0 # MinGW-w64 8.1.0 x86_64
 configuration: Debug
 before_build:
-- set PATH=C:\MinGW\bin;%PATH:C:\Program Files\Git\usr\bin;=% # Workaround for CMake not wanting sh.exe on PATH for MinGW
-- cmake -DCMAKE_BUILD_TYPE=%CONFIGURATION% -G "%CMAKE_GENERATOR%" .
+  - set PATH=%PATH:C:\Program Files\Git\usr\bin;=% # Workaround for CMake not wanting sh.exe on PATH for MinGW
+  - if defined MINGW set PATH=C:\%MINGW%\bin;%PATH%
+  - if defined MINGW32 set PATH=C:\mingw-w64\%MINGW32%\mingw32\bin;%PATH%
+  - if defined MINGW64 set PATH=C:\mingw-w64\%MINGW64%\mingw64\bin;%PATH%
+  - cmake -DCMAKE_BUILD_TYPE=%CONFIGURATION% -G "%CMAKE_GENERATOR%" .
 build_script:
-- cmake --build . --config %CONFIGURATION%
+  - cmake --build . --config %CONFIGURATION%
 test_script:
-- ctest --output-on-failure .
+  - ctest -C %CONFIGURATION% --output-on-failure .