Update SQLite to version 3.47 #10167
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Tests | |
on: | |
pull_request: | |
paths-ignore: | |
- 'doc/**' | |
push: | |
branches: | |
- main | |
concurrency: | |
# Cancel existing builds for the same PR. | |
# Otherwise, all other builds will be allowed to run through. | |
group: test.yml-${{ github.event.pull_request.number || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
fixup: | |
if: github.event_name == 'pull_request' | |
uses: ./.github/workflows/fixup.yml | |
labels: | |
if: github.event_name == 'pull_request' | |
uses: ./.github/workflows/labels.yml | |
test: | |
strategy: | |
matrix: | |
os: | |
[ | |
{ name : linux, image : ubuntu-20.04 }, | |
{ name : macOS, image : macos-15 }, | |
{ name : windows, image : windows-2022 } | |
] | |
config: | |
[ | |
# Default build: no suffix or additional bazel arguments | |
{ suffix: '' }, | |
# Debug build | |
{ suffix: -debug } | |
] | |
include: | |
# Add an Address Sanitizer (ASAN) build on Linux for additional checking. | |
- os: { name: linux, image: ubuntu-20.04 } | |
config: { suffix: -asan } | |
# Windows has a custom non-debug bazel config. | |
# As of 7.2.1 support for Bazel remote cache BwoB is broken on Windows, likely due to | |
# disk I/O race conditions causing permission denied errors (this also happened in | |
# previous versions). Use remote_download_all for now. | |
- os: { name : windows, image : windows-2022 } | |
config: { suffix: '' } | |
# TODO (later): The custom Windows-debug configuration consistently runs out of disk | |
# space on CI, disable it for now. Once https://github.com/bazelbuild/bazel/issues/21615 | |
# has been resolved we can likely re-enable it and possibly fold up the custom | |
# configurations, as we can more easily disable PDB file generation. | |
# - os: { name : windows, image : windows-2022 } | |
# config: { suffix: -debug, bazel-args: --config=windows_dbg } | |
exclude: | |
# Skip the matrix generated Windows non-debug config to use the one added above. | |
- os: { name : windows, image : windows-2022 } | |
config: { suffix: '' } | |
- os: { name : windows, image : windows-2022 } | |
config: { suffix: -debug } | |
# due to resource constraints, exclude the macOS-debug runner for now. linux-debug and | |
# linux-asan should provide sufficient coverage for building in the debug configuration. | |
- os: { name : macOS, image : macos-15 } | |
config: { suffix: -debug } | |
fail-fast: false | |
runs-on: ${{ matrix.os.image }} | |
name: test (${{ matrix.os.name }}${{ matrix.config.suffix }}) | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
show-progress: false | |
- name: Cache | |
id: cache | |
uses: actions/cache@v4 | |
with: | |
path: ~/bazel-disk-cache | |
key: bazel-disk-cache-${{ matrix.os.name }}-${{ runner.arch }}${{ matrix.config.suffix }}-${{ hashFiles('.bazelversion', '.bazelrc', 'WORKSPACE') }} | |
# Intentionally not reusing an older cache entry using a key prefix, bazel frequently | |
# ends up with a larger cache at the end when starting with an available cache entry, | |
# resulting in a snowballing cache size and cache download/upload times. | |
- name: Setup Linux | |
if: matrix.os.name == 'linux' | |
# Install dependencies, including clang through the LLVM APT repository. We drop the | |
# install step so we can install just the packages we need. | |
# libunwind, libc++abi1 and libc++1 should be automatically installed as dependencies of | |
# libc++, but this appears to cause errors so they are also being explicitly installed. | |
# Since the GitHub runner image comes with a number of preinstalled packages, we don't need | |
# to use APT much otherwise. | |
run: | | |
export DEBIAN_FRONTEND=noninteractive | |
wget https://apt.llvm.org/llvm.sh | |
sed -i '/apt-get install/d' llvm.sh | |
chmod +x llvm.sh | |
sudo ./llvm.sh 16 | |
# keep in sync with build/ci.bazelrc | |
sudo apt-get install -y --no-install-recommends clang-16 lld-16 libunwind-16 libc++abi1-16 libc++1-16 libc++-16-dev libclang-rt-16-dev llvm-16 | |
sed -i -e "s%llvm-symbolizer%/usr/lib/llvm-16/bin/llvm-symbolizer%" .bazelrc | |
- name: Setup Windows | |
if: matrix.os.name == 'windows' | |
# Set a custom output root directory to avoid long file name issues. | |
run: | | |
git config --global core.symlinks true | |
git config --show-scope --show-origin core.symlinks | |
[System.IO.File]::WriteAllLines((Join-Path -Path $env:USERPROFILE -ChildPath '.bazelrc'), 'startup --output_user_root=C:/tmp') | |
- name: Configure download mirrors | |
shell: bash | |
run: | | |
if [ ! -z "${{ secrets.WORKERS_MIRROR_URL }}" ] ; then | |
# Strip comment in front of WORKERS_MIRROR_URL, then substitute secret to use it. | |
sed -e '/WORKERS_MIRROR_URL/ { s@# *@@; s@WORKERS_MIRROR_URL@${{ secrets.WORKERS_MIRROR_URL }}@; }' -i.bak WORKSPACE | |
fi | |
- name: Configure git hooks | |
# Configure git to quell an irrelevant warning for runners (they never commit / push). | |
run: git config core.hooksPath githooks | |
- name: Bazel build | |
# timestamps are no longer being added here, the GitHub logs include timestamps (Use | |
# 'Show timestamps' on the web interface) | |
run: | | |
bazel build --config=ci --config=ci-${{ matrix.os.name }}${{ matrix.config.suffix }} --remote_cache=https://bazel:${{ secrets.BAZEL_CACHE_KEY }}@bazel-remote-cache.devprod.cloudflare.dev //... | |
- name: Bazel test | |
run: | | |
bazel test --config=ci --config=ci-${{ matrix.os.name }}${{ matrix.config.suffix }} --remote_cache=https://bazel:${{ secrets.BAZEL_CACHE_KEY }}@bazel-remote-cache.devprod.cloudflare.dev //... | |
- name: Report disk usage (in MB) | |
if: always() | |
shell: bash | |
run: | | |
BAZEL_OUTPUT_BASE=$(bazel info output_base) | |
BAZEL_REPOSITORY_CACHE=$(bazel info repository_cache) | |
echo "Bazel cache usage statistics" | |
du -ms -t 1 ~/bazel-disk-cache/* $BAZEL_REPOSITORY_CACHE | |
echo "Bazel output usage statistics" | |
du -ms -t 1 $BAZEL_OUTPUT_BASE | |
echo "Workspace usage statistics" | |
du -ms -t 1 $GITHUB_WORKSPACE | |
- name: Drop large Bazel cache files | |
if: always() | |
# Github has a nominal 10GB of storage for all cached builds associated with a project. | |
# Drop large files (>100MB) in our cache to improve shared build cache efficiency. This is | |
# particularly helpful for asan and debug builds that produce larger executables. Also | |
# the process of saving the Bazel disk cache generates a tarball on the runners disk, and | |
# it is possible to run out of storage in that process (does not fail the workflow). | |
shell: bash | |
run: | | |
if [ -d ~/bazel-disk-cache ]; then | |
find ~/bazel-disk-cache -size +100M -type f -exec rm {} \; | |
echo "Trimmed Bazel cache usage statistics" | |
du -ms -t 1 ~/bazel-disk-cache/* | |
else | |
echo "Disk cache does not exist: ~/bazel-disk-cache" | |
fi | |
- name: Bazel shutdown | |
# Check that there are no .bazelrc issues that prevent shutdown. | |
run: bazel shutdown |