Skip to content

chore: bump version to 9.11.2 (#4909) #4733

chore: bump version to 9.11.2 (#4909)

chore: bump version to 9.11.2 (#4909) #4733

Workflow file for this run

name: AddressSanitizer
on:
push:
branches:
- master
- 'releases/**'
pull_request:
branches:
- '*'
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.sha }}
cancel-in-progress: true
env:
VCPKG_BINARY_SOURCES: 'clear;x-gha,readwrite'
jobs:
test_with_sanitizers:
strategy:
fail-fast: false
matrix:
#os: [windows-latest, ubuntu-latest, macos-14, macos-15-intel]
os: [ubuntu-latest, macos-14, macos-15-intel] # Temporarily remove windows asan
preset: [vcpkg-asan-debug, vcpkg-ubsan-debug]
exclude:
# UBSan not supported by MSVC on Windows
- { os: windows-latest, preset: vcpkg-ubsan-debug }
# UBSan runs out of disk space on Linux
- { os: ubuntu-latest, preset: vcpkg-ubsan-debug }
runs-on: ${{ matrix.os }}
name: asan.${{ matrix.os }}.${{ matrix.preset }}
env:
UBSAN_OPTIONS: "print_stacktrace=1"
steps:
- uses: actions/checkout@v6
with:
submodules: false
fetch-depth: 0
- name: Init submodules with retry
shell: bash
run: |
git config --global --add safe.directory "$(pwd)"
for attempt in 1 2 3 4 5; do
if git submodule update --init --recursive; then
echo "Submodule init succeeded on attempt $attempt"
exit 0
fi
echo "Attempt $attempt failed, retrying in 15s..."
sleep 15
done
echo "Submodule init failed after 5 attempts"
exit 1
- name: Setup MSVC Developer Command Prompt
if: ${{ startsWith(matrix.os, 'windows') }}
uses: ilammy/msvc-dev-cmd@v1
- uses: lukka/get-cmake@latest
- name: Install build dependencies (Linux only)
if: runner.os == 'Linux'
run: |
sudo apt-get update || true
sudo apt-get install -y ninja-build autoconf automake autoconf-archive ccache
- name: Install ccache (macOS only)
if: runner.os == 'macOS'
run: brew install ccache
- name: Cache ccache
uses: actions/cache@v4
with:
path: ${{ runner.temp }}/ccache
key: ccache-asan-${{ matrix.os }}-${{ matrix.preset }}-${{ github.sha }}
restore-keys: |
ccache-asan-${{ matrix.os }}-${{ matrix.preset }}-
- name: Configure ccache
shell: bash
run: |
echo "CCACHE_DIR=$RUNNER_TEMP/ccache" >> $GITHUB_ENV
ccache --set-config=max_size=500M
ccache --set-config=compiler_check=content
ccache --zero-stats
env:
CCACHE_DIR: ${{ runner.temp }}/ccache
- name: Export GitHub Actions cache environment variables
uses: actions/github-script@v7
with:
script: |
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
- name: Clear vcpkg temp files and update
shell: bash
run: |
rm -rf ext_libs/vcpkg/downloads
rm -rf ext_libs/vcpkg/buildtrees
git submodule update --init ext_libs/vcpkg
- name: Setup vcpkg
uses: lukka/run-vcpkg@v11
with:
vcpkgDirectory: '${{ github.workspace }}/ext_libs/vcpkg'
- name: Configure with CMake (with retry)
env:
VCPKG_ROOT: ${{github.workspace}}/ext_libs/vcpkg
shell: bash
run: |
max_attempts=3
attempt=1
until cmake --preset "${{ matrix.preset }}" -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache; do
if [ $attempt -ge $max_attempts ]; then
echo "CMake configure failed after $max_attempts attempts"
exit 1
fi
echo "CMake configure failed (attempt $attempt/$max_attempts), retrying in 30 seconds..."
attempt=$((attempt + 1))
sleep 30
done
- name: Build
run: cmake --build build
- name: Show ccache stats
if: always()
run: ccache --show-stats
- name: Verify binaries exist
run: |
ls -la build/vowpalwabbit/cli/
test -f build/vowpalwabbit/cli/vw || (echo "vw binary not found!" && exit 1)
ls -la build/vowpalwabbit/spanning_tree_bin/
test -f build/vowpalwabbit/spanning_tree_bin/spanning_tree || (echo "spanning_tree binary not found!" && exit 1)
- name: Run unit tests
working-directory: build
run: ctest --output-on-failure --no-tests=error --exclude-regex WIterations --label-regex VWTestList
- name: Run python test script
if: ${{ success() || failure() }}
run: |
python3 test/run_tests.py -f --clean_dirty -E 0.001 --include_flatbuffers --jobs 1
test_ubsan_minimal:
# To avoid running out of disk space, build only VW executables and some unit tests on Linux
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
preset: [vcpkg-ubsan-debug]
runs-on: ${{ matrix.os }}
name: asan.${{ matrix.os }}.${{ matrix.preset }}
env:
UBSAN_OPTIONS: "print_stacktrace=1"
steps:
- uses: actions/checkout@v6
with:
submodules: false
fetch-depth: 0
- name: Init submodules with retry
shell: bash
run: |
git config --global --add safe.directory "$(pwd)"
for attempt in 1 2 3 4 5; do
if git submodule update --init --recursive; then
echo "Submodule init succeeded on attempt $attempt"
exit 0
fi
echo "Attempt $attempt failed, retrying in 15s..."
sleep 15
done
echo "Submodule init failed after 5 attempts"
exit 1
- uses: lukka/get-cmake@latest
- name: Install build dependencies (Linux only)
if: runner.os == 'Linux'
run: |
sudo apt-get update || true
sudo apt-get install -y ninja-build autoconf automake autoconf-archive ccache
- name: Cache ccache
uses: actions/cache@v4
with:
path: ${{ runner.temp }}/ccache
key: ccache-asan-${{ matrix.os }}-${{ matrix.preset }}-${{ github.sha }}
restore-keys: |
ccache-asan-${{ matrix.os }}-${{ matrix.preset }}-
- name: Configure ccache
shell: bash
run: |
echo "CCACHE_DIR=$RUNNER_TEMP/ccache" >> $GITHUB_ENV
ccache --set-config=max_size=500M
ccache --set-config=compiler_check=content
ccache --zero-stats
env:
CCACHE_DIR: ${{ runner.temp }}/ccache
- name: Export GitHub Actions cache environment variables
uses: actions/github-script@v7
with:
script: |
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
- name: Clear vcpkg temp files and update
shell: bash
run: |
rm -rf ext_libs/vcpkg/downloads
rm -rf ext_libs/vcpkg/buildtrees
git submodule update --init ext_libs/vcpkg
- name: Setup vcpkg
uses: lukka/run-vcpkg@v11
with:
vcpkgDirectory: '${{ github.workspace }}/ext_libs/vcpkg'
- name: Configure with CMake (with retry)
env:
VCPKG_ROOT: ${{github.workspace}}/ext_libs/vcpkg
shell: bash
run: |
max_attempts=3
attempt=1
until cmake --preset "${{ matrix.preset }}" -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache; do
if [ $attempt -ge $max_attempts ]; then
echo "CMake configure failed after $max_attempts attempts"
exit 1
fi
echo "CMake configure failed (attempt $attempt/$max_attempts), retrying in 30 seconds..."
attempt=$((attempt + 1))
sleep 30
done
- name: Build
run: cmake --build build -t vw_cli_bin vw_spanning_tree vw_spanning_tree_bin vw_core_test
- name: Show ccache stats
if: always()
run: ccache --show-stats
- name: Run unit tests
run: ./build/vowpalwabbit/core/vw_core_test --gtest_filter=-\*WIiterations
- name: Run python test script
if: ${{ success() || failure() }}
run: python3 test/run_tests.py -f --clean_dirty -E 0.001 --include_flatbuffers