name: Bakery on: workflow_call: inputs: bake_targets: type: string default: '["default"]' description: Bake Matrix cargo_profiles: type: string description: Cargo profiles feat_sets: type: string description: Cargo feature groups rust_targets: type: string description: Rust targets rust_toolchains: type: string description: Rust toolchains sys_names: type: string description: System names sys_targets: type: string description: System targets sys_versions: type: string description: System versions machines: type: string description: Hardware platforms excludes: type: string default: '[]' description: Matrix exclusions includes: type: string default: '[]' description: Matrix inclusions verbose_env: type: string default: ${{vars.CI_VERBOSE_ENV || false}} description: Print the bake environment. silent_bake: type: string default: ${{vars.CI_SILENT_BAKE || false}} description: Print as little as possible. print_bake: type: string default: ${{vars.CI_PRINT_BAKE || false}} description: Print the computed receipe. jobs: bake: name: ${{matrix.bake_target}} ${{matrix.cargo_profile}} ${{matrix.rust_toolchain}} ${{matrix.feat_set}} ${{matrix.sys_name}} ${{matrix.sys_version}} ${{matrix.sys_target}} runs-on: ${{matrix.machine}} strategy: fail-fast: true matrix: exclude: ${{fromJSON(inputs.excludes)}} include: ${{fromJSON(inputs.includes)}} bake_target: ${{fromJSON(inputs.bake_targets)}} cargo_profile: ${{fromJSON(inputs.cargo_profiles)}} feat_set: ${{fromJSON(inputs.feat_sets)}} rust_toolchain: ${{fromJSON(inputs.rust_toolchains)}} sys_name: ${{fromJSON(inputs.sys_names)}} sys_version: ${{fromJSON(inputs.sys_versions)}} rust_target: ${{fromJSON(inputs.rust_targets)}} sys_target: ${{fromJSON(inputs.sys_targets)}} machine: ${{fromJSON(inputs.machines)}} steps: - uses: actions/checkout@v4 with: persist-credentials: false - name: Bake env: bake_target: ${{matrix.bake_target}} cargo_profile: ${{matrix.cargo_profile}} rust_toolchain: ${{matrix.rust_toolchain}} rust_target: ${{matrix.rust_target}} feat_set: ${{matrix.feat_set}} sys_name: ${{matrix.sys_name}} sys_version: ${{matrix.sys_version}} sys_target: ${{matrix.sys_target}} machine: ${{matrix.machine}} acct: ${{github.actor}} repo: ${{github.repository}} CI_VERBOSE_ENV: ${{inputs.verbose_env}} CI_SILENT_BAKE: ${{inputs.silent_bake}} CI_PRINT_BAKE: ${{inputs.print_bake}} run: | docker/bake.sh ${{matrix.bake_target}}