--- name: Continuous Integration on: [push, pull_request] jobs: smoke-test: name: Smoke Test Config ${{ matrix.cfg }} runs-on: ubuntu-20.04 env: DEVELOPER: 1 VALGRIND: 0 EXPERIMENTAL_FEATURES: 0 COMPAT: 1 strategy: fail-fast: true matrix: include: # CFG us just an enumeration so we can refer to the configurations more easily - {CFG: 1, TEST_CMD: "make"} - {CFG: 2, TEST_CMD: "make check-source check-units installcheck check-gen-updated", COPTFLAGS: "-O3"} - {CFG: 3, ARCH: 32, TEST_CMD: "make check-source check-units installcheck", DEVELOPER: 0} - {CFG: 4, TEST_CMD: "make check-source check-units installcheck check-gen-updated", EXPERIMENTAL_FEATURES: 1} steps: - name: Checkout uses: actions/checkout@v2.0.0 - name: Set up Python 3.6 uses: actions/setup-python@v2 with: python-version: 3.6 - name: Install dependencies run: | bash -x .github/scripts/setup.sh - name: Build env: VALGRIND: ${{ matrix.VALGRIND }} DEVELOPER: ${{ matrix.DEVELOPER }} EXPERIMENTAL_FEATURES: ${{ matrix.EXPERIMENTAL_FEATURES }} COMPILER: ${{ matrix.COMPILER }} ARCH: ${{ matrix.ARCH }} COMPAT: ${{ matrix.COMPAT }} PYTEST_PAR: ${{ matrix.PYTEST_PAR }} PYTEST_OPTS: ${{ matrix.PYTEST_OPTS }} NO_PYTHON: ${{ matrix.NO_PYTHON }} COPTFLAGS: ${{ matrix.COPTFLAGS }} NETWORK: ${{ matrix.NETWORK }} TEST_CMD: ${{ matrix.TEST_CMD }} TEST_GROUP_COUNT: ${{ matrix.TEST_GROUP_COUNT }} TEST_GROUP: ${{ matrix.TEST_GROUP }} run: | bash -x .github/scripts/build.sh - name: Upload Unit Test Results if: always() uses: actions/upload-artifact@v2 with: name: Junit Report ${{ github.run_number }}.${{ matrix.cfg }} path: report.* if-no-files-found: ignore proto-test: name: Protocol Test Config runs-on: ubuntu-20.04 needs: [smoke-test] env: DEVELOPER: 1 EXPERIMENTAL_FEATURES: 1 COMPAT: 0 PYTEST_PAR: 2 TEST_CMD: "make check-protos" TEST_GROUP: 1 TEST_GROUP_COUNT: 1 strategy: fail-fast: true matrix: compiler: [gcc] db: [postgres, sqlite3] valgrind: [0, 1] network: [regtest] # FIXME: add liquid-regtest include: - {compiler: clang, db: sqlite3, valgrind: 1} - {compiler: clang, db: postgres, valgrind: 1} - {arch: arm32v7, TARGET_HOST: arm-linux-gnueabihf, valgrind: 1, network: regtest} - {arch: arm64v8, TARGET_HOST: aarch64-linux-gnu, valgrind: 1, network: regtest} steps: - name: Checkout uses: actions/checkout@v2.0.0 - name: Setup Python 3.6 uses: actions/setup-python@v2 with: python-version: 3.6 - name: Install dependencies run: | bash -x .github/scripts/setup.sh - name: Build env: ARCH: ${{ matrix.arch }} COMPILER: ${{ matrix.compiler }} DB: ${{ matrix.db }} NETWORK: ${{ matrix.network }} TARGET_HOST: ${{ matrix.TARGET_HOST }} VALGRIND: ${{ matrix.valgrind }} run: | bash -x .github/scripts/build.sh - name: Upload Unit Test Results if: always() uses: actions/upload-artifact@v2 with: name: Junit Report ${{ github.run_number }}.{{ matrix.cfg }} path: report.* normal-test: name: Normal Test Config ${{ matrix.cfg }} runs-on: ubuntu-20.04 needs: [smoke-test] env: DEVELOPER: 1 VALGRIND: 0 EXPERIMENTAL_FEATURES: 0 COMPAT: 1 strategy: fail-fast: false matrix: include: # All of the following will just run `make pytest` - {CFG: 5, COMPILER: clang} - {CFG: 6, COMPILER: gcc, TEST_CHECK_DBSTMTS: 1} - {CFG: 7, DEVELOPER: 0, COMPAT: 0, TEST_GROUP: 1, TEST_GROUP_COUNT: 2} - {CFG: 8, DEVELOPER: 0, COMPAT: 0, TEST_GROUP: 2, TEST_GROUP_COUNT: 2} # Various other configurations - {CFG: 19, NETWORK: liquid-regtest} - {CFG: 20, DB: postgres, PYTEST_PAR: 2} # The cross-compiled versions - {CFG: 21, ARCH: arm32v7, TARGET_HOST: arm-linux-gnueabihf} - {CFG: 22, ARCH: arm64v8, TARGET_HOST: aarch64-linux-gnu} # Disabled for 0.10.0-rc1 # - {CFG: 23, EXPERIMENTAL_FEATURES: 1} steps: - name: Checkout uses: actions/checkout@v2.0.0 - name: Set up Python 3.6 uses: actions/setup-python@v2 with: python-version: 3.6 - name: Install dependencies run: | bash -x .github/scripts/setup.sh - name: Build env: VALGRIND: ${{ matrix.VALGRIND }} DEVELOPER: ${{ matrix.DEVELOPER }} EXPERIMENTAL_FEATURES: ${{ matrix.EXPERIMENTAL_FEATURES }} COMPILER: ${{ matrix.COMPILER }} ARCH: ${{ matrix.ARCH }} COMPAT: ${{ matrix.COMPAT }} PYTEST_PAR: ${{ matrix.PYTEST_PAR }} PYTEST_OPTS: ${{ matrix.PYTEST_OPTS }} NETWORK: ${{ matrix.NETWORK }} TEST_CMD: ${{ matrix.TEST_CMD }} TEST_GROUP_COUNT: ${{ matrix.TEST_GROUP_COUNT }} TEST_GROUP: ${{ matrix.TEST_GROUP }} run: | bash -x .github/scripts/build.sh - name: Upload Unit Test Results if: always() uses: actions/upload-artifact@v2 with: name: Junit Report ${{ github.run_number }}.${{ matrix.cfg }} path: report.* valgrind-test: name: Valgrind Test Config ${{ matrix.cfg }} runs-on: ubuntu-20.04 needs: [smoke-test] env: DEVELOPER: 1 EXPERIMENTAL_FEATURES: 0 COMPAT: 1 TEST_GROUP_COUNT: 10 PYTEST_PAR: 3 strategy: fail-fast: true matrix: include: - {CFG: 9, VALGRIND: 1, TEST_GROUP: 1, TEST_GROUP_COUNT: 10, PYTEST_PAR: 3} - {CFG: 10, VALGRIND: 1, TEST_GROUP: 2, TEST_GROUP_COUNT: 10, PYTEST_PAR: 3} - {CFG: 11, VALGRIND: 1, TEST_GROUP: 3, TEST_GROUP_COUNT: 10, PYTEST_PAR: 3} - {CFG: 12, VALGRIND: 1, TEST_GROUP: 4, TEST_GROUP_COUNT: 10, PYTEST_PAR: 3} - {CFG: 13, VALGRIND: 1, TEST_GROUP: 5, TEST_GROUP_COUNT: 10, PYTEST_PAR: 3} - {CFG: 14, VALGRIND: 1, TEST_GROUP: 6, TEST_GROUP_COUNT: 10, PYTEST_PAR: 3} - {CFG: 15, VALGRIND: 1, TEST_GROUP: 7, TEST_GROUP_COUNT: 10, PYTEST_PAR: 3} - {CFG: 16, VALGRIND: 1, TEST_GROUP: 8, TEST_GROUP_COUNT: 10, PYTEST_PAR: 3} - {CFG: 17, VALGRIND: 1, TEST_GROUP: 9, TEST_GROUP_COUNT: 10, PYTEST_PAR: 3} - {CFG: 18, VALGRIND: 1, TEST_GROUP: 10, TEST_GROUP_COUNT: 10, PYTEST_PAR: 3} steps: - name: Checkout uses: actions/checkout@v2.0.0 - name: Set up Python 3.6 uses: actions/setup-python@v2 with: python-version: 3.6 - name: Install dependencies run: | bash -x .github/scripts/setup.sh - name: Build env: VALGRIND: ${{ matrix.VALGRIND }} DEVELOPER: ${{ matrix.DEVELOPER }} EXPERIMENTAL_FEATURES: ${{ matrix.EXPERIMENTAL_FEATURES }} COMPILER: ${{ matrix.COMPILER }} ARCH: ${{ matrix.ARCH }} COMPAT: ${{ matrix.COMPAT }} PYTEST_PAR: ${{ matrix.PYTEST_PAR }} PYTEST_OPTS: ${{ matrix.PYTEST_OPTS }} NETWORK: ${{ matrix.NETWORK }} TEST_CMD: ${{ matrix.TEST_CMD }} TEST_GROUP_COUNT: ${{ matrix.TEST_GROUP_COUNT }} TEST_GROUP: ${{ matrix.TEST_GROUP }} run: | bash -x .github/scripts/build.sh - name: Upload Unit Test Results if: always() uses: actions/upload-artifact@v2 with: name: Junit Report ${{ github.run_number }}.${{ matrix.cfg }} path: report.*