NDDev-it-com/nddev-ci-workflows
GitHub: NDDev-it-com/nddev-ci-workflows
一套按 GitHub 仓库计费场景分层、提供 SHA 固定的可复用 CI/CD 与安全治理工作流的开源自动化知识库。
Stars: 0 | Forks: 0
# nddev-ci-workflows
一个针对 NDDev 资产的 **2026 年 7 月 GitHub 原生 CI/CD、安全、治理与供应链
自动化知识库及可复用工作流库**。
它区分了三种计费现实——**公开 OSS**、**免费私有**,以及
**付费私有/GHAS**——为每种情况提供了 SHA 固定的可复用工作流,并在 [`docs/`](docs/00-overview.md) 和机器可读的
[`catalog/`](catalog/README.md) 中记录了每项功能的状态、成本模型、风险和实现路径。
## 按仓库计费现实划分的三个层级
| 层级 | 您将获得的内容 | 备注 |
| --- | --- | --- |
| **公开 OSS** | 完整的免费安全套件:CodeQL、OSSF Scorecard、dependency review、原生 secret scanning、gitleaks、actionlint、zizmor (SARIF)、harden-runner、SBOM + attestations。 | 标准的托管 runner 和 code scanning 在公开仓库中是免费的。 |
| **免费私有** | 仅限零成本:actionlint、zizmor(无 SARIF)、gitleaks、私有静态验证、跨平台冒烟测试、SBOM + attestations、OIDC。 | CodeQL、原生 secret scanning、dependency review 和 harden-runner 在私有仓库中是 **付费的**,因此在此处被排除。 |
| **付费私有 / GHAS** | 通过 GitHub Code Security / Secret Protection,在私有仓库中包含公开仓库的所有内容。 | 需要付费计划。 |
请参阅 [`docs/01-public-oss-free.md`](docs/01-public-oss-free.md)、
[`docs/02-private-free.md`](docs/02-private-free.md) 和
[`docs/03-private-paid-ghas.md`](docs/03-private-paid-ghas.md)。
## 功能 → 工作流映射
| 功能 | 工作流 | 公开 | 免费私有 | 付费私有 |
| --- | --- | :---: | :---: | :---: |
| CodeQL code scanning | `public-codeql.yml` | ✅ | ❌ 付费 | ✅ |
| OSSF Scorecard (SARIF) | `public-scorecard.yml` | ✅ | ❌ | ✅ |
| OSSF Scorecard (JSON artifact) | `public-scorecard-json.yml` | ✅ | ❌ | ✅ |
| Dependency Review | `public-dependency-review.yml` | ✅ | ❌ 付费 | ✅ |
| Gitleaks secret scan | `secret-scan.yml` | ✅ | ✅ | ✅ |
| actionlint | `actionlint.yml` | ✅ | ✅ | ✅ |
| zizmor (SARIF) | `zizmor-sarif.yml` | ✅ | ❌(需要 code scanning) | ✅ |
| zizmor(无 SARIF) | `zizmor-no-sarif.yml` | ✅ | ✅ | ✅ |
| 跨平台冒烟测试 | `cross-platform-smoke.yml` | ✅ | ✅ | ✅ |
| 发布供应链(SBOM + attest) | `release-supply-chain.yml` | ✅ | ✅ | ✅ |
| 轻量级静态验证 | `private-static.yml` | ✅ | ✅ | ✅ |
| 语言 CI 包 | `python-ci.yml`, `node-ci.yml`, `go-ci.yml`, `rust-ci.yml`, `java-ci.yml`, `dotnet-ci.yml` | ✅ | ✅ | ✅ |
| 容器镜像扫描 (Trivy) | `container-ci.yml` | ✅ | ✅ | ✅ |
| Terraform CI | `terraform-ci.yml` | ✅ | ✅ | ✅ |
| 文档 CI | `docs-ci.yml` | ✅ | ✅ | ✅ |
| Monorepo 变更路径路由 | `monorepo-changed-paths.yml` | ✅ | ✅ | ✅ |
机器可读的事实来源是 [`catalog/capabilities.yml`](catalog/capabilities.yml)。
生成的镜像副本位于 [`docs/generated/`](docs/generated/) 中,并由 `scripts/generate_docs.py --check` 进行检查。
## 用法
始终通过 **完整的 commit SHA** 进行固定(tag 是可变的)。Dependabot 会自动更新此 SHA。
调用方作业 **必须授予可复用作业声明的所有权限**,否则运行将在启动时失败——请参阅 [`docs/04-actions-core.md`](docs/04-actions-core.md)。
### 公开仓库
安全套件(push + PR):
```
# .github/workflows/security.yml
name: security
on:
push: { branches: [main] }
pull_request: { branches: [main] }
permissions: {}
jobs:
codeql:
permissions: { actions: read, contents: read, security-events: write }
uses: NDDev-it-com/nddev-ci-workflows/.github/workflows/public-codeql.yml@
with:
languages: '["python","actions"]'
secret-scan:
permissions: { contents: read }
uses: NDDev-it-com/nddev-ci-workflows/.github/workflows/secret-scan.yml@
actionlint:
permissions: { contents: read }
uses: NDDev-it-com/nddev-ci-workflows/.github/workflows/actionlint.yml@
zizmor:
permissions: { contents: read, security-events: write }
uses: NDDev-it-com/nddev-ci-workflows/.github/workflows/zizmor-sarif.yml@
```
Dependency Review **仅在 pull request 上运行**:
```
# .github/workflows/dependency-review.yml
name: dependency-review
on: { pull_request: { branches: [main] } }
permissions: {}
jobs:
dependency-review:
permissions: { contents: read, pull-requests: write }
uses: NDDev-it-com/nddev-ci-workflows/.github/workflows/public-dependency-review.yml@
```
OSSF Scorecard **仅在 push 到默认分支 + 定时任务时运行**(该 action 不支持且不推荐在 `pull_request` 中使用),因此请将其保留在单独的文件中。当 Scorecard 应该作为检查/artifact 信号,而不是持久的 code scanning 告警来源时,请使用 `public-scorecard-json.yml`。JSON 工作流默认 `publish_results: false`,因为可复用工作流调用无法满足 OpenSSF Scorecard webapp 的发布验证格式:
```
# .github/workflows/scorecard.yml
name: scorecard
on:
push: { branches: [main] }
schedule: [{ cron: "31 2 * * 1" }]
permissions: {}
jobs:
scorecard:
permissions: { id-token: write, contents: read, actions: read }
uses: NDDev-it-com/nddev-ci-workflows/.github/workflows/public-scorecard-json.yml@
```
### 私有仓库(免费最小化)
```
# .github/workflows/security.yml
name: security
on:
push: { branches: [main] }
pull_request: { branches: [main] }
permissions: {}
jobs:
secret-scan:
permissions: { contents: read }
uses: NDDev-it-com/nddev-ci-workflows/.github/workflows/secret-scan.yml@
with: { enable_harden_runner: false }
actionlint:
permissions: { contents: read }
uses: NDDev-it-com/nddev-ci-workflows/.github/workflows/actionlint.yml@
with: { enable_harden_runner: false }
zizmor:
permissions: { contents: read } # no security-events: write — least privilege
uses: NDDev-it-com/nddev-ci-workflows/.github/workflows/zizmor-no-sarif.yml@
validate:
permissions: { contents: read }
uses: NDDev-it-com/nddev-ci-workflows/.github/workflows/private-static.yml@
with:
command: "python3 scripts/validate_all.py"
```
### 发布(任一层级)
```
# .github/workflows/release.yml
name: release
on: { push: { tags: ["[0-9]+.[0-9]+.[0-9]+"] } }
permissions: {}
jobs:
publish:
permissions: { contents: write, id-token: write, attestations: write }
uses: NDDev-it-com/nddev-ci-workflows/.github/workflows/release-supply-chain.yml@
with:
version: ${{ github.ref_name }}
package_name: my-repo
archive_paths: "README.md LICENSE VERSION CHANGELOG.md src"
```
发布是 **不可变的**,并附带 SPDX SBOM、SHA256SUMS、build-provenance attestation 以及 SBOM attestation(SLSA v1.0 Build L3)。请使用 [`scripts/verify_attestations.sh`](scripts/verify_attestations.sh) 进行验证。请参阅
[`docs/07-supply-chain-slsa-sbom-attestations.md`](docs/07-supply-chain-slsa-sbom-attestations.md)。
## 常用输入
- `runner` — runner 标签(默认为 `ubuntu-latest`)。
- `enable_harden_runner` — 双层强化开关(公开仓库为 `true`;在私有仓库中为 `false`,因为在私有仓库中 harden-runner 是付费的)。
- `upload_sarif` (zizmor) — 拆分为 `zizmor-sarif.yml`(上传)和
`zizmor-no-sarif.yml`(最小权限;无 `security-events: write`)。
- `egress_policy` — 为 harden-runner 设置 `audit`(默认)或 `block`。
每个工作流都在其头部注释中记录了完整的输入集合。
## 治理
`main` 和发布 tag 受 [`.github/rulesets/`](.github/rulesets/) 中的 **rulesets** 保护(签名 commit、必需的审查 + code-owner 审查、线性历史、`ci-gate` 状态检查、tag 保护)。请参阅 [`docs/08-governance-rulesets.md`](docs/08-governance-rulesets.md) 了解 rulesets 优先模型以及从经典分支保护迁移的指南。
## 仓库映射
```
docs/ CI/CD encyclopedia (public/private tiers, security, supply chain, governance, AI)
catalog/ machine-readable capability + tools + deprecations catalog
docs/generated/ catalog-derived matrices (do not edit by hand)
.github/
workflows/ reusable workflows (the product)
rulesets/ branch/tag/push ruleset specs
ISSUE_TEMPLATE/ issue forms
scripts/ static validators (validate_all.py) + attestation verifier
examples/ copy-paste caller workflows per tier
```
## 约定
- 第三方 action 使用完整的 commit SHA 固定,并附带版本注释。
- 到处都使用最小权限的 `permissions`、`concurrency` 和 `timeout-minutes`。
- 在 `run:` 中不内联使用 `${{ inputs.* }}`(通过 `env:` 传递——zizmor 模板注入强化)。
- Digest 固定的容器镜像(gitleaks)和校验和验证的下载(actionlint)。
## 许可证
[AGPL-3.0-or-later](LICENSE)。作者:Danil Silantyev (github:rldyourmnd),NDDev 首席执行官。
- 安全策略:[SECURITY.md](SECURITY.md)
- 贡献指南:[CONTRIBUTING.md](CONTRIBUTING.md)
- 发布版本:https://github.com/NDDev-it-com/nddev-ci-workflows/releases
标签:AI应用开发, DevSecOps, GitHub Actions, 上游代理, 代码安全, 漏洞枚举, 自动笔记, 逆向工具