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, 上游代理, 安全规则引擎, 自动笔记, 请求拦截, 逆向工具