C++ Tests on all platforms & compilers #8
Workflow file for this run
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: "C++ Tests on all platforms & compilers" | |
on: | |
workflow_call: | |
inputs: | |
CONCURRENCY: | |
required: true | |
type: string | |
FULL: | |
# Booleans are almost unusable | |
# See https://medium.com/@sohail.ra5/github-actions-passing-boolean-input-variables-to-reusable-workflow-call-42d39bf7342e | |
type: string | |
required: true | |
default: "true" | |
workflow_dispatch: | |
inputs: | |
CONCURRENCY: | |
required: false | |
type: string | |
default: "adhoc" | |
FULL: | |
description: "If false only linux is tested" | |
type: choice | |
options: | |
- "true" | |
- "false" | |
concurrency: | |
group: ${{ inputs.CONCURRENCY }}-checks_cpp | |
cancel-in-progress: true | |
env: | |
# See: https://github.com/marketplace/actions/sccache-action | |
SCCACHE_GHA_ENABLED: "false" | |
RUSTC_WRAPPER: "sccache" | |
# Not only `sccache` cannot cache incremental builds, it's counter-productive to generate all | |
# these incremental artifacts when running on CI. | |
CARGO_INCREMENTAL: "0" | |
permissions: | |
contents: "read" | |
id-token: "write" | |
jobs: | |
matrix_prep: | |
runs-on: ubuntu-latest | |
outputs: | |
MATRIX: ${{ steps.set-matrix.outputs.matrix }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.ref || '' }} | |
- name: Load C++ test matrix | |
id: set-matrix | |
shell: bash | |
run: | | |
echo "Full matrix: ${{ inputs.FULL }}" | |
if ${{ inputs.FULL }}; then | |
echo "matrix=$(jq -c . < ./.github/workflows/cpp_matrix_full.json)" >> $GITHUB_OUTPUT | |
else | |
echo "matrix=$(jq -c . < ./.github/workflows/cpp_matrix_partial.json)" >> $GITHUB_OUTPUT | |
fi | |
cpp-tests: | |
name: C++ build & test - ${{ matrix.name }} | |
needs: matrix_prep | |
strategy: | |
matrix: ${{ fromJson(needs.matrix_prep.outputs.MATRIX) }} | |
runs-on: ${{ matrix.runs_on }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.ref || '' }} | |
- uses: prefix-dev/[email protected] | |
with: | |
pixi-version: v0.19.0 | |
- name: Set up Rust | |
uses: ./.github/actions/setup-rust | |
with: | |
cache_key: ${{ matrix.cache_key }} | |
# Cache will be produced by `reusable_checks/rs-lints` | |
save_cache: false | |
workload_identity_provider: ${{ secrets.GOOGLE_WORKLOAD_IDENTITY_PROVIDER }} | |
service_account: ${{ secrets.GOOGLE_SERVICE_ACCOUNT }} | |
# Workaround for ASAN issues on Github images https://github.com/actions/runner-images/issues/9491 | |
- name: Fix kernel mmap rnd bits | |
if: runner.os == 'Linux' | |
# Asan in llvm 14 provided in ubuntu 22.04 is incompatible with | |
# high-entropy ASLR in much newer kernels that GitHub runners are | |
# using leading to random crashes: https://reviews.llvm.org/D148280 | |
run: sudo sysctl vm.mmap_rnd_bits=28 | |
- name: pixi run cpp-clean | |
shell: bash | |
run: pixi run cpp-clean | |
- name: pixi run cpp-build-all | |
shell: bash | |
run: ${{ matrix.extra_env_vars }} RERUN_WERROR=ON pixi run cpp-build-all | |
- name: pixi run cpp-test | |
shell: bash | |
run: ${{ matrix.extra_env_vars }} RERUN_WERROR=ON pixi run cpp-test | |
- name: additional_commands | |
shell: bash | |
run: ${{ matrix.additional_commands }} | |
cpp-formatting: | |
name: C++ formatting check | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.ref || '' }} | |
- name: Run clang format on all relevant files | |
uses: jidicula/[email protected] | |
with: | |
clang-format-version: "16" | |
# Only check c/cpp/h/hpp (default checks also .proto and others) | |
include-regex: ^.*\.(c|cpp|h|hpp)$ |