ci.yml 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. name: Continuous Integration
  2. on: [push, pull_request]
  3. concurrency:
  4. group: ${{ github.workflow }}-${{ github.ref }}
  5. cancel-in-progress: true
  6. jobs:
  7. gcc:
  8. name: GCC
  9. runs-on: ubuntu-22.04
  10. strategy:
  11. fail-fast: false
  12. matrix:
  13. include:
  14. - gcc: "5"
  15. - gcc: "6"
  16. - gcc: "7"
  17. - gcc: "8"
  18. - gcc: "9"
  19. - gcc: "10"
  20. cxxflags: -funsigned-char # Issue #1715
  21. - gcc: "11"
  22. - gcc: "12"
  23. steps:
  24. - name: Workaround for actions/runner-images#9491
  25. run: sudo sysctl vm.mmap_rnd_bits=28
  26. - name: Install
  27. run: |
  28. sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5 3B4FE6ACC0B21F32
  29. sudo add-apt-repository -yn 'deb http://archive.ubuntu.com/ubuntu/ xenial main universe'
  30. sudo add-apt-repository -yn 'deb http://archive.ubuntu.com/ubuntu/ bionic main universe'
  31. sudo add-apt-repository -yn 'deb http://archive.ubuntu.com/ubuntu/ focal main universe'
  32. sudo apt-get update
  33. sudo apt-get install -y gcc-${{ matrix.gcc }} g++-${{ matrix.gcc }}
  34. timeout-minutes: 5
  35. - name: Checkout
  36. uses: actions/checkout@v4
  37. timeout-minutes: 1
  38. - name: Configure
  39. run: cmake -DCMAKE_BUILD_TYPE=Debug .
  40. env:
  41. CC: gcc-${{ matrix.gcc }}
  42. CXX: g++-${{ matrix.gcc }}
  43. CXXFLAGS: ${{ matrix.cxxflags }}
  44. timeout-minutes: 1
  45. - name: Build
  46. run: cmake --build .
  47. timeout-minutes: 10
  48. - name: Test
  49. run: ctest --output-on-failure -C Debug .
  50. timeout-minutes: 2
  51. clang:
  52. name: Clang
  53. strategy:
  54. fail-fast: false
  55. matrix:
  56. include:
  57. - clang: "7"
  58. runner: ubuntu-22.04
  59. archive: focal
  60. - clang: "8"
  61. runner: ubuntu-22.04
  62. archive: focal
  63. - clang: "9"
  64. runner: ubuntu-22.04
  65. archive: focal
  66. - clang: "10"
  67. runner: ubuntu-22.04
  68. archive: focal
  69. - clang: "11"
  70. runner: ubuntu-22.04
  71. - clang: "12"
  72. runner: ubuntu-22.04
  73. - clang: "13"
  74. runner: ubuntu-22.04
  75. - clang: 16
  76. - clang: 17
  77. - clang: 18
  78. - clang: 19
  79. runs-on: ${{ matrix.runner || 'ubuntu-latest' }}
  80. steps:
  81. - name: Add archive repositories
  82. if: matrix.archive
  83. run: |
  84. sudo gpg --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32
  85. sudo gpg --export 3B4FE6ACC0B21F32 | sudo tee /etc/apt/trusted.gpg.d/ubuntu-keyring.gpg > /dev/null
  86. sudo add-apt-repository -yn 'deb http://archive.ubuntu.com/ubuntu/ ${{ matrix.archive }} main'
  87. sudo add-apt-repository -yn 'deb http://archive.ubuntu.com/ubuntu/ ${{ matrix.archive }} universe'
  88. - name: Install Clang ${{ matrix.clang }}
  89. run: |
  90. sudo apt-get update
  91. sudo apt-get install -y clang-${{ matrix.clang }}
  92. - name: Install libunwind ${{ matrix.clang }}
  93. if: matrix.clang == 12 # dependency is missing in Ubuntu 22.04
  94. run: sudo apt-get install -y libunwind-${{ matrix.clang }}-dev
  95. - name: Checkout
  96. uses: actions/checkout@v4
  97. - name: Configure
  98. run: cmake -DCMAKE_BUILD_TYPE=Debug .
  99. env:
  100. CC: clang-${{ matrix.clang }}
  101. CXX: clang++-${{ matrix.clang }}
  102. CXXFLAGS: ${{ matrix.cxxflags }}
  103. - name: Build
  104. run: cmake --build .
  105. - name: Test
  106. run: ctest --output-on-failure -C Debug .