rgb-cln/.github/workflows/ci.yaml

251 lines
8.6 KiB
YAML

---
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, FUZZING: 1}
- {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}
# Same as above, but a limited set using V2 open protocol
- {CFG: 24, EXPERIMENTAL_DUAL_FUND: 1, DEVELOPER: 1, COMPAT: 0 }
# 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}
# Experimental config.
- {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 }}
EXPERIMENTAL_DUAL_FUND: ${{ matrix.EXPERIMENTAL_DUAL_FUND }}
COMPILER: ${{ matrix.COMPILER }}
ARCH: ${{ matrix.ARCH }}
COMPAT: ${{ matrix.COMPAT }}
FUZZING: ${{ matrix.FUZZING }}
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}
# Run (some) tests with experimental_dual_fund on
- {CFG: 25, VALGRIND: 1, TEST_GROUP: 1, TEST_GROUP_COUNT: 2, PYTEST_PAR: 3, EXPERIMENTAL_DUAL_FUND: 1}
- {CFG: 26, VALGRIND: 1, TEST_GROUP: 2, TEST_GROUP_COUNT: 2, PYTEST_PAR: 3, EXPERIMENTAL_DUAL_FUND: 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 }}
EXPERIMENTAL_DUAL_FUND: ${{ matrix.EXPERIMENTAL_DUAL_FUND }}
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.*