diff --git a/.github/ci-test-each-commit-exec.sh b/.github/ci-test-each-commit-exec.sh new file mode 100755 index 00000000000..61aa42ea0bb --- /dev/null +++ b/.github/ci-test-each-commit-exec.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash +# +# Copyright (c) The Bitcoin Core developers +# Distributed under the MIT software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. + +export LC_ALL=C.UTF-8 + +set -o errexit -o pipefail -o xtrace + + +echo "Running test-one-commit on $( git log -1 )" + +git config user.email "ci@example.com" +git config user.name "CI" +git merge --no-commit origin/master + +# Use clang++, because it is a bit faster and uses less memory than g++ +CC=clang CXX=clang++ cmake -B build -DWERROR=ON -DWITH_ZMQ=ON -DBUILD_GUI=ON -DBUILD_BENCH=ON -DBUILD_FUZZ_BINARY=ON -DWITH_BDB=ON -DWITH_USDT=ON -DCMAKE_CXX_FLAGS='-Wno-error=unused-member-function' + +cmake --build build -j "$( nproc )" && ctest --output-on-failure --stop-on-failure --test-dir build -j "$( nproc )" + +./build/test/functional/test_runner.py -j $(( $(nproc) * 2 )) --combinedlogslen=99999999 + +git merge --abort diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 12f8b2486b4..8a93b2d3903 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -71,14 +71,15 @@ jobs: EXCLUDE_MERGE_BASE_ANCESTORS=^${MERGE_BASE}^@ fi echo "TEST_BASE=$(git rev-list -n$((${{ env.MAX_COUNT }} + 1)) --reverse HEAD $EXCLUDE_MERGE_BASE_ANCESTORS | head -1)" >> "$GITHUB_ENV" + - run: | + git fetch origin master - run: | sudo apt-get update sudo apt-get install clang ccache build-essential cmake pkgconf python3-zmq libevent-dev libboost-dev libsqlite3-dev libdb++-dev systemtap-sdt-dev libzmq3-dev qtbase5-dev qttools5-dev qttools5-dev-tools qtwayland5 libqrencode-dev -y - name: Compile and run tests run: | # Run tests on commits after the last merge commit and before the PR head commit - # Use clang++, because it is a bit faster and uses less memory than g++ - git rebase --exec "echo Running test-one-commit on \$( git log -1 ) && CC=clang CXX=clang++ cmake -B build -DWERROR=ON -DWITH_ZMQ=ON -DBUILD_GUI=ON -DBUILD_BENCH=ON -DBUILD_FUZZ_BINARY=ON -DWITH_BDB=ON -DWITH_USDT=ON -DCMAKE_CXX_FLAGS='-Wno-error=unused-member-function' && cmake --build build -j $(nproc) && ctest --output-on-failure --stop-on-failure --test-dir build -j $(nproc) && ./build/test/functional/test_runner.py -j $(( $(nproc) * 2 )) --combinedlogslen=99999999" ${{ env.TEST_BASE }} + git rebase --exec "./.github/ci-test-each-commit-exec.sh" ${{ env.TEST_BASE }} macos-native-arm64: name: ${{ matrix.job-name }}