name: Dispatch build and test on: workflow_call: inputs: project_name: {type: string, required: true} per_cuda_compiler_matrix: {type: string, required: true} devcontainer_version: {type: string, required: true} permissions: contents: read jobs: # Using a matrix to dispatch to the build-and-test reusable workflow for each build configuration # ensures that the build/test steps can overlap across different configurations. For example, # the build step for CUDA 12.1 + gcc 9.3 can run at the same time as the test step for CUDA 11.0 + clang 11. build_and_test_linux: name: build and test linux permissions: id-token: write contents: read uses: ./.github/workflows/build-and-test-linux.yml strategy: fail-fast: false matrix: include: ${{ fromJSON(inputs.per_cuda_compiler_matrix) }} with: cuda: ${{ matrix.cuda }} host: ${{matrix.compiler.name}}${{matrix.compiler.version}} cpu: ${{ matrix.cpu }} test_name: ${{matrix.cpu}}/${{matrix.compiler.name}}${{matrix.compiler.version}} ${{matrix.extra_build_args}} build_script: "./ci/build_${{ inputs.project_name }}.sh -cxx ${{matrix.compiler.exe}} ${{matrix.extra_build_args}}" test_script: "./ci/test_${{ inputs.project_name }}.sh -cxx ${{matrix.compiler.exe}} ${{matrix.extra_build_args}}" container_image: rapidsai/devcontainers:${{inputs.devcontainer_version}}-cpp-${{matrix.compiler.name}}${{matrix.compiler.version}}-cuda${{matrix.cuda}}-${{matrix.os}}