feat(🍨): add documentation (docs) flavor#1335
Conversation
| # syntax=docker/dockerfile:1 | ||
|
|
||
| ARG BASE_IMAGE=ghcr.io/philips-software/amp-devcontainer-base:edge | ||
| FROM ${BASE_IMAGE} |
There was a problem hiding this comment.
Pull request overview
Adds a new docs devcontainer flavor to provide a consistent tooling environment for documentation generation, and wires it into the repo’s CI/release automation alongside existing flavors.
Changes:
- Introduces a new
.devcontainer/docsflavor (Dockerfile, devcontainer configs, pinned apt + pip dependencies). - Adds docs integration tests and sample workspace inputs for PlantUML/Graphviz/SBDL.
- Updates README, Dependabot, release templates, and multiple workflows to include the new
docsimage flavor.
Reviewed changes
Copilot reviewed 20 out of 20 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| test/docs/workspace/sample.sbdl | Adds a sample SBDL requirement model used by docs integration tests. |
| test/docs/workspace/graph.dot | Adds a sample Graphviz DOT input used by docs integration tests. |
| test/docs/workspace/diagram.puml | Adds a sample PlantUML diagram used by docs integration tests. |
| test/docs/integration-tests.bats | Adds version + functional tests for docs tooling (Graphviz/PlantUML/SBDL). |
| README.md | Documents the new amp-devcontainer-docs flavor and updates flavor list/description. |
| .github/workflows/vulnerability-scan.yml | Includes docs in the vulnerability scan flavor matrix. |
| .github/workflows/update-dependencies.yml | Includes docs in dependency update matrices (apt + VS Code extensions). |
| .github/workflows/release-build.yml | Includes docs in release note update matrix. |
| .github/workflows/pr-image-cleanup.yml | Includes amp-devcontainer-docs (and base) in PR tag cleanup. |
| .github/workflows/image-cleanup.yml | Includes amp-devcontainer-docs (and base) in image cleanup. |
| .github/workflows/build-push-test.yml | Builds/tests the new docs flavor in CI. |
| .github/RELEASE_TEMPLATE.md | Adds the amp-devcontainer-docs package row to release notes template. |
| .github/dependabot.yml | Adds .devcontainer/docs to Dependabot update scope. |
| .devcontainer/docs/requirements.txt | Adds pinned Python dependencies (pip-compile output) for docs tooling. |
| .devcontainer/docs/requirements.in | Adds the input requirements set for pip-compile (currently sbdl). |
| .devcontainer/docs/Dockerfile | Defines the docs container build (apt + pip installs, Python env setup). |
| .devcontainer/docs/devcontainer.json | Adds the docs devcontainer configuration and editor customizations. |
| .devcontainer/docs/devcontainer-metadata.json | Adds metadata and recommended extensions for docs work. |
| .devcontainer/docs/apt-requirements.json | Adds pinned apt dependencies for docs tooling (Graphviz/PlantUML/pip). |
| .devcontainer/docs-test/devcontainer.json | Adds a devcontainer config for testing the prebuilt docs image. |
| matrix: | ||
| flavor: ["base", "cpp", "rust"] | ||
| flavor: [base, cpp, docs, rust] | ||
| # Using our own container is required since we need all package sources | ||
| # set-up correctly. | ||
| container: ghcr.io/philips-software/amp-devcontainer-${{ matrix.flavor }}:edge |
| # Install the base system with all tool dependencies | ||
| RUN --mount=type=bind,source=.devcontainer/docs/apt-requirements.json,target=/tmp/apt-requirements.json \ |
📦 Container Size AnalysisNote Comparing 📈 Size Comparison Table
|
✅
|
| Descriptor | Linter | Files | Fixed | Errors | Warnings | Elapsed time |
|---|---|---|---|---|---|---|
| ✅ ACTION | actionlint | 23 | 0 | 0 | 0.23s | |
| ✅ DOCKERFILE | hadolint | 4 | 0 | 0 | 0.3s | |
| ✅ JSON | npm-package-json-lint | yes | no | no | 0.58s | |
| ✅ JSON | prettier | 32 | 6 | 0 | 0 | 1.02s |
| ✅ JSON | v8r | 32 | 0 | 0 | 13.8s | |
| ✅ MARKDOWN | markdownlint | 12 | 0 | 0 | 0 | 1.15s |
| ✅ MARKDOWN | markdown-table-formatter | 12 | 0 | 0 | 0 | 0.34s |
| ✅ REPOSITORY | checkov | yes | no | no | 28.12s | |
| ✅ REPOSITORY | gitleaks | yes | no | no | 1.01s | |
| ✅ REPOSITORY | git_diff | yes | no | no | 0.01s | |
| ✅ REPOSITORY | grype | yes | no | no | 55.46s | |
| osv-scanner | yes | 1 | no | 0.83s | ||
| ✅ REPOSITORY | secretlint | yes | no | no | 2.07s | |
| ✅ REPOSITORY | syft | yes | no | no | 2.43s | |
| ✅ REPOSITORY | trivy | yes | no | no | 12.44s | |
| ✅ REPOSITORY | trivy-sbom | yes | no | no | 0.29s | |
| ✅ REPOSITORY | trufflehog | yes | no | no | 6.27s | |
| lychee | 99 | 2 | 0 | 54.99s | ||
| ✅ YAML | prettier | 32 | 0 | 0 | 0 | 1.29s |
| ✅ YAML | v8r | 32 | 0 | 0 | 12.78s | |
| ✅ YAML | yamllint | 32 | 0 | 0 | 1.11s |
Detailed Issues
⚠️ SPELL / lychee - 2 errors
📝 Summary
---------------------
🔍 Total..........143
🔗 Unique.........120
✅ Successful.....136
⏳ Timeouts.........0
🔀 Redirected......17
👻 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 README.md
[404] https://github.com/orgs/philips-software/packages/container/package/amp-devcontainer-docs (at 57:3) | Rejected status code: 404 Not Found
Hint: Followed 17 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`
⚠️ 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/cortex-m/Cargo.lock file and found 20 packages
Scanned test/rust/workspace/clippy/Cargo.lock file and found 1 package
Scanned test/rust/workspace/cortex-mf/Cargo.lock file and found 20 packages
End status: 94 dirs visited, 309 inodes visited, 8 Extract calls, 28.025384ms elapsed, 28.025615ms 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/rust/workspace/cortex-m/Cargo.lock |
| https://osv.dev/RUSTSEC-2026-0110 | | crates.io | bare-metal | 0.2.5 | -- | test/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.5.0 (59 linters)
- oxsecurity/megalinter/flavors/javascript@v9.5.0 (62 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.5.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_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
|
| # Install the base system with all tool dependencies | ||
| RUN --mount=type=bind,source=.devcontainer/docs/apt-requirements.json,target=/tmp/apt-requirements.json \ | ||
| --mount=type=bind,source=.devcontainer/docs/requirements.txt,target=/tmp/requirements.txt \ | ||
| --mount=type=cache,target=/cache,sharing=locked \ | ||
| --mount=type=cache,target=/var/cache/apt,sharing=locked \ | ||
| --mount=type=cache,target=/var/lib/apt,sharing=locked \ | ||
| --mount=type=cache,target=/var/log,sharing=locked <<EOF |
| # bats test_tags=Version,Pip | ||
| @test "pip version should be aligned with the expected version" { | ||
| EXPECTED_VERSION=$(get_expected_semver_for python3-pip) | ||
| INSTALLED_VERSION=$(pip --version | to_semver) | ||
|
|
||
| assert_equal "$INSTALLED_VERSION" "$EXPECTED_VERSION" | ||
| } | ||
|
|
||
| # bats test_tags=Version,Sbdl | ||
| @test "sbdl version should be aligned with the expected version" { | ||
| EXPECTED_VERSION=$(grep sbdl ${BATS_TEST_DIRNAME}/../../.devcontainer/docs/requirements.in | to_semver) | ||
| INSTALLED_VERSION=$(sbdl --version | to_semver) | ||
|
|
||
| assert_equal "$INSTALLED_VERSION" "$EXPECTED_VERSION" | ||
| } |
📦 Container Size AnalysisNote Comparing 📈 Size Comparison Table
|
📦 Container Size AnalysisNote Comparing 📈 Size Comparison Table
|
📦 Container Size AnalysisNote Comparing 📈 Size Comparison Table
|
| teardown() { | ||
| popd | ||
| } |
📦 Container Size AnalysisNote Comparing 📈 Size Comparison Table
|




🚀 Hey, I have created a Pull Request
Description of changes
This pull request introduces a new development container setup for documentation work, including Docker configuration, dependency management, and editor customizations. The changes add all required files to build and use a dedicated devcontainer for documentation, ensuring consistent tooling and environment across contributors.
Devcontainer and Docker setup:
.devcontainer/docs/Dockerfileto define a documentation-focused container, installing required system packages and Python dependencies, and setting up the Python environment..devcontainer/docs/devcontainer.jsonto configure the devcontainer build process, environment variables, and VS Code customizations for the documentation workspace..devcontainer/docs-test/devcontainer.jsonfor testing the documentation container using a prebuilt image.Dependency management:
.devcontainer/docs/apt-requirements.jsonand.devcontainer/docs/requirements.in/.devcontainer/docs/requirements.txtto specify and lock system and Python package dependencies for the documentation environment. [1] [2] [3]Editor and environment customizations:
.devcontainer/docs/devcontainer-metadata.jsonto configure remote environment variables and recommend VS Code extensions for documentation tasks.✔️ Checklist