--- name: Continuous Integration on: push: branches: - "master" pull_request: jobs: smoke-test: name: Smoke Test ${{ matrix.cfg }} runs-on: ubuntu-20.04 timeout-minutes: 300 env: DEVELOPER: 1 VALGRIND: 0 EXPERIMENTAL_FEATURES: 0 COMPAT: 1 strategy: fail-fast: true matrix: include: - CFG: "make and unit test w/ VALGRIND" TEST_CMD: "make default check-source" VALGRIND: 1 - CFG: "make-O3-check" TEST_CMD: "make check-source check-units installcheck check-gen-updated" COPTFLAGS: "-O3" - CFG: "make-32-bit-nodev-check" ARCH: 32 TEST_CMD: "make check-source check-units installcheck" DEVELOPER: 0 - CFG: "make-EXPERIMENTAL-check" 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.7 uses: actions/setup-python@v2 with: python-version: 3.7 - 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 }} 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 check-dock: name: Check core-lightning doc runs-on: ubuntu-20.04 env: DEVELOPER: 1 VALGRIND: 0 EXPERIMENTAL_FEATURES: 0 COMPAT: 1 steps: - name: Checkout uses: actions/checkout@v2.0.0 - name: Set up Python 3.7 uses: actions/setup-python@v2 with: python-version: 3.7 - name: Install dependencies run: bash -x .github/scripts/setup.sh - name: Check Doc run: | pip install mako ./configure make check-doc proto-test: name: Protocol Test Config runs-on: ubuntu-20.04 timeout-minutes: 300 needs: [smoke-test] strategy: fail-fast: true matrix: include: - {compiler: clang, db: sqlite3} - {compiler: gcc, db: postgres} steps: - name: Checkout uses: actions/checkout@v2.0.0 - name: Build and run run: | docker build -f contrib/docker/Dockerfile.ubuntu -t cln-ci-ubuntu . docker run -e ARCH=${{ matrix.arch }} \ -e COMPILER=${{ matrix.compiler }} \ -e DB=${{ matrix.db }} \ -e NETWORK=${{ matrix.network }} \ -e TARGET_HOST=${{ matrix.TARGET_HOST }} \ -e VALGRIND=${{ matrix.valgrind }} \ -e DEVELOPER=1 \ -e EXPERIMENTAL_FEATURES=1 \ -e COMPA=0 \ -e PYTEST_PAR=2 \ -e PYTEST_OPTS="--timeout=300" \ -e TEST_CMD="make check-protos" \ -e TEST_GROUP=1 \ -e TEST_GROUP_COUNT=1 \ cln-ci-ubuntu - 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: "clang-fuzzing" COMPILER: clang FUZZING: 1 - CFG: "check-dbstmts" COMPILER: gcc TEST_CHECK_DBSTMTS: 1 - CFG: "non-DEVELOPER-non-COMPAT-1" DEVELOPER: 0 COMPAT: 0 TEST_GROUP: 1 TEST_GROUP_COUNT: 2 - CFG: "non-DEVELOPER-non-COMPAT-2" DEVELOPER: 0 COMPAT: 0 TEST_GROUP: 2 TEST_GROUP_COUNT: 2 - CFG: "DUAL_FUND" EXPERIMENTAL_DUAL_FUND: 1 DEVELOPER: 1 COMPAT: 0 # Various other configurations - CFG: "Elements" NETWORK: liquid-regtest - CFG: "PostgreSQL" DB: postgres PYTEST_PAR: 2 # The cross-compiled versions - CFG: "cross-arm32" ARCH: arm32v7 TARGET_HOST: arm-linux-gnueabihf - CFG: "cross-arm64" ARCH: arm64v8 TARGET_HOST: aarch64-linux-gnu # The experimental feature test - CFG: "EXPERIMENTAL" EXPERIMENTAL_FEATURES: 1 steps: - name: Checkout uses: actions/checkout@v2.0.0 - name: Set up Python 3.7 uses: actions/setup-python@v2 with: python-version: 3.7 - 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_CHECK_DBSTMTS: ${{ matrix.TEST_CHECK_DBSTMTS }} TEST_CMD: ${{ matrix.TEST_CMD }} TEST_GROUP_COUNT: ${{ matrix.TEST_GROUP_COUNT }} TEST_GROUP: ${{ matrix.TEST_GROUP }} TEST_DB_PROVIDER: ${{ matrix.DB }} 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 LABEL: "Valgrind-test" strategy: fail-fast: true matrix: include: - CFG: "valgrind-1" VALGRIND: 1 TEST_GROUP: 1 TEST_GROUP_COUNT: 10 PYTEST_PAR: 3 - CFG: "valgrind-2" VALGRIND: 1 TEST_GROUP: 2 TEST_GROUP_COUNT: 10 PYTEST_PAR: 3 - CFG: "valgrind-3" VALGRIND: 1 TEST_GROUP: 3 TEST_GROUP_COUNT: 10 PYTEST_PAR: 3 - CFG: "valgrind-4" VALGRIND: 1 TEST_GROUP: 4 TEST_GROUP_COUNT: 10 PYTEST_PAR: 3 - CFG: "valgrind-5" VALGRIND: 1 TEST_GROUP: 5 TEST_GROUP_COUNT: 10 PYTEST_PAR: 3 - CFG: "valgrind-6" VALGRIND: 1 TEST_GROUP: 6 TEST_GROUP_COUNT: 10 PYTEST_PAR: 3 - CFG: "valgrind-7" VALGRIND: 1 TEST_GROUP: 7 TEST_GROUP_COUNT: 10 PYTEST_PAR: 3 - CFG: "valgrind-8" VALGRIND: 1 TEST_GROUP: 8 TEST_GROUP_COUNT: 10 PYTEST_PAR: 3 - CFG: "valgrind-9" VALGRIND: 1 TEST_GROUP: 9 TEST_GROUP_COUNT: 10 PYTEST_PAR: 3 - CFG: "valgrind-10" 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.7 uses: actions/setup-python@v2 with: python-version: 3.7 - 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.* rust-test: name: Rust Test Config runs-on: ubuntu-20.04 needs: [smoke-test] env: DEVELOPER: 1 RUST: 1 VALGRIND: 0 # Run only the rust tests, others are not impacted. TEST_CMD: "make -j 8 && pytest -vvv tests/test_cln_rs.py" steps: - name: Checkout uses: actions/checkout@v2.0.0 - name: Set up Python 3.7 uses: actions/setup-python@v2 with: python-version: 3.7 - name: Install dependencies run: | bash -x .github/scripts/setup.sh - name: Build 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.*