mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-02-04 04:31:41 +00:00
f00345727b8d2bf73409db5cd342e476671e6425 doc: Update `dependencies.md` for Qt 6 (Hennadii Stepanov) 80b917991ed7ff931f0a9211cebf859f674776c4 build, msvc: Update `vcpkg.json` for Qt 6 (Hennadii Stepanov) 30dd1f1644e0441b5310f1eceecfd6a5abc45f68 ci: Update for Qt 6 (Hennadii Stepanov) 629d292f4d846978c682c5f497240c62d62f4bd1 test: Update sanitizer suppressions for Qt 6 (Hennadii Stepanov) 551e13abf82522bad7fdde4ff4bd15d2c8f88b23 guix: Adjust for Qt 6 (Hennadii Stepanov) c3e9bd086c498e9f1cbdc505949cb17ac1b39f7e qt: Fix compiling for Windows (Hennadii Stepanov) ab399c4db2e98aee8e01323c4c6cca48b520dc7f depends: Add `native_qt` package (Hennadii Stepanov) 248613eb3ee034bf143821a51635e697dc114e6c depends: Factor out Qt modules' details (Hennadii Stepanov) 0268f52a4cd2b7aa63934526437bcf6912e47d3c depends: Introduce customizable `$(package)_patches_path` variables (Hennadii Stepanov) 5e794e62024eef612e1fbb71c76ea54d17435c14 depends: Bump `qt` package up to 6.7.3 (Hennadii Stepanov) 6d4214925fadc36d26aa58903db5788c742e68c6 cmake: Require Qt 6 to build GUI (Hennadii Stepanov) Pull request description: The currently used Qt 5.15 is approaching [EOL](https://www.qt.io/blog/qt-5.15-extended-support-for-subscription-license-holders) and will reach it before the Bitcoin Core v30 release. The recent migration of the build system to CMake makes it possible to switch to Qt 6. This PR updates the OS runtime compatibility requirements for the Bitcoin Core GUI as follows: ### 1. Linux Starting with Qt 6.5.0, the `libxcb-cursor0` package is required to be installed at runtime. ### 2. Windows Cross-compiling does not support LTO. We have to re-add it in a follow-up. A new style plugin causes minor visual glitches, such as  which will be fixed in follow-ups. ### 3. macOS `bitcoin-qt` now uses the [Metal](https://developer.apple.com/metal/) backend. --- **IMPORTANT.** Don't forget to install [Ninja](https://ninja-build.org/). --- For historical context, please refer to: - https://github.com/bitcoin/bitcoin/issues/20627 - https://github.com/bitcoin/bitcoin/pull/24798 --- UPD 2024-10-09. Qt 6.8 has been [released](https://www.qt.io/blog/qt-6.8-released), but it has some [drawbacks](https://github.com/bitcoin/bitcoin/pull/30997#issuecomment-2402990346) for us. As a result, this PR will stick to Qt 6.7. UPD 2025-03-18: [Standard support for Qt 5.15 will end after 26th of May 2025](https://www.qt.io/blog/extended-security-maintenance-for-qt-5.15-begins-may-2025) ACKs for top commit: laanwj: re-ACK f00345727b8d2bf73409db5cd342e476671e6425 hodlinator: re-ACK f00345727b8d2bf73409db5cd342e476671e6425 Tree-SHA512: 367f722e6c3ea4700b5395871c40b6df8c8062fdc822107090449ea4ae4ad2db75cc53a982a678f4c48ce8f9b2d43ed10e6d23b06165ab78713f161db712d895
419 lines
18 KiB
YAML
419 lines
18 KiB
YAML
# Copyright (c) 2023-present The Bitcoin Core developers
|
|
# Distributed under the MIT software license, see the accompanying
|
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
name: CI
|
|
on:
|
|
# See: https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#pull_request.
|
|
pull_request:
|
|
# See: https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#push.
|
|
push:
|
|
branches:
|
|
- '**'
|
|
tags-ignore:
|
|
- '**'
|
|
|
|
concurrency:
|
|
group: ${{ github.event_name != 'pull_request' && github.run_id || github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
CI_FAILFAST_TEST_LEAVE_DANGLING: 1 # GHA does not care about dangling processes and setting this variable avoids killing the CI script itself on error
|
|
MAKEJOBS: '-j10'
|
|
|
|
defaults:
|
|
run:
|
|
# Enforce fail-fast behavior for all platforms.
|
|
# See: https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#exit-codes-and-error-action-preference
|
|
shell: bash
|
|
|
|
jobs:
|
|
test-each-commit:
|
|
name: 'test each commit'
|
|
runs-on: ubuntu-24.04
|
|
if: github.event_name == 'pull_request' && github.event.pull_request.commits != 1
|
|
timeout-minutes: 360 # Use maximum time, see https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#jobsjob_idtimeout-minutes. Assuming a worst case time of 1 hour per commit, this leads to a --max-count=6 below.
|
|
env:
|
|
MAX_COUNT: 6
|
|
steps:
|
|
- name: Determine fetch depth
|
|
run: echo "FETCH_DEPTH=$((${{ github.event.pull_request.commits }} + 2))" >> "$GITHUB_ENV"
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha }}
|
|
fetch-depth: ${{ env.FETCH_DEPTH }}
|
|
- name: Determine commit range
|
|
run: |
|
|
# Checkout HEAD~ and find the test base commit
|
|
# Checkout HEAD~ because it would be wasteful to rerun tests on the PR
|
|
# head commit that are already run by other jobs.
|
|
git checkout HEAD~
|
|
# Figure out test base commit by listing ancestors of HEAD, excluding
|
|
# ancestors of the most recent merge commit, limiting the list to the
|
|
# newest MAX_COUNT ancestors, ordering it from oldest to newest, and
|
|
# taking the first one.
|
|
#
|
|
# If the branch contains up to MAX_COUNT ancestor commits after the
|
|
# most recent merge commit, all of those commits will be tested. If it
|
|
# contains more, only the most recent MAX_COUNT commits will be
|
|
# tested.
|
|
#
|
|
# In the command below, the ^@ suffix is used to refer to all parents
|
|
# of the merge commit as described in:
|
|
# https://git-scm.com/docs/git-rev-parse#_other_rev_parent_shorthand_notations
|
|
# and the ^ prefix is used to exclude these parents and all their
|
|
# ancestors from the rev-list output as described in:
|
|
# https://git-scm.com/docs/git-rev-list
|
|
MERGE_BASE=$(git rev-list -n1 --merges HEAD)
|
|
EXCLUDE_MERGE_BASE_ANCESTORS=
|
|
# MERGE_BASE can be empty due to limited fetch-depth
|
|
if test -n "$MERGE_BASE"; then
|
|
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: |
|
|
sudo apt-get update
|
|
sudo apt-get install clang ccache build-essential cmake ninja-build pkgconf python3-zmq libevent-dev libboost-dev libsqlite3-dev libdb++-dev systemtap-sdt-dev libzmq3-dev qt6-base-dev qt6-tools-dev qt6-l10n-tools 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 }}
|
|
|
|
macos-native-arm64:
|
|
name: ${{ matrix.job-name }}
|
|
# Use any image to support the xcode-select below, but hardcode version to avoid silent upgrades (and breaks).
|
|
# See: https://github.com/actions/runner-images#available-images.
|
|
runs-on: macos-14
|
|
|
|
# When a contributor maintains a fork of the repo, any pull request they make
|
|
# to their own fork, or to the main repository, will trigger two CI runs:
|
|
# one for the branch push and one for the pull request.
|
|
# This can be avoided by setting SKIP_BRANCH_PUSH=true as a custom env variable
|
|
# in Github repository settings.
|
|
if: ${{ vars.SKIP_BRANCH_PUSH != 'true' || github.event_name == 'pull_request' }}
|
|
|
|
timeout-minutes: 120
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
job-type: [standard, fuzz]
|
|
include:
|
|
- job-type: standard
|
|
file-env: './ci/test/00_setup_env_mac_native.sh'
|
|
job-name: 'macOS 14 native, arm64, no depends, sqlite only, gui'
|
|
- job-type: fuzz
|
|
file-env: './ci/test/00_setup_env_mac_native_fuzz.sh'
|
|
job-name: 'macOS 14 native, arm64, fuzz'
|
|
|
|
env:
|
|
DANGER_RUN_CI_ON_HOST: 1
|
|
BASE_ROOT_DIR: ${{ github.workspace }}
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Clang version
|
|
run: |
|
|
# Use the earliest Xcode supported by the version of macOS denoted in
|
|
# doc/release-notes-empty-template.md and providing at least the
|
|
# minimum clang version denoted in doc/dependencies.md.
|
|
# See: https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes
|
|
sudo xcode-select --switch /Applications/Xcode_15.0.app
|
|
clang --version
|
|
|
|
- name: Install Homebrew packages
|
|
env:
|
|
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
|
|
run: |
|
|
# A workaround for "The `brew link` step did not complete successfully" error.
|
|
brew install --quiet python@3 || brew link --overwrite python@3
|
|
brew install --quiet coreutils ninja pkgconf gnu-getopt ccache boost libevent zeromq qt@6 qrencode
|
|
|
|
- name: Set Ccache directory
|
|
run: echo "CCACHE_DIR=${RUNNER_TEMP}/ccache_dir" >> "$GITHUB_ENV"
|
|
|
|
- name: Restore Ccache cache
|
|
id: ccache-cache
|
|
uses: actions/cache/restore@v4
|
|
with:
|
|
path: ${{ env.CCACHE_DIR }}
|
|
key: ${{ github.job }}-${{ matrix.job-type }}-ccache-${{ github.run_id }}
|
|
restore-keys: ${{ github.job }}-${{ matrix.job-type }}-ccache-
|
|
|
|
- name: CI script
|
|
run: ./ci/test_run_all.sh
|
|
env:
|
|
FILE_ENV: ${{ matrix.file-env }}
|
|
|
|
- name: Save Ccache cache
|
|
uses: actions/cache/save@v4
|
|
if: github.event_name != 'pull_request' && steps.ccache-cache.outputs.cache-hit != 'true'
|
|
with:
|
|
path: ${{ env.CCACHE_DIR }}
|
|
# https://github.com/actions/cache/blob/main/tips-and-workarounds.md#update-a-cache
|
|
key: ${{ github.job }}-${{ matrix.job-type }}-ccache-${{ github.run_id }}
|
|
|
|
windows-native:
|
|
name: ${{ matrix.job-name }}
|
|
runs-on: windows-2022
|
|
|
|
if: ${{ vars.SKIP_BRANCH_PUSH != 'true' || github.event_name == 'pull_request' }}
|
|
|
|
env:
|
|
PYTHONUTF8: 1
|
|
TEST_RUNNER_TIMEOUT_FACTOR: 40
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
job-type: [standard, fuzz]
|
|
include:
|
|
- job-type: standard
|
|
generate-options: '-DBUILD_GUI=ON -DWITH_BDB=ON -DWITH_ZMQ=ON -DBUILD_BENCH=ON -DWERROR=ON'
|
|
job-name: 'Windows native, VS 2022'
|
|
- job-type: fuzz
|
|
generate-options: '-DVCPKG_MANIFEST_NO_DEFAULT_FEATURES=ON -DVCPKG_MANIFEST_FEATURES="wallet" -DBUILD_GUI=OFF -DBUILD_FOR_FUZZING=ON -DWERROR=ON'
|
|
job-name: 'Windows native, fuzz, VS 2022'
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Configure Developer Command Prompt for Microsoft Visual C++
|
|
# Using microsoft/setup-msbuild is not enough.
|
|
uses: ilammy/msvc-dev-cmd@v1
|
|
with:
|
|
arch: x64
|
|
|
|
- name: Get tool information
|
|
shell: pwsh
|
|
run: |
|
|
cmake -version | Tee-Object -FilePath "cmake_version"
|
|
Write-Output "---"
|
|
msbuild -version | Tee-Object -FilePath "msbuild_version"
|
|
$env:VCToolsVersion | Tee-Object -FilePath "toolset_version"
|
|
py -3 --version
|
|
Write-Host "PowerShell version $($PSVersionTable.PSVersion.ToString())"
|
|
bash --version
|
|
|
|
- name: Using vcpkg with MSBuild
|
|
run: |
|
|
echo "set(VCPKG_BUILD_TYPE release)" >> "${VCPKG_INSTALLATION_ROOT}/triplets/x64-windows.cmake"
|
|
echo "set(VCPKG_BUILD_TYPE release)" >> "${VCPKG_INSTALLATION_ROOT}/triplets/x64-windows-static.cmake"
|
|
# Workaround for libevent, which requires CMake 3.1 but is incompatible with CMake >= 4.0.
|
|
sed -i '1s/^/set(ENV{CMAKE_POLICY_VERSION_MINIMUM} 3.5)\n/' "${VCPKG_INSTALLATION_ROOT}/scripts/ports.cmake"
|
|
|
|
- name: vcpkg tools cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: C:/vcpkg/downloads/tools
|
|
key: ${{ github.job }}-vcpkg-tools
|
|
|
|
- name: Restore vcpkg binary cache
|
|
uses: actions/cache/restore@v4
|
|
id: vcpkg-binary-cache
|
|
with:
|
|
path: ~/AppData/Local/vcpkg/archives
|
|
key: ${{ github.job }}-vcpkg-binary-${{ hashFiles('cmake_version', 'msbuild_version', 'toolset_version', 'vcpkg.json') }}
|
|
|
|
- name: Generate build system
|
|
run: |
|
|
cmake -B build --preset vs2022-static -DCMAKE_TOOLCHAIN_FILE="${VCPKG_INSTALLATION_ROOT}/scripts/buildsystems/vcpkg.cmake" ${{ matrix.generate-options }}
|
|
|
|
- name: Save vcpkg binary cache
|
|
uses: actions/cache/save@v4
|
|
if: github.event_name != 'pull_request' && steps.vcpkg-binary-cache.outputs.cache-hit != 'true' && matrix.job-type == 'standard'
|
|
with:
|
|
path: ~/AppData/Local/vcpkg/archives
|
|
key: ${{ github.job }}-vcpkg-binary-${{ hashFiles('cmake_version', 'msbuild_version', 'toolset_version', 'vcpkg.json') }}
|
|
|
|
- name: Build
|
|
working-directory: build
|
|
run: |
|
|
cmake --build . -j $NUMBER_OF_PROCESSORS --config Release
|
|
|
|
- name: Run test suite
|
|
if: matrix.job-type == 'standard'
|
|
working-directory: build
|
|
run: |
|
|
ctest --output-on-failure --stop-on-failure -j $NUMBER_OF_PROCESSORS -C Release
|
|
|
|
- name: Run functional tests
|
|
if: matrix.job-type == 'standard'
|
|
working-directory: build
|
|
env:
|
|
BITCOIND: '${{ github.workspace }}\build\bin\Release\bitcoind.exe'
|
|
BITCOINCLI: '${{ github.workspace }}\build\bin\Release\bitcoin-cli.exe'
|
|
BITCOINUTIL: '${{ github.workspace }}\build\bin\Release\bitcoin-util.exe'
|
|
BITCOINWALLET: '${{ github.workspace }}\build\bin\Release\bitcoin-wallet.exe'
|
|
TEST_RUNNER_EXTRA: ${{ github.event_name != 'pull_request' && '--extended' || '' }}
|
|
run: py -3 test/functional/test_runner.py --jobs $NUMBER_OF_PROCESSORS --ci --quiet --tmpdirprefix="${RUNNER_TEMP}" --combinedlogslen=99999999 --timeout-factor=${TEST_RUNNER_TIMEOUT_FACTOR} ${TEST_RUNNER_EXTRA}
|
|
|
|
- name: Clone corpora
|
|
if: matrix.job-type == 'fuzz'
|
|
run: |
|
|
git clone --depth=1 https://github.com/bitcoin-core/qa-assets "${RUNNER_TEMP}/qa-assets"
|
|
cd "${RUNNER_TEMP}/qa-assets"
|
|
echo "Using qa-assets repo from commit ..."
|
|
git log -1
|
|
|
|
- name: Run fuzz tests
|
|
if: matrix.job-type == 'fuzz'
|
|
working-directory: build
|
|
env:
|
|
BITCOINFUZZ: '${{ github.workspace }}\build\bin\Release\fuzz.exe'
|
|
run: |
|
|
py -3 test/fuzz/test_runner.py --par $NUMBER_OF_PROCESSORS --loglevel DEBUG "${RUNNER_TEMP}/qa-assets/fuzz_corpora"
|
|
|
|
windows-cross:
|
|
name: 'Linux->Windows cross, no tests'
|
|
runs-on: ubuntu-latest
|
|
if: ${{ vars.SKIP_BRANCH_PUSH != 'true' || github.event_name == 'pull_request' }}
|
|
|
|
env:
|
|
FILE_ENV: './ci/test/00_setup_env_win64.sh'
|
|
DANGER_CI_ON_HOST_FOLDERS: 1
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set CI directories
|
|
run: |
|
|
echo "CCACHE_DIR=${{ runner.temp }}/ccache_dir" >> "$GITHUB_ENV"
|
|
echo "BASE_ROOT_DIR=${{ runner.temp }}" >> "$GITHUB_ENV"
|
|
echo "DEPENDS_DIR=${{ runner.temp }}/depends" >> "$GITHUB_ENV"
|
|
echo "BASE_BUILD_DIR=${{ runner.temp }}/build" >> "$GITHUB_ENV"
|
|
|
|
- name: Depends cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ${{ env.DEPENDS_DIR }}/built
|
|
key: ${{ github.job }}-depends-${{ hashFiles('depends/**', 'ci/test/00_setup_env_win64.sh') }}
|
|
|
|
- name: Restore Ccache cache
|
|
id: ccache-cache
|
|
uses: actions/cache/restore@v4
|
|
with:
|
|
path: ${{ env.CCACHE_DIR }}
|
|
key: ${{ github.job }}-ccache-${{ github.run_id }}
|
|
restore-keys: ${{ github.job }}-ccache-
|
|
|
|
- name: CI script
|
|
run: ./ci/test_run_all.sh
|
|
|
|
- name: Save Ccache cache
|
|
uses: actions/cache/save@v4
|
|
if: github.event_name != 'pull_request' && steps.ccache-cache.outputs.cache-hit != 'true'
|
|
with:
|
|
path: ${{ env.CCACHE_DIR }}
|
|
key: ${{ github.job }}-ccache-${{ github.run_id }}
|
|
|
|
- name: Upload built executables
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: x86_64-w64-mingw32-executables-${{ github.run_id }}
|
|
path: |
|
|
${{ env.BASE_BUILD_DIR }}/bin/*.exe
|
|
${{ env.BASE_BUILD_DIR }}/src/secp256k1/bin/*.exe
|
|
${{ env.BASE_BUILD_DIR }}/src/univalue/*.exe
|
|
${{ env.BASE_BUILD_DIR }}/test/config.ini
|
|
|
|
windows-native-test:
|
|
name: 'Windows, test cross-built'
|
|
runs-on: windows-2022
|
|
needs: windows-cross
|
|
|
|
env:
|
|
PYTHONUTF8: 1
|
|
TEST_RUNNER_TIMEOUT_FACTOR: 40
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Download built executables
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: x86_64-w64-mingw32-executables-${{ github.run_id }}
|
|
|
|
- name: Run bitcoind.exe
|
|
run: ./bin/bitcoind.exe -version
|
|
|
|
- name: Run unit tests
|
|
# Can't use ctest here like other jobs as we don't have a CMake build tree.
|
|
run: |
|
|
./bin/test_bitcoin.exe -l test_suite
|
|
./src/secp256k1/bin/exhaustive_tests.exe
|
|
./src/secp256k1/bin/noverify_tests.exe
|
|
./src/secp256k1/bin/tests.exe
|
|
./src/univalue/object.exe
|
|
./src/univalue/unitester.exe
|
|
|
|
- name: Run benchmarks
|
|
run: ./bin/bench_bitcoin.exe -sanity-check -priority-level=high
|
|
|
|
- name: Adjust paths in test/config.ini
|
|
shell: pwsh
|
|
run: |
|
|
(Get-Content "test/config.ini") -replace '(?<=^SRCDIR=).*', '${{ github.workspace }}' -replace '(?<=^BUILDDIR=).*', '${{ github.workspace }}' -replace '(?<=^RPCAUTH=).*', '${{ github.workspace }}/share/rpcauth/rpcauth.py' | Set-Content "test/config.ini"
|
|
Get-Content "test/config.ini"
|
|
|
|
- name: Run util tests
|
|
run: py -3 test/util/test_runner.py
|
|
|
|
- name: Run rpcauth test
|
|
run: py -3 test/util/rpcauth-test.py
|
|
|
|
- name: Run functional tests
|
|
env:
|
|
# TODO: Fix the excluded test and re-enable it.
|
|
EXCLUDE: '--exclude wallet_multiwallet.py'
|
|
TEST_RUNNER_EXTRA: ${{ github.event_name != 'pull_request' && '--extended' || '' }}
|
|
run: py -3 test/functional/test_runner.py --jobs $NUMBER_OF_PROCESSORS --ci --quiet --tmpdirprefix="$RUNNER_TEMP" --combinedlogslen=99999999 --timeout-factor=$TEST_RUNNER_TIMEOUT_FACTOR $EXCLUDE $TEST_RUNNER_EXTRA
|
|
|
|
asan-lsan-ubsan-integer-no-depends-usdt:
|
|
name: 'ASan + LSan + UBSan + integer, no depends, USDT'
|
|
runs-on: ubuntu-24.04 # has to match container in ci/test/00_setup_env_native_asan.sh for tracing tools
|
|
if: ${{ vars.SKIP_BRANCH_PUSH != 'true' || github.event_name == 'pull_request' }}
|
|
timeout-minutes: 120
|
|
env:
|
|
FILE_ENV: "./ci/test/00_setup_env_native_asan.sh"
|
|
DANGER_CI_ON_HOST_FOLDERS: 1
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set CI directories
|
|
run: |
|
|
echo "CCACHE_DIR=${{ runner.temp }}/ccache_dir" >> "$GITHUB_ENV"
|
|
echo "BASE_ROOT_DIR=${{ runner.temp }}" >> "$GITHUB_ENV"
|
|
echo "BASE_BUILD_DIR=${{ runner.temp }}/build-asan" >> "$GITHUB_ENV"
|
|
|
|
- name: Restore Ccache cache
|
|
id: ccache-cache
|
|
uses: actions/cache/restore@v4
|
|
with:
|
|
path: ${{ env.CCACHE_DIR }}
|
|
key: ${{ github.job }}-ccache-${{ github.run_id }}
|
|
restore-keys: ${{ github.job }}-ccache-
|
|
|
|
- name: Enable bpfcc script
|
|
# In the image build step, no external environment variables are available,
|
|
# so any settings will need to be written to the settings env file:
|
|
run: sed -i "s|\${INSTALL_BCC_TRACING_TOOLS}|true|g" ./ci/test/00_setup_env_native_asan.sh
|
|
|
|
- name: CI script
|
|
run: ./ci/test_run_all.sh
|
|
|
|
- name: Save Ccache cache
|
|
uses: actions/cache/save@v4
|
|
if: github.event_name != 'pull_request' && steps.ccache-cache.outputs.cache-hit != 'true'
|
|
with:
|
|
path: ${{ env.CCACHE_DIR }}
|
|
# https://github.com/actions/cache/blob/main/tips-and-workarounds.md#update-a-cache
|
|
key: ${{ github.job }}-ccache-${{ github.run_id }}
|