1--- 2name: Continuous Integration 3on: [push, pull_request] 4jobs: 5 smoke-test: 6 name: Smoke Test ${{ matrix.cfg }} 7 runs-on: ubuntu-20.04 8 env: 9 DEVELOPER: 1 10 VALGRIND: 0 11 EXPERIMENTAL_FEATURES: 0 12 COMPAT: 1 13 strategy: 14 fail-fast: true 15 matrix: 16 include: 17 - CFG: "make" 18 TEST_CMD: "make" 19 - CFG: "make-O3-check" 20 TEST_CMD: "make check-source check-units installcheck check-gen-updated" 21 COPTFLAGS: "-O3" 22 - CFG: "make-32-bit-nodev-check" 23 ARCH: 32 24 TEST_CMD: "make check-source check-units installcheck" 25 DEVELOPER: 0 26 - CFG: "make-EXPERIMENTAL-check" 27 TEST_CMD: "make check-source check-units installcheck check-gen-updated" 28 EXPERIMENTAL_FEATURES: 1 29 steps: 30 - name: Checkout 31 uses: actions/checkout@v2.0.0 32 33 - name: Fetch tags for auto versioning 34 run: git fetch --prune --unshallow --tags -f 35 36 - name: Set up Python 3.6 37 uses: actions/setup-python@v2 38 with: 39 python-version: 3.6 40 41 - name: Install dependencies 42 run: | 43 bash -x .github/scripts/setup.sh 44 45 - name: Build 46 env: 47 VALGRIND: ${{ matrix.VALGRIND }} 48 DEVELOPER: ${{ matrix.DEVELOPER }} 49 EXPERIMENTAL_FEATURES: ${{ matrix.EXPERIMENTAL_FEATURES }} 50 COMPILER: ${{ matrix.COMPILER }} 51 ARCH: ${{ matrix.ARCH }} 52 COMPAT: ${{ matrix.COMPAT }} 53 PYTEST_PAR: ${{ matrix.PYTEST_PAR }} 54 PYTEST_OPTS: ${{ matrix.PYTEST_OPTS }} 55 COPTFLAGS: ${{ matrix.COPTFLAGS }} 56 NETWORK: ${{ matrix.NETWORK }} 57 TEST_CMD: ${{ matrix.TEST_CMD }} 58 TEST_GROUP_COUNT: ${{ matrix.TEST_GROUP_COUNT }} 59 TEST_GROUP: ${{ matrix.TEST_GROUP }} 60 run: | 61 bash -x .github/scripts/build.sh 62 63 - name: Upload Unit Test Results 64 if: always() 65 uses: actions/upload-artifact@v2 66 with: 67 name: Junit Report ${{ github.run_number }}.${{ matrix.cfg }} 68 path: report.* 69 if-no-files-found: ignore 70 71 proto-test: 72 name: Protocol Test Config 73 runs-on: ubuntu-20.04 74 needs: [smoke-test] 75 env: 76 DEVELOPER: 1 77 EXPERIMENTAL_FEATURES: 1 78 COMPAT: 0 79 PYTEST_PAR: 2 80 TEST_CMD: "make check-protos" 81 TEST_GROUP: 1 82 TEST_GROUP_COUNT: 1 83 strategy: 84 fail-fast: true 85 matrix: 86 include: 87 - {compiler: clang, db: sqlite3} 88 - {compiler: gcc, db: postgres} 89 steps: 90 - name: Checkout 91 uses: actions/checkout@v2.0.0 92 93 - name: Setup Python 3.6 94 uses: actions/setup-python@v2 95 with: 96 python-version: 3.6 97 98 - name: Install dependencies 99 run: | 100 bash -x .github/scripts/setup.sh 101 102 - name: Build 103 env: 104 ARCH: ${{ matrix.arch }} 105 COMPILER: ${{ matrix.compiler }} 106 DB: ${{ matrix.db }} 107 NETWORK: ${{ matrix.network }} 108 TARGET_HOST: ${{ matrix.TARGET_HOST }} 109 VALGRIND: ${{ matrix.valgrind }} 110 run: | 111 bash -x .github/scripts/build.sh 112 113 - name: Upload Unit Test Results 114 if: always() 115 uses: actions/upload-artifact@v2 116 with: 117 name: Junit Report ${{ github.run_number }}.{{ matrix.cfg }} 118 path: report.* 119 120 normal-test: 121 name: Normal Test Config ${{ matrix.cfg }} 122 runs-on: ubuntu-20.04 123 needs: [smoke-test] 124 env: 125 DEVELOPER: 1 126 VALGRIND: 0 127 EXPERIMENTAL_FEATURES: 0 128 COMPAT: 1 129 strategy: 130 fail-fast: false 131 matrix: 132 include: 133 # All of the following will just run `make pytest` 134 - CFG: "clang-fuzzing" 135 COMPILER: clang 136 FUZZING: 1 137 - CFG: "check-dbstmts" 138 COMPILER: gcc 139 TEST_CHECK_DBSTMTS: 1 140 - CFG: "non-DEVELOPER-non-COMPAT-1" 141 DEVELOPER: 0 142 COMPAT: 0 143 TEST_GROUP: 1 144 TEST_GROUP_COUNT: 2 145 - CFG: "non-DEVELOPER-non-COMPAT-2" 146 DEVELOPER: 0 147 COMPAT: 0 148 TEST_GROUP: 2 149 TEST_GROUP_COUNT: 2 150 - CFG: "DUAL_FUND" 151 EXPERIMENTAL_DUAL_FUND: 1 152 DEVELOPER: 1 153 COMPAT: 0 154 # Various other configurations 155 - CFG: "Elements" 156 NETWORK: liquid-regtest 157 - CFG: "PostgreSQL" 158 DB: postgres 159 PYTEST_PAR: 2 160 161 # The cross-compiled versions 162 - CFG: "cross-arm32" 163 ARCH: arm32v7 164 TARGET_HOST: arm-linux-gnueabihf 165 - CFG: "cross-arm64" 166 ARCH: arm64v8 167 TARGET_HOST: aarch64-linux-gnu 168 169 # The experimental feature test 170 - CFG: "EXPERIMENTAL" 171 EXPERIMENTAL_FEATURES: 1 172 steps: 173 - name: Checkout 174 uses: actions/checkout@v2.0.0 175 176 - name: Set up Python 3.6 177 uses: actions/setup-python@v2 178 with: 179 python-version: 3.6 180 181 - name: Install dependencies 182 run: | 183 bash -x .github/scripts/setup.sh 184 185 - name: Build 186 env: 187 VALGRIND: ${{ matrix.VALGRIND }} 188 DEVELOPER: ${{ matrix.DEVELOPER }} 189 EXPERIMENTAL_FEATURES: ${{ matrix.EXPERIMENTAL_FEATURES }} 190 EXPERIMENTAL_DUAL_FUND: ${{ matrix.EXPERIMENTAL_DUAL_FUND }} 191 COMPILER: ${{ matrix.COMPILER }} 192 ARCH: ${{ matrix.ARCH }} 193 COMPAT: ${{ matrix.COMPAT }} 194 FUZZING: ${{ matrix.FUZZING }} 195 PYTEST_PAR: ${{ matrix.PYTEST_PAR }} 196 PYTEST_OPTS: ${{ matrix.PYTEST_OPTS }} 197 NETWORK: ${{ matrix.NETWORK }} 198 TEST_CMD: ${{ matrix.TEST_CMD }} 199 TEST_GROUP_COUNT: ${{ matrix.TEST_GROUP_COUNT }} 200 TEST_GROUP: ${{ matrix.TEST_GROUP }} 201 TEST_DB_PROVIDER: ${{ matrix.DB }} 202 run: | 203 bash -x .github/scripts/build.sh 204 205 - name: Upload Unit Test Results 206 if: always() 207 uses: actions/upload-artifact@v2 208 with: 209 name: Junit Report ${{ github.run_number }}.${{ matrix.cfg }} 210 path: report.* 211 212 valgrind-test: 213 name: Valgrind Test Config ${{ matrix.cfg }} 214 runs-on: ubuntu-20.04 215 needs: [smoke-test] 216 env: 217 DEVELOPER: 1 218 EXPERIMENTAL_FEATURES: 0 219 COMPAT: 1 220 TEST_GROUP_COUNT: 10 221 PYTEST_PAR: 3 222 LABEL: "Valgrind-test" 223 strategy: 224 fail-fast: true 225 matrix: 226 include: 227 - CFG: "valgrind-1" 228 VALGRIND: 1 229 TEST_GROUP: 1 230 TEST_GROUP_COUNT: 10 231 PYTEST_PAR: 3 232 - CFG: "valgrind-2" 233 VALGRIND: 1 234 TEST_GROUP: 2 235 TEST_GROUP_COUNT: 10 236 PYTEST_PAR: 3 237 - CFG: "valgrind-3" 238 VALGRIND: 1 239 TEST_GROUP: 3 240 TEST_GROUP_COUNT: 10 241 PYTEST_PAR: 3 242 - CFG: "valgrind-4" 243 VALGRIND: 1 244 TEST_GROUP: 4 245 TEST_GROUP_COUNT: 10 246 PYTEST_PAR: 3 247 - CFG: "valgrind-5" 248 VALGRIND: 1 249 TEST_GROUP: 5 250 TEST_GROUP_COUNT: 10 251 PYTEST_PAR: 3 252 - CFG: "valgrind-6" 253 VALGRIND: 1 254 TEST_GROUP: 6 255 TEST_GROUP_COUNT: 10 256 PYTEST_PAR: 3 257 - CFG: "valgrind-7" 258 VALGRIND: 1 259 TEST_GROUP: 7 260 TEST_GROUP_COUNT: 10 261 PYTEST_PAR: 3 262 - CFG: "valgrind-8" 263 VALGRIND: 1 264 TEST_GROUP: 8 265 TEST_GROUP_COUNT: 10 266 PYTEST_PAR: 3 267 - CFG: "valgrind-9" 268 VALGRIND: 1 269 TEST_GROUP: 9 270 TEST_GROUP_COUNT: 10 271 PYTEST_PAR: 3 272 - CFG: "valgrind-10" 273 VALGRIND: 1 274 TEST_GROUP: 10 275 TEST_GROUP_COUNT: 10 276 PYTEST_PAR: 3 277 steps: 278 - name: Checkout 279 uses: actions/checkout@v2.0.0 280 281 - name: Set up Python 3.6 282 uses: actions/setup-python@v2 283 with: 284 python-version: 3.6 285 286 - name: Install dependencies 287 run: | 288 bash -x .github/scripts/setup.sh 289 290 - name: Build 291 env: 292 VALGRIND: ${{ matrix.VALGRIND }} 293 DEVELOPER: ${{ matrix.DEVELOPER }} 294 EXPERIMENTAL_FEATURES: ${{ matrix.EXPERIMENTAL_FEATURES }} 295 EXPERIMENTAL_DUAL_FUND: ${{ matrix.EXPERIMENTAL_DUAL_FUND }} 296 COMPILER: ${{ matrix.COMPILER }} 297 ARCH: ${{ matrix.ARCH }} 298 COMPAT: ${{ matrix.COMPAT }} 299 PYTEST_PAR: ${{ matrix.PYTEST_PAR }} 300 PYTEST_OPTS: ${{ matrix.PYTEST_OPTS }} 301 NETWORK: ${{ matrix.NETWORK }} 302 TEST_CMD: ${{ matrix.TEST_CMD }} 303 TEST_GROUP_COUNT: ${{ matrix.TEST_GROUP_COUNT }} 304 TEST_GROUP: ${{ matrix.TEST_GROUP }} 305 run: | 306 bash -x .github/scripts/build.sh 307 308 - name: Upload Unit Test Results 309 if: always() 310 uses: actions/upload-artifact@v2 311 with: 312 name: Junit Report ${{ github.run_number }}.${{ matrix.cfg }} 313 path: report.* 314