feat: split-off embedded-rust from rust flavor#1358
Conversation
📦 Container Size AnalysisNote Comparing 📈 Size Comparison Table
|
✅
|
| Descriptor | Linter | Files | Fixed | Errors | Warnings | Elapsed time |
|---|---|---|---|---|---|---|
| ✅ ACTION | actionlint | 23 | 0 | 0 | 0.25s | |
| ✅ DOCKERFILE | hadolint | 4 | 0 | 0 | 0.27s | |
| ✅ JSON | npm-package-json-lint | yes | no | no | 0.59s | |
| ✅ JSON | prettier | 42 | 2 | 0 | 0 | 0.96s |
| ✅ JSON | v8r | 42 | 0 | 0 | 16.05s | |
| markdownlint | 13 | 0 | 5 | 0 | 1.27s | |
| ✅ MARKDOWN | markdown-table-formatter | 13 | 1 | 0 | 0 | 0.28s |
| ✅ REPOSITORY | betterleaks | yes | no | no | 1.39s | |
| ✅ REPOSITORY | checkov | yes | no | no | 29.2s | |
| ✅ REPOSITORY | gitleaks | yes | no | no | 1.08s | |
| ✅ REPOSITORY | git_diff | yes | no | no | 0.02s | |
| ✅ REPOSITORY | grype | yes | no | no | 59.4s | |
| osv-scanner | yes | 1 | no | 0.69s | ||
| ✅ REPOSITORY | secretlint | yes | no | no | 2.15s | |
| ✅ REPOSITORY | syft | yes | no | no | 2.99s | |
| ✅ REPOSITORY | trivy | yes | no | no | 12.9s | |
| ✅ REPOSITORY | trivy-sbom | yes | no | no | 0.39s | |
| ✅ REPOSITORY | trufflehog | yes | no | no | 6.57s | |
| lychee | 110 | 2 | 0 | 116.61s | ||
| ✅ YAML | prettier | 32 | 0 | 0 | 0 | 1.27s |
| ✅ YAML | v8r | 32 | 0 | 0 | 14.58s | |
| ✅ YAML | yamllint | 32 | 0 | 0 | 1.34s |
Detailed Issues
⚠️ SPELL / lychee - 2 errors
📝 Summary
---------------------
🔍 Total..........153
🔗 Unique.........126
✅ Successful.....143
⏳ Timeouts.........3
🔀 Redirected......19
👻 Excluded.........0
❓ Unknown..........0
🚫 Errors...........2
⛔ Unsupported......2
Errors in .github/TOOL_VERSION_ISSUE_TEMPLATE.md
[403] https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads (at 38:7) | Rejected status code: 403 Forbidden
Errors in test/cpp/features/security.feature
[TIMEOUT] https://slsa.dev/spec/v1.0/levels (at 20:30) | Request timed out
[TIMEOUT] https://slsa.dev/spec/v1.0/threats (at 28:19) | Request timed out
[ERROR] https://slsa.dev/spec/v1.0/threats (at 42:44) | Connection failed. Check network connectivity and firewall settings
[TIMEOUT] https://slsa.dev/spec/v1.0/verifying-artifacts (at 24:25) | Request timed out
Hint: Followed 19 redirects. You might want to consider replacing redirecting URLs with the resolved URLs. Use verbose mode (`-v`/`-vv`) to see redirection details.
Hint: You can configure accepted/rejected response codes with `-a` or `--accept`
⚠️ MARKDOWN / markdownlint - 5 errors
.github/RELEASE_TEMPLATE.md:17:34 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
.github/RELEASE_TEMPLATE.md:17:178 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
.github/RELEASE_TEMPLATE.md:18:34 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
.github/RELEASE_TEMPLATE.md:18:178 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
docs/adr/0000-record-architecture-decisions.md:30:401 error MD013/line-length Line length [Expected: 400; Actual: 520]
⚠️ REPOSITORY / osv-scanner - 1 error
Scanning dir .
Starting filesystem walk for root: /
Scanned .devcontainer/docs/requirements.txt file and found 14 packages
Scanned .devcontainer/cpp/requirements.txt file and found 20 packages
Scanned package-lock.json file and found 73 packages
Scanned test/rust/workspace/cargo/Cargo.lock file and found 1 package
Scanned test/rust/workspace/test/Cargo.lock file and found 1 package
Scanned test/rust/workspace/clippy/Cargo.lock file and found 1 package
Scanned test/embedded-rust/workspace/cortex-m/Cargo.lock file and found 20 packages
Scanned test/embedded-rust/workspace/cortex-mf/Cargo.lock file and found 20 packages
End status: 100 dirs visited, 329 inodes visited, 8 Extract calls, 55.415604ms elapsed, 55.415794ms wall time
Total 2 packages affected by 2 known vulnerabilities (0 Critical, 0 High, 0 Medium, 0 Low, 2 Unknown) from 1 ecosystem.
0 vulnerabilities can be fixed.
+-----------------------------------+------+-----------+------------+---------+---------------+---------------------------------------------------+
| OSV URL | CVSS | ECOSYSTEM | PACKAGE | VERSION | FIXED VERSION | SOURCE |
+-----------------------------------+------+-----------+------------+---------+---------------+---------------------------------------------------+
| https://osv.dev/RUSTSEC-2026-0110 | | crates.io | bare-metal | 0.2.5 | -- | test/embedded-rust/workspace/cortex-m/Cargo.lock |
| https://osv.dev/RUSTSEC-2026-0110 | | crates.io | bare-metal | 0.2.5 | -- | test/embedded-rust/workspace/cortex-mf/Cargo.lock |
+-----------------------------------+------+-----------+------------+---------+---------------+---------------------------------------------------+
Notices
📣 MegaLinter 9.5.0 is out! Discover the new features and security recommendations in the release announcement. (Skip this info by defining SECURITY_SUGGESTIONS: false)
See detailed reports in MegaLinter artifacts
You could have the same capabilities but better runtime performances if you use a MegaLinter flavor:
- oxsecurity/megalinter/flavors/salesforce@v9.6.0 (57 linters)
- oxsecurity/megalinter/flavors/javascript@v9.6.0 (63 linters)
Your project could benefit from a custom flavor, which would allow you to run only the linters you need, and thus improve runtime performances. (Skip this info by defining FLAVOR_SUGGESTIONS: false)
- Documentation: Custom Flavors
- Command:
npx mega-linter-runner@9.6.0 --custom-flavor-setup --custom-flavor-linters ACTION_ACTIONLINT,DOCKERFILE_HADOLINT,JSON_V8R,JSON_PRETTIER,JSON_NPM_PACKAGE_JSON_LINT,MARKDOWN_MARKDOWNLINT,MARKDOWN_MARKDOWN_TABLE_FORMATTER,REPOSITORY_CHECKOV,REPOSITORY_GIT_DIFF,REPOSITORY_GITLEAKS,REPOSITORY_BETTERLEAKS,REPOSITORY_GRYPE,REPOSITORY_OSV_SCANNER,REPOSITORY_SECRETLINT,REPOSITORY_SYFT,REPOSITORY_TRIVY,REPOSITORY_TRIVY_SBOM,REPOSITORY_TRUFFLEHOG,SPELL_LYCHEE,YAML_PRETTIER,YAML_YAMLLINT,YAML_V8R

Show us your support by starring ⭐ the repository
There was a problem hiding this comment.
Pull request overview
This PR splits embedded Rust tooling out of the existing Rust devcontainer flavor into a dedicated embedded-rust flavor/image, updating build logic, CI matrices, tests, and documentation so embedded Rust support is isolated and versioned independently.
Changes:
- Introduces a new
.devcontainer/embedded-rustflavor (plus template + tool inventory) and anembedded-rust-testdevcontainer for CI validation. - Updates the Rust Dockerfile to conditionally install ARM Cortex-M targets and embedded tools when
BUILD_EMBEDDED_FLAVOR=true. - Moves Cortex-M integration tests from the
rusttest suite into a newtest/embedded-rustsuite and updates workflows/docs to include the new image.
Reviewed changes
Copilot reviewed 19 out of 27 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
test/rust/integration-tests.bats |
Removes embedded Cortex-M tests from the standard Rust flavor suite. |
test/embedded-rust/integration-tests.bats |
Adds embedded Rust integration tests for Cortex-M and Cortex-MF builds. |
test/embedded-rust/workspace/cortex-m/src/main.rs |
Adds a minimal no_std Cortex-M test binary entrypoint. |
test/embedded-rust/workspace/cortex-m/Cargo.toml |
Defines dependencies for the Cortex-M test binary. |
test/embedded-rust/workspace/cortex-m/Cargo.lock |
Locks dependencies for reproducible Cortex-M test builds. |
test/embedded-rust/workspace/cortex-m/.cargo/config.toml |
Sets the default build target to thumbv7em-none-eabi. |
test/embedded-rust/workspace/cortex-mf/src/main.rs |
Adds a minimal no_std Cortex-MF test binary entrypoint. |
test/embedded-rust/workspace/cortex-mf/Cargo.toml |
Defines dependencies for the Cortex-MF test binary. |
test/embedded-rust/workspace/cortex-mf/Cargo.lock |
Locks dependencies for reproducible Cortex-MF test builds. |
test/embedded-rust/workspace/cortex-mf/.cargo/config.toml |
Sets the default build target to thumbv7em-none-eabihf. |
templates/embedded-rust/devcontainer-template.json |
Adds a new devcontainer template entry for embedded Rust with versioning hooks. |
release-please-config.json |
Tracks embedded Rust template version fields for automated releases. |
README.md |
Documents the new embedded Rust image and updates the Rust image description accordingly. |
.github/workflows/vulnerability-scan.yml |
Expands scan matrix to include embedded-rust. |
.github/workflows/update-dependencies.yml |
Expands dependency update matrix to include embedded-rust. |
.github/workflows/release-build.yml |
Expands release matrix to include embedded-rust. |
.github/workflows/pr-image-cleanup.yml |
Adds embedded Rust package to PR image cleanup list. |
.github/workflows/image-cleanup.yml |
Adds embedded Rust package to scheduled image cleanup list. |
.github/workflows/build-push-test.yml |
Adds embedded-rust to the build/test matrix and passes BUILD_EMBEDDED_FLAVOR build-arg. |
.github/TOOL_VERSION_ISSUE_TEMPLATE.md |
Adds embedded Rust tooling to quarterly version-check checklist. |
.github/RELEASE_TEMPLATE.md |
Adds embedded Rust image + tools section to release notes template. |
.devcontainer/rust/tool-inventory.json |
Removes embedded-only tools from the standard Rust tool inventory. |
.devcontainer/rust/Dockerfile |
Adds BUILD_EMBEDDED_FLAVOR gating for ARM targets and embedded tool installs/SBOM notes. |
.devcontainer/embedded-rust/tool-inventory.json |
Introduces embedded Rust tool inventory allowlist (incl. probe-rs-tools/flip-link). |
.devcontainer/embedded-rust/devcontainer.json |
Adds embedded Rust devcontainer definition building Rust Dockerfile with embedded flag enabled. |
.devcontainer/embedded-rust/devcontainer-metadata.json |
Adds embedded Rust devcontainer metadata (extensions/env). |
.devcontainer/embedded-rust-test/devcontainer.json |
Adds CI/test devcontainer referencing the published embedded Rust image. |
📦 Container Size AnalysisNote Comparing 📈 Size Comparison Table
|
📦 Container Size AnalysisNote Comparing 📈 Size Comparison Table
|
📦 Container Size AnalysisNote Comparing 📈 Size Comparison Table
|
📦 Container Size AnalysisNote Comparing 📈 Size Comparison Table
|
📦 Container Size AnalysisNote Comparing 📈 Size Comparison Table
|
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Ron <45816308+rjaegers@users.noreply.github.com>
|



🚀 Hey, I have created a Pull Request
Description of changes
This pull request introduces a new
amp-devcontainer-embedded-rustimage for embedded Rust development, along with the necessary configuration, documentation, and CI/CD workflow updates to support and test it. The new image extends the existing Rust container with ARM Cortex-M cross-compilation, flashing, and debugging tools, and includes dedicated integration tests and release automation.New Embedded Rust Devcontainer
.devcontainer/embedded-rust/devcontainer.jsonand.devcontainer/embedded-rust/devcontainer-metadata.jsonto define the embedded Rust devcontainer, specifying the base image, VS Code extensions, and environment variables. [1] [2].devcontainer/embedded-rust/tool-inventory.jsonto list the tools included in the embedded Rust container.templates/embedded-rust/devcontainer-template.jsonfor template and version management.test/embedded-rust/integration-tests.batsto provide integration tests for building and verifying ARM Cortex-M binaries.Dockerfile and Build Logic Updates
.devcontainer/rust/Dockerfileto support an embedded flavor via theBUILD_EMBEDDED_FLAVORargument, conditionally installing ARM targets and embedded tools (flip-link,probe-rs-tools) only for the embedded variant. [1] [2] [3]CI/CD and Release Pipeline Updates
embedded-rustflavor, including build, test, vulnerability scan, dependency update, image cleanup, and release workflows. [1] [2] [3] [4] [5] [6]Documentation Updates
README.mdto document the newamp-devcontainer-embedded-rustimage, its features, and how it differs from the standard Rust container. [1] [2].github/RELEASE_TEMPLATE.mdto include the new image and its tool listing. [1] [2].github/TOOL_VERSION_ISSUE_TEMPLATE.mdto track embedded Rust tools for version checks.✔️ Checklist