sitech-nafith/shared-workflows
GitHub: sitech-nafith/shared-workflows
为 sitech-nafith 组织提供一套集中维护的可复用 GitHub Actions 工作流,统一各仓库的 CI/CD 检查标准与安全基线。
Stars: 0 | Forks: 0
# sitech-nafith 共享工作流
## 概述
本仓库提供可复用的 GitHub Actions 工作流(通过 `workflow_call` 调用),适用于 **sitech-nafith** GitHub 组织下的所有仓库。每个工作流封装了一项标准检查,这样一来,对检查实现的改进就会自动传播给每个调用方。
工作流由平台工程团队维护。关于规定哪些检查是强制性的、它们的通过/失败标准以及采纳截止日期的组织政策,已在 [docs/standard-checks.md](docs/standard-checks.md) 中定义。
所有现存的 sitech-nafith 仓库必须在 **2026 年 12 月 31 日**之前采纳这些标准检查。
## 可用工作流
| 工作流 | 文件 | 检查内容 | 典型运行时间 |
|---|---|---|---|
| 密钥扫描 | `secret-scan.yml` | 扫描完整 git 历史中提交的密钥 (Gitleaks) | 30–90 秒 |
| SAST | `sast-python.yml` | 扫描 Python 源代码中的不安全代码模式 (Bandit) | 20–60 秒 |
| Lint 与格式化 | `lint-python.yml` | 代码风格与格式化 (Ruff) | 10–30 秒 |
| 单元测试 | `test-python.yml` | 执行测试套件并生成覆盖率报告 (Pytest) | 1–5 分钟 |
| Docker 扫描 | `docker-scan.yml` | 构建 Container 镜像 + CVE 扫描 (Trivy) | 2–8 分钟 |
## 快速入门
以下示例展示了一个完整的调用方工作流,适用于一个同时发布 Docker 容器的 Python 项目。将此内容复制到你仓库的 `.github/workflows/ci.yml` 中,并根据你的项目布局调整输入参数。
```
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
secret-scan:
uses: sitech-nafith/shared-workflows/.github/workflows/secret-scan.yml@main
sast:
uses: sitech-nafith/shared-workflows/.github/workflows/sast-python.yml@main
with:
scan_paths: "app/ sidecar/"
lint:
uses: sitech-nafith/shared-workflows/.github/workflows/lint-python.yml@main
with:
lint_paths: "app/ sidecar/ tests/"
test:
uses: sitech-nafith/shared-workflows/.github/workflows/test-python.yml@main
with:
cov_source: "app"
min_coverage: 60
docker-scan:
uses: sitech-nafith/shared-workflows/.github/workflows/docker-scan.yml@main
with:
image_name: "nafith/my-service"
fail_on_severity: "CRITICAL"
```
## 各工作流用法
### secret-scan
针对仓库运行 Gitleaks。默认扫描完整的 git 历史。
```
jobs:
secret-scan:
uses: sitech-nafith/shared-workflows/.github/workflows/secret-scan.yml@main
```
使用显式版本锁定和浅度扫描(需要豁免——参见 [standard-checks.md](docs/standard-checks.md)):
```
jobs:
secret-scan:
uses: sitech-nafith/shared-workflows/.github/workflows/secret-scan.yml@main
with:
gitleaks_version: "8.27.2"
full_history: false
```
| 输入 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| `gitleaks_version` | string | `8.27.2` | 要下载的 Gitleaks 发行版本 |
| `full_history` | boolean | `true` | 扫描完整的 git 历史。`false` 表示仅扫描 HEAD(不推荐)。 |
### sast-python
在 Python 源代码目录上运行 Bandit SAST。
```
jobs:
sast:
uses: sitech-nafith/shared-workflows/.github/workflows/sast-python.yml@main
with:
scan_paths: "app/"
```
| 输入 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| `python_version` | string | `3.12` | runner 的 Python 版本 |
| `scan_paths` | string | `app/` | 空格分隔的要扫描的目录或文件 |
| `severity_level` | string | `medium` | 报告的最低严重级别:`low`、`medium`、`high` |
| `confidence_level` | string | `medium` | 报告的最低置信度:`low`、`medium`、`high` |
### lint-python
运行 `ruff check`(lint)和 `ruff format --check`(格式验证)。
```
jobs:
lint:
uses: sitech-nafith/shared-workflows/.github/workflows/lint-python.yml@main
with:
lint_paths: "app/ tests/"
```
| 输入 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| `python_version` | string | `3.12` | runner 的 Python 版本 |
| `lint_paths` | string | `.` | 空格分隔的要检查的目录或文件 |
| `ruff_version` | string | `""` | 锁定特定的 Ruff 版本(例如 `0.4.4`)。留空则安装最新版本。 |
### test-python
运行 pytest 并进行覆盖率测量。会自动安装 `requirements.txt` 以及 pytest、pytest-cov、pytest-asyncio 和 httpx。
```
jobs:
test:
uses: sitech-nafith/shared-workflows/.github/workflows/test-python.yml@main
with:
cov_source: "app"
min_coverage: 60
```
| 输入 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| `python_version` | string | `3.12` | runner 的 Python 版本 |
| `test_paths` | string | `tests/` | 传递给 pytest 的路径 |
| `requirements_file` | string | `requirements.txt` | 要安装的依赖要求文件 |
| `extra_packages` | string | `""` | 额外要安装的 pip 包(空格分隔) |
| `cov_source` | string | `app` | 用于 `--cov=` 的参数 |
| `min_coverage` | number | `0` | 如果覆盖率低于此百分比则失败。`0` = 不强制要求。 |
### docker-scan
为 `linux/amd64` 构建 Docker 镜像并使用 Trivy 进行扫描。绝不会推送到 registry。
```
jobs:
docker-scan:
uses: sitech-nafith/shared-workflows/.github/workflows/docker-scan.yml@main
with:
image_name: "nafith/my-service"
```
使用非默认的 Dockerfile 位置,并在发现 CRITICAL CVE 时判定为失败:
```
jobs:
docker-scan:
uses: sitech-nafith/shared-workflows/.github/workflows/docker-scan.yml@main
with:
image_name: "nafith/firewall-sidecar"
dockerfile_context: "sidecar/"
fail_on_severity: "CRITICAL"
```
| 输入 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| `image_name` | string | (必填) | 本地镜像名称(例如 `nafith/gateway-manager`) |
| `dockerfile_context` | string | `.` | Docker 构建上下文目录 |
| `dockerfile_path` | string | `""` | Dockerfile 的路径。留空则默认为上下文中的 `Dockerfile`。 |
| `trivy_severity` | string | `CRITICAL,HIGH,MEDIUM` | Trivy 应报告的严重级别 |
| `trivy_ignore_unfixed` | boolean | `true` | 排除没有可用修复补丁的 CVE |
| `fail_on_severity` | string | `""` | 如果此严重级别发现问题则使作业失败。留空 = 仅作为信息参考。 |
## 采纳截止日期
所有 sitech-nafith 仓库必须在 **2026 年 12 月 31 日**之前采纳 [docs/standard-checks.md](docs/standard-checks.md) 中定义的标准检查。
在 2026 年 10 月 1 日之后创建的新仓库,必须在创建之时就包含标准检查。
有关完整的推广时间表和背景信息,请参阅[采纳公告](#)。
## 支持
- 在本仓库中提 issue,用于咨询有关工作流行为、豁免申请或报告 bug 的问题。
- 如有紧急安全问题,请直接联系平台工程团队。
- 请查阅 [docs/](docs/) 目录中各项检查的文档,以获取详细的使用指南和常见的故障排除步骤。
标签:DevSecOps, GitHub Actions, 上游代理, 安全规则引擎, 自动笔记, 请求拦截, 逆向工具