Skip to content

Commit 2b25527

Browse files
author
Antigravity
committed
merge: adoption roadmap + azure + bicep
2 parents d7813ee + c7a206c commit 2b25527

File tree

19 files changed

+1012
-55
lines changed

19 files changed

+1012
-55
lines changed

.fortressci.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ scanners:
3636
iac:
3737
enabled: true
3838
tool: checkov
39+
# Scans Terraform, CloudFormation, Kubernetes, and Bicep
3940

4041
container:
4142
enabled: true
@@ -50,3 +51,8 @@ ai:
5051
provider: anthropic
5152
model: claude-3-5-sonnet-20240620
5253
explain_severity: [critical, high]
54+
55+
adoption:
56+
enabled: true
57+
planning_horizon_days: 90
58+
target_maturity_score: 85

.github/scripts/post_summary.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ module.exports = async ({ github, context }) => {
55
"semgrep.sarif",
66
"trivy-results.sarif",
77
"checkov.sarif",
8+
"bicep.sarif",
89
"snyk.sarif",
910
];
1011
let checkRows = [];

.github/workflows/devsecops.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ jobs:
205205
run: python3 -m pip install --upgrade pip checkov
206206

207207
- name: Checkov Scan
208-
run: checkov -d ./terraform --quiet --compact --soft-fail --output sarif > checkov.sarif || true
208+
run: checkov -d . --quiet --compact --soft-fail --output sarif > checkov.sarif || true
209209

210210
- name: Upload SARIF
211211
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0

CHANGELOG.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,22 @@ The format is based on Keep a Changelog, and the project follows Semantic Versio
66

77
## [Unreleased]
88

9+
## [2.2.0] - 2026-02-16
10+
11+
### Added
12+
- Added `scripts/generate-adoption-roadmap.py` to generate prioritized 30/60/90-day DevSecOps plans with maturity and feasibility scoring.
13+
- Added roadmap outputs in scan flow: `results/adoption-roadmap.json` and `results/adoption-roadmap.md`.
14+
- Added MCP tool `get_devsecops_adoption_roadmap` for assistant access to roadmap data.
15+
- Added dedicated Bicep SARIF handling (`bicep.sarif`) in local scan orchestration and reporting pipelines.
16+
- Added Bicep summary regression test: `tests/python/test_summarize_bicep.py`.
17+
- Added roadmap generator tests: `tests/python/test_generate_adoption_roadmap.py`.
18+
- Added an end-to-end Azure DevOps template flow in `templates/azure/azure-pipelines.yml` (build, scan, gate, publish artifacts, roadmap highlights).
19+
20+
### Changed
21+
- Updated GitHub IaC scan scope from `./terraform` to repository root (`.`) to include Bicep and non-Terraform IaC paths.
22+
- Updated setup wizard detection to identify Bicep repositories.
23+
- Updated README and roadmap documentation to reflect roadmap intelligence, Azure integration, and Bicep coverage.
24+
925
### Fixed
1026
- Updated `.github/workflows/devsecops.yml` run blocks to satisfy actionlint ShellCheck checks (quoted expansions and consolidated audit JSON generation).
1127

Dockerfile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,11 @@ COPY scripts/auto-fix.sh /usr/local/bin/auto-fix
4040
COPY scripts/build-attack-graph.py /usr/local/bin/build-attack-graph
4141
COPY scripts/cross-repo-analyzer.py /usr/local/bin/cross-repo-analyzer
4242
COPY scripts/fortressci-doctor.sh /usr/local/bin/fortressci-doctor
43+
COPY scripts/generate-adoption-roadmap.py /usr/local/bin/generate-adoption-roadmap
4344
COPY templates/ /templates/
4445

4546
# Set permissions
46-
RUN chmod +x /usr/local/bin/fortressci-scan /usr/local/bin/check-thresholds.sh /usr/local/bin/fortressci-waiver /usr/local/bin/generate-sbom /usr/local/bin/fortressci-policy-check /usr/local/bin/generate-compliance-report /usr/local/bin/ai-triage /usr/local/bin/generate-badge /usr/local/bin/auto-fix /usr/local/bin/build-attack-graph /usr/local/bin/cross-repo-analyzer /usr/local/bin/fortressci-doctor
47+
RUN chmod +x /usr/local/bin/fortressci-scan /usr/local/bin/check-thresholds.sh /usr/local/bin/fortressci-waiver /usr/local/bin/generate-sbom /usr/local/bin/fortressci-policy-check /usr/local/bin/generate-compliance-report /usr/local/bin/ai-triage /usr/local/bin/generate-badge /usr/local/bin/auto-fix /usr/local/bin/build-attack-graph /usr/local/bin/cross-repo-analyzer /usr/local/bin/fortressci-doctor /usr/local/bin/generate-adoption-roadmap
4748

4849
# Create results directory
4950
RUN mkdir -p /results

README.md

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Catch issues before they are committed.
1414

1515
- **Secrets Detection**: [TruffleHog](https://github.com/trufflesecurity/trufflehog) scans for hardcoded credentials.
1616
- **Code Quality**: Standard hooks for trailing whitespace and file integrity.
17-
- **IaC Scanning**: [Checkov](https://www.checkov.io/) runs locally to catch Terraform/CloudFormation issues.
17+
- **IaC Scanning**: [Checkov](https://www.checkov.io/) runs locally to catch Terraform/CloudFormation/Bicep issues.
1818

1919
### Phase 2: Automated Pipeline (CI/CD)
2020

@@ -23,7 +23,7 @@ Automated checks on every push and pull request across **6 CI platforms**.
2323
- **Secret Scanning**: TruffleHog deep scan on git history.
2424
- **SAST**: [Semgrep](https://semgrep.dev/) scans source code for vulnerabilities (OWASP Top 10).
2525
- **SCA**: [Snyk](https://snyk.io/) checks dependencies for known CVEs.
26-
- **IaC Scanning**: Checkov scans Terraform, CloudFormation, and Kubernetes manifests.
26+
- **IaC Scanning**: Checkov scans Terraform, CloudFormation, Kubernetes, and Bicep manifests.
2727
- **Container Security**: [Trivy](https://github.com/aquasecurity/trivy) scans Docker images for OS and library vulnerabilities.
2828
- **DAST**: [OWASP ZAP](https://www.zaproxy.org/) baseline scan for runtime attack surface.
2929
- **Signing**: [Cosign](https://github.com/sigstore/cosign) signs container images.
@@ -33,6 +33,7 @@ Automated checks on every push and pull request across **6 CI platforms**.
3333
### Phase 3: Platform & Intelligence
3434

3535
- **AI Triage**: Automated findings analysis and prioritisation via LLMs.
36+
- **DevSecOps Adoption Roadmap**: 30/60/90-day prioritized plan with maturity and feasibility scores.
3637
- **Auto-Remediation**: Self-healing pipelines that open PRs to fix vulnerabilities.
3738
- **Cross-Repo Analyzer**: Shared dependency and vulnerability hotspot analysis across many repositories.
3839
- **Security Dashboard**: Real-time visualisations of security posture and trends.
@@ -79,7 +80,24 @@ docker run --rm \
7980
fortressci/scan /workspace
8081
```
8182

82-
This runs the full suite including AI triage, SBOM generation, and threshold gating.
83+
This runs the full suite including AI triage, SBOM generation, threshold gating, and an adoption roadmap.
84+
85+
---
86+
87+
## Azure DevOps Integration
88+
89+
FortressCI ships an Azure DevOps pipeline template at `templates/azure/azure-pipelines.yml`.
90+
91+
```bash
92+
# Generate Azure pipeline + FortressCI config in your repo
93+
./scripts/fortressci-init.sh --ci azure
94+
```
95+
96+
The Azure pipeline:
97+
- Builds `fortressci/scan` in CI.
98+
- Runs the full FortressCI scan with policy gates.
99+
- Validates required secrets (`SNYK_TOKEN`) before scanning.
100+
- Publishes `results/` as a build artifact, including `adoption-roadmap.json`, `adoption-roadmap.md`, and IaC SARIF outputs such as `bicep.sarif`.
83101

84102
---
85103

@@ -184,6 +202,20 @@ python3 scripts/ai-triage.py --results-dir results/ --config .fortressci.yml
184202

185203
---
186204

205+
## DevSecOps Adoption Roadmap
206+
207+
Generate a practical, prioritized adoption plan with maturity and feasibility scoring.
208+
209+
```bash
210+
python3 scripts/generate-adoption-roadmap.py --results-dir results/ --workspace . --config .fortressci.yml
211+
```
212+
213+
Outputs:
214+
- `results/adoption-roadmap.json` (machine-readable roadmap with scoring and priority)
215+
- `results/adoption-roadmap.md` (human-readable 30/60/90 plan)
216+
217+
---
218+
187219
## Cross-Repo Dependency Risk Analysis
188220

189221
Use SBOM and SCA outputs from multiple repositories to find shared dependency
@@ -224,6 +256,7 @@ Output: `./org-results/cross-repo-analysis.json`
224256
│ ├── auto-fix.sh # Automated remediation
225257
│ ├── cross-repo-analyzer.py # Shared dependency risk analysis
226258
│ ├── generate-badge.py # Security scoring & badges
259+
│ ├── generate-adoption-roadmap.py # DevSecOps roadmap + feasibility scoring
227260
│ ├── generate-sbom.sh # SBOM generator
228261
│ ├── fortressci-policy-check.sh # Policy enforcement
229262
│ ├── generate-report.py # HTML report generator

ROADMAP.md

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
**Achievements:**
2525
- Implemented `scripts/fortressci-init.sh` setup wizard.
26-
- Automated detection of project types (Node, Python, Go, Java).
26+
- Automated detection of project types (Node, Python, Go, Java, Bicep).
2727
- Generated tailored CI/CD workflows and security configurations.
2828

2929
### 1.1.2 — Multi-CI Platform Templates [COMPLETED ✅]
@@ -167,6 +167,16 @@
167167
- Implemented `scripts/generate-compliance-report.py` to automate mapping.
168168
- Integrated compliance reporting into both local scans and CI/CD pipelines.
169169

170+
### 1.2.7 — Bicep IaC Support [COMPLETED ✅]
171+
172+
**Goal:** Add first-class IaC scanning support for Azure Bicep.
173+
174+
**Achievements:**
175+
- Added Bicep detection and dedicated Bicep SARIF output in scan orchestration.
176+
- Included Bicep findings in summary aggregation and HTML reporting.
177+
- Extended CI summary handling to include `bicep.sarif`.
178+
- Added regression tests to preserve Bicep summary behavior.
179+
170180
---
171181

172182
## v2.0.x: Woo Factor & Platform
@@ -233,6 +243,7 @@
233243
**Achievements:**
234244
- Implemented a FastMCP-based server in `integrations/mcp-server/`.
235245
- Provided tools for AI assistants to query scan summaries, compliance status, and waivers.
246+
- Added roadmap retrieval for AI assistants (`get_devsecops_adoption_roadmap`).
236247
- Enabled seamless integration between FortressCI data and AI-powered development workflows.
237248

238249
---
@@ -248,6 +259,27 @@
248259

249260
---
250261

262+
### 2.0.8 — DevSecOps Adoption Roadmap Engine [COMPLETED ✅]
263+
264+
**Goal:** Turn findings into execution plans that teams can adopt quickly.
265+
266+
**Achievements:**
267+
- Implemented `scripts/generate-adoption-roadmap.py`.
268+
- Added maturity and feasibility scoring dimensions.
269+
- Generated prioritized actions and 30/60/90-day roadmap artifacts.
270+
- Integrated roadmap generation into local scan flow and Docker image.
271+
272+
### 2.0.9 — Azure DevOps End-to-End Integration [COMPLETED ✅]
273+
274+
**Goal:** Provide production-ready Azure DevOps execution with artifacted roadmap output.
275+
276+
**Achievements:**
277+
- Rebuilt Azure pipeline template to run FortressCI end-to-end in one job.
278+
- Added pre-scan secret validation with actionable error messaging.
279+
- Published full `results/` artifacts including roadmap files.
280+
281+
---
282+
251283
## Long-Term Vision
252284

253285
### FortressCI Cloud (SaaS)

fortressci-roadmap.md

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# FortressCI Roadmap
22

3-
> Last updated: February 2026
3+
> Last updated: February 16, 2026
44
55
---
66

@@ -11,7 +11,7 @@
1111
#### Phase 1: Shift Left (Local Development)
1212
- Pre-commit hooks via `.pre-commit-config.yaml`
1313
- TruffleHog secrets detection (blocks commits with hardcoded credentials)
14-
- Checkov IaC scanning locally (Terraform, CloudFormation)
14+
- Checkov IaC scanning locally (Terraform, CloudFormation, Bicep)
1515
- Standard code quality hooks (trailing whitespace, file integrity)
1616

1717
#### Phase 2: Automated Pipeline (CI/CD)
@@ -40,6 +40,13 @@
4040
- Delivered `scripts/fortressci-doctor.sh` for readiness checks (tooling, config, hooks, and optional governance probe)
4141
- Delivered script quality/test foundation: `quality-lint` CI job and `pytest` + `bats` suites under `tests/`
4242

43+
### ✅ v2.2.x — Adoption Intelligence & Bicep Expansion (Delivered)
44+
- Delivered DevSecOps roadmap engine (`scripts/generate-adoption-roadmap.py`) with maturity and feasibility scores.
45+
- Added roadmap artifacts in scan output: `adoption-roadmap.json` and `adoption-roadmap.md`.
46+
- Added roadmap retrieval in MCP integration (`get_devsecops_adoption_roadmap`).
47+
- Added first-class Bicep SARIF handling and aggregation (`bicep.sarif`) in scan summary and reporting.
48+
- Upgraded Azure DevOps template to build, scan, gate, and publish complete FortressCI artifacts.
49+
4350
---
4451

4552
## Upcoming Phases

integrations/mcp-server/server.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,5 +59,18 @@ async def get_ai_triage_explanations() -> str:
5959
with open(triage_path, "r") as f:
6060
return f.read()
6161

62+
63+
@mcp.tool()
64+
async def get_devsecops_adoption_roadmap() -> str:
65+
"""Get the latest prioritized DevSecOps adoption roadmap and feasibility scoring."""
66+
roadmap_path = os.path.join(RESULTS_DIR, "adoption-roadmap.json")
67+
if not os.path.exists(roadmap_path):
68+
return "No adoption roadmap found."
69+
70+
with open(roadmap_path, "r") as f:
71+
roadmap = json.load(f)
72+
73+
return json.dumps(roadmap, indent=2)
74+
6275
if __name__ == "__main__":
6376
mcp.run()

scripts/fortressci-init.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ if [ -f "package.json" ]; then echo "✓ Detected: Node.js"; LANG="node"; fi
2222
if [ -f "requirements.txt" ] || [ -f "pyproject.toml" ]; then echo "✓ Detected: Python"; LANG="python"; fi
2323
if [ -f "go.mod" ]; then echo "✓ Detected: Go"; LANG="go"; fi
2424
if [ -f "pom.xml" ] || [ -f "build.gradle" ]; then echo "✓ Detected: Java"; LANG="java"; fi
25+
if find . -maxdepth 5 -type f -name "*.bicep" | grep -q "."; then echo "✓ Detected: Bicep"; LANG="bicep"; fi
2526

2627
# Detect CI platform
2728
# Detect CI platform

0 commit comments

Comments
 (0)