Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 16 additions & 8 deletions .github/workflows/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,19 +22,27 @@ CI/CD workflows for the fbuild project, covering lint, test, documentation, and
MSRV, board validation, and crate-gate statuses. The unselected tiers allocate no PR
runners. The selected tier owns the Linux workspace check; when both labels
are present, `ci-full` subsumes `ci-test`.
- The full and nightly board matrices execute identical build inputs once.
Each matrix row carries `workflow_aliases` so every listed board workflow
remains represented, including legacy spelling aliases.
- Per-board `build-*.yml` files are manual/reusable only. Their triggers are
generated by `ci/render_workflows.py`; the nightly sweep still runs every
board independently of PR labels.
- The full board matrix executes identical build inputs once. Each matrix
row carries `workflow_aliases` so every listed board workflow remains
represented, including legacy spelling aliases.
- Board jobs never compile fbuild themselves: one `fbuild_bin` job builds it
and uploads `fbuild-bin-linux-debug`, which `template_build.yml` downloads
(`fbuild-artifact` / `fbuild-run-id` inputs). Caches save only from `main`.
- **README badges.** A badge tracks runs of its own `build-<board>.yml` file,
so `nightly-platforms.yml` is a dispatcher: it compiles fbuild once, then
`gh workflow run`s each selected board workflow with its run id. On push to
`main` it selects only boards whose trigger paths changed
(`ci/select_boards.py`: own test dir, family crate paths, own workflow file;
shared paths select the `core` boards); on its daily schedule it selects
every board (skipped when there were no commits in 24h). PRs never run the
full board set unless labelled `ci-full`.

## Independent lightweight checks (push/PR)

- **`check-{ubuntu,windows}.yml`** -- Reusable Clippy + tests per platform (no macOS runner: macOS
binaries are cross-built from Linux in the release matrix, see below)
- **`fmt.yml`** -- Rustfmt check | **`docs.yml`** -- Doc build with `-D warnings`
- **`msrv.yml`** -- MSRV 1.95.0 verification | **`validate-boards.yml`** -- Board JSON validation
- **`fmt.yml`** -- Rustfmt check
- MSRV 1.95.0 is the pinned toolchain (`rust-toolchain.toml` = `rust-version`, enforced by `ci/check_rust_toolchain_pins.py`), so every lane already compiles on it and there is no separate MSRV job | **`validate-boards.yml`** -- Board JSON validation
- **`platform-boundary-research.yml`** -- Windows/Linux reconciliation of the #1307 research inventory and RED fixture
- **`loc-gate.yml`** -- Reject `.rs` files over 1000 LOC | **`lint-subprocess.yml`** -- Forbid direct subprocess spawns
- **`crate-gate.yml`** -- Reject new workspace crates (monocrate policy, `ci/check_workspace_crates.py`)
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/acceptance-205.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,4 +73,4 @@ jobs:

- name: Run ${{ matrix.gate }} acceptance gate
run: |
soldr cargo test -p fbuild-build --test ${{ matrix.test_bin }} -- --ignored --exact ${{ matrix.test_fn }} --nocapture --test-threads=1
soldr cargo test -p fbuild-build --test it -- --ignored --exact ${{ matrix.test_bin }}::${{ matrix.test_fn }} --nocapture --test-threads=1
17 changes: 15 additions & 2 deletions .github/workflows/build-apollo3_red.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,16 @@ name: Build Apollo3 RedBoard

# >>> RENDERED-ON-BEGIN (ci/render_workflows.py) -- do not edit by hand <<<
on:
workflow_dispatch: {}
workflow_dispatch:
inputs:
fbuild-run-id:
description: 'Run holding a prebuilt fbuild artifact (empty: compile here)'
type: string
default: ''
checkout_ref:
description: 'Commit to build (empty: the dispatched ref)'
type: string
default: ''
workflow_call: {}

concurrency:
Expand All @@ -14,7 +23,11 @@ jobs:
build:
uses: ./.github/workflows/template_build.yml
with:
workflow-name: "Apollo3 RedBoard"
workflow-name: "Ambiq Apollo3 Red"
test-dir: "tests/platform/apollo3_red"
env-name: "apollo3_red"
firmware-ext: "bin"
checkout_ref: ${{ inputs.checkout_ref }}
fbuild-artifact: ${{ inputs.fbuild-run-id && 'fbuild-bin-linux-debug' || '' }}
fbuild-run-id: ${{ inputs.fbuild-run-id }}
toolchain-cache: false
17 changes: 15 additions & 2 deletions .github/workflows/build-apollo3_thing_explorable.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,16 @@ name: Build Apollo3 expLoRaBLE

# >>> RENDERED-ON-BEGIN (ci/render_workflows.py) -- do not edit by hand <<<
on:
workflow_dispatch: {}
workflow_dispatch:
inputs:
fbuild-run-id:
description: 'Run holding a prebuilt fbuild artifact (empty: compile here)'
type: string
default: ''
checkout_ref:
description: 'Commit to build (empty: the dispatched ref)'
type: string
default: ''
workflow_call: {}

concurrency:
Expand All @@ -14,7 +23,11 @@ jobs:
build:
uses: ./.github/workflows/template_build.yml
with:
workflow-name: "Apollo3 expLoRaBLE"
workflow-name: "Apollo3 Thing Explorable"
test-dir: "tests/platform/apollo3_thing_explorable"
env-name: "apollo3_thing_explorable"
firmware-ext: "bin"
checkout_ref: ${{ inputs.checkout_ref }}
fbuild-artifact: ${{ inputs.fbuild-run-id && 'fbuild-bin-linux-debug' || '' }}
fbuild-run-id: ${{ inputs.fbuild-run-id }}
toolchain-cache: false
15 changes: 14 additions & 1 deletion .github/workflows/build-atmega8.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,16 @@ name: Build ATmega8

# >>> RENDERED-ON-BEGIN (ci/render_workflows.py) -- do not edit by hand <<<
on:
workflow_dispatch: {}
workflow_dispatch:
inputs:
fbuild-run-id:
description: 'Run holding a prebuilt fbuild artifact (empty: compile here)'
type: string
default: ''
checkout_ref:
description: 'Commit to build (empty: the dispatched ref)'
type: string
default: ''
workflow_call: {}

concurrency:
Expand All @@ -18,3 +27,7 @@ jobs:
test-dir: "tests/platform/atmega8"
env-name: "atmega8"
firmware-ext: "hex"
checkout_ref: ${{ inputs.checkout_ref }}
fbuild-artifact: ${{ inputs.fbuild-run-id && 'fbuild-bin-linux-debug' || '' }}
fbuild-run-id: ${{ inputs.fbuild-run-id }}
toolchain-cache: false
15 changes: 14 additions & 1 deletion .github/workflows/build-atmega8a.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,16 @@ name: Build ATmega8A

# >>> RENDERED-ON-BEGIN (ci/render_workflows.py) -- do not edit by hand <<<
on:
workflow_dispatch: {}
workflow_dispatch:
inputs:
fbuild-run-id:
description: 'Run holding a prebuilt fbuild artifact (empty: compile here)'
type: string
default: ''
checkout_ref:
description: 'Commit to build (empty: the dispatched ref)'
type: string
default: ''
workflow_call: {}

concurrency:
Expand All @@ -18,3 +27,7 @@ jobs:
test-dir: "tests/platform/atmega8a"
env-name: "atmega8a"
firmware-ext: "hex"
checkout_ref: ${{ inputs.checkout_ref }}
fbuild-artifact: ${{ inputs.fbuild-run-id && 'fbuild-bin-linux-debug' || '' }}
fbuild-run-id: ${{ inputs.fbuild-run-id }}
toolchain-cache: false
15 changes: 14 additions & 1 deletion .github/workflows/build-attiny1604.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,16 @@ name: Build ATtiny1604

# >>> RENDERED-ON-BEGIN (ci/render_workflows.py) -- do not edit by hand <<<
on:
workflow_dispatch: {}
workflow_dispatch:
inputs:
fbuild-run-id:
description: 'Run holding a prebuilt fbuild artifact (empty: compile here)'
type: string
default: ''
checkout_ref:
description: 'Commit to build (empty: the dispatched ref)'
type: string
default: ''
workflow_call: {}

concurrency:
Expand All @@ -18,3 +27,7 @@ jobs:
test-dir: "tests/platform/attiny1604"
env-name: "attiny1604"
firmware-ext: "hex"
checkout_ref: ${{ inputs.checkout_ref }}
fbuild-artifact: ${{ inputs.fbuild-run-id && 'fbuild-bin-linux-debug' || '' }}
fbuild-run-id: ${{ inputs.fbuild-run-id }}
toolchain-cache: false
15 changes: 14 additions & 1 deletion .github/workflows/build-attiny1616.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,16 @@ name: Build ATtiny1616

# >>> RENDERED-ON-BEGIN (ci/render_workflows.py) -- do not edit by hand <<<
on:
workflow_dispatch: {}
workflow_dispatch:
inputs:
fbuild-run-id:
description: 'Run holding a prebuilt fbuild artifact (empty: compile here)'
type: string
default: ''
checkout_ref:
description: 'Commit to build (empty: the dispatched ref)'
type: string
default: ''
workflow_call: {}

concurrency:
Expand All @@ -18,3 +27,7 @@ jobs:
test-dir: "tests/platform/attiny1616"
env-name: "attiny1616"
firmware-ext: "hex"
checkout_ref: ${{ inputs.checkout_ref }}
fbuild-artifact: ${{ inputs.fbuild-run-id && 'fbuild-bin-linux-debug' || '' }}
fbuild-run-id: ${{ inputs.fbuild-run-id }}
toolchain-cache: false
15 changes: 14 additions & 1 deletion .github/workflows/build-attiny4313.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,16 @@ name: Build ATtiny4313

# >>> RENDERED-ON-BEGIN (ci/render_workflows.py) -- do not edit by hand <<<
on:
workflow_dispatch: {}
workflow_dispatch:
inputs:
fbuild-run-id:
description: 'Run holding a prebuilt fbuild artifact (empty: compile here)'
type: string
default: ''
checkout_ref:
description: 'Commit to build (empty: the dispatched ref)'
type: string
default: ''
workflow_call: {}

concurrency:
Expand All @@ -18,3 +27,7 @@ jobs:
test-dir: "tests/platform/attiny4313"
env-name: "attiny4313"
firmware-ext: "hex"
checkout_ref: ${{ inputs.checkout_ref }}
fbuild-artifact: ${{ inputs.fbuild-run-id && 'fbuild-bin-linux-debug' || '' }}
fbuild-run-id: ${{ inputs.fbuild-run-id }}
toolchain-cache: false
15 changes: 14 additions & 1 deletion .github/workflows/build-attiny85.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,16 @@ name: Build ATtiny85

# >>> RENDERED-ON-BEGIN (ci/render_workflows.py) -- do not edit by hand <<<
on:
workflow_dispatch: {}
workflow_dispatch:
inputs:
fbuild-run-id:
description: 'Run holding a prebuilt fbuild artifact (empty: compile here)'
type: string
default: ''
checkout_ref:
description: 'Commit to build (empty: the dispatched ref)'
type: string
default: ''
workflow_call: {}

concurrency:
Expand All @@ -18,3 +27,7 @@ jobs:
test-dir: "tests/platform/attiny85"
env-name: "attiny85"
firmware-ext: "hex"
checkout_ref: ${{ inputs.checkout_ref }}
fbuild-artifact: ${{ inputs.fbuild-run-id && 'fbuild-bin-linux-debug' || '' }}
fbuild-run-id: ${{ inputs.fbuild-run-id }}
toolchain-cache: false
15 changes: 14 additions & 1 deletion .github/workflows/build-attiny88.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,16 @@ name: Build ATtiny88

# >>> RENDERED-ON-BEGIN (ci/render_workflows.py) -- do not edit by hand <<<
on:
workflow_dispatch: {}
workflow_dispatch:
inputs:
fbuild-run-id:
description: 'Run holding a prebuilt fbuild artifact (empty: compile here)'
type: string
default: ''
checkout_ref:
description: 'Commit to build (empty: the dispatched ref)'
type: string
default: ''
workflow_call: {}

concurrency:
Expand All @@ -18,3 +27,7 @@ jobs:
test-dir: "tests/platform/attiny88"
env-name: "attiny88"
firmware-ext: "hex"
checkout_ref: ${{ inputs.checkout_ref }}
fbuild-artifact: ${{ inputs.fbuild-run-id && 'fbuild-bin-linux-debug' || '' }}
fbuild-run-id: ${{ inputs.fbuild-run-id }}
toolchain-cache: false
17 changes: 15 additions & 2 deletions .github/workflows/build-blackpill.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,16 @@ name: Build BlackPill F411CE

# >>> RENDERED-ON-BEGIN (ci/render_workflows.py) -- do not edit by hand <<<
on:
workflow_dispatch: {}
workflow_dispatch:
inputs:
fbuild-run-id:
description: 'Run holding a prebuilt fbuild artifact (empty: compile here)'
type: string
default: ''
checkout_ref:
description: 'Commit to build (empty: the dispatched ref)'
type: string
default: ''
workflow_call: {}

concurrency:
Expand All @@ -14,7 +23,11 @@ jobs:
build:
uses: ./.github/workflows/template_build.yml
with:
workflow-name: "BlackPill F411CE"
workflow-name: "STM32 BlackPill F411CE"
test-dir: "tests/platform/blackpill_f411ce"
env-name: "blackpill"
firmware-ext: "hex"
checkout_ref: ${{ inputs.checkout_ref }}
fbuild-artifact: ${{ inputs.fbuild-run-id && 'fbuild-bin-linux-debug' || '' }}
fbuild-run-id: ${{ inputs.fbuild-run-id }}
toolchain-cache: false
17 changes: 15 additions & 2 deletions .github/workflows/build-bluepill.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,16 @@ name: Build BluePill F103C8

# >>> RENDERED-ON-BEGIN (ci/render_workflows.py) -- do not edit by hand <<<
on:
workflow_dispatch: {}
workflow_dispatch:
inputs:
fbuild-run-id:
description: 'Run holding a prebuilt fbuild artifact (empty: compile here)'
type: string
default: ''
checkout_ref:
description: 'Commit to build (empty: the dispatched ref)'
type: string
default: ''
workflow_call: {}

concurrency:
Expand All @@ -14,7 +23,11 @@ jobs:
build:
uses: ./.github/workflows/template_build.yml
with:
workflow-name: "BluePill F103C8"
workflow-name: "STM32 BluePill F103C8"
test-dir: "tests/platform/bluepill_f103c8"
env-name: "bluepill"
firmware-ext: "hex"
checkout_ref: ${{ inputs.checkout_ref }}
fbuild-artifact: ${{ inputs.fbuild-run-id && 'fbuild-bin-linux-debug' || '' }}
fbuild-run-id: ${{ inputs.fbuild-run-id }}
toolchain-cache: false
15 changes: 14 additions & 1 deletion .github/workflows/build-ch32l103.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,16 @@ name: Build CH32L103

# >>> RENDERED-ON-BEGIN (ci/render_workflows.py) -- do not edit by hand <<<
on:
workflow_dispatch: {}
workflow_dispatch:
inputs:
fbuild-run-id:
description: 'Run holding a prebuilt fbuild artifact (empty: compile here)'
type: string
default: ''
checkout_ref:
description: 'Commit to build (empty: the dispatched ref)'
type: string
default: ''
workflow_call: {}

concurrency:
Expand All @@ -18,3 +27,7 @@ jobs:
test-dir: "tests/platform/ch32l103"
env-name: "ch32l103"
firmware-ext: "bin"
checkout_ref: ${{ inputs.checkout_ref }}
fbuild-artifact: ${{ inputs.fbuild-run-id && 'fbuild-bin-linux-debug' || '' }}
fbuild-run-id: ${{ inputs.fbuild-run-id }}
toolchain-cache: false
15 changes: 14 additions & 1 deletion .github/workflows/build-ch32v003.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,16 @@ name: Build CH32V003

# >>> RENDERED-ON-BEGIN (ci/render_workflows.py) -- do not edit by hand <<<
on:
workflow_dispatch: {}
workflow_dispatch:
inputs:
fbuild-run-id:
description: 'Run holding a prebuilt fbuild artifact (empty: compile here)'
type: string
default: ''
checkout_ref:
description: 'Commit to build (empty: the dispatched ref)'
type: string
default: ''
workflow_call: {}

concurrency:
Expand All @@ -18,3 +27,7 @@ jobs:
test-dir: "tests/platform/ch32v003"
env-name: "ch32v003"
firmware-ext: "bin"
checkout_ref: ${{ inputs.checkout_ref }}
fbuild-artifact: ${{ inputs.fbuild-run-id && 'fbuild-bin-linux-debug' || '' }}
fbuild-run-id: ${{ inputs.fbuild-run-id }}
toolchain-cache: false
Loading
Loading