,, ,, ,,
`7MM `7MM `7MM
MM MM MM
`7M' `MF'`7MMpMMMb.pMMMb. MM MMpMMMb. .gP"Ya MM `7MMpdMAo. .gP"Ya `7Mb,od8
VA ,V MM MM MM MM MM MM ,M' Yb MM MM `Wb ,M' Yb MM' "'
VA ,V MM MM MM MM MM MM 8M"""""" MM MM M8 8M"""""" MM
VVV MM MM MM MM MM MM YM. , MM MM ,AP YM. , MM
,V .JMML JMML JMML..JMML. .JMML JMML.`Mbmmd'.JMML. MMbmmd' `Mbmmd'.JMML.
,V MM
OOb" .JMML.
一个针对日志库的仓库自动化与交付蓝图,将 GitHub Actions、依赖管理、安全扫描、issue 收集和维护者赞助元数据集中在一处。
[](LICENSE)
[](#testing)
[](#deployment)
[](#configuration)
[](#tech-stack--architecture)
## 目录
- [标题与描述](#yml_helper)
- [功能](#features)
- [技术栈与架构](#tech-stack--architecture)
- [核心技术栈](#core-stack)
- [项目结构](#project-structure)
- [各 YAML 文件的作用](#what-each-yaml-file-does)
- [关键设计决策](#key-design-decisions)
- [快速开始](#getting-started)
- [前置条件](#prerequisites)
- [安装](#installation)
- [测试](#testing)
- [部署](#deployment)
- [使用](#usage)
- [配置](#configuration)
- [GitHub Actions Secrets](#github-actions-secrets)
- [Workflow 触发器与输入](#workflow-triggers-and-inputs)
- [赞助元数据](#funding-metadata)
- [Issue 模板配置](#issue-template-configuration)
- [License](#license)
- [联系方式与社区支持](#contacts--community-support)
## 功能
- 以可审计的 YAML 清单形式,集中管理日志库项目的 GitHub 仓库自动化。
- 通过针对 Python 和 GitHub Actions 生态系统的计划内 `Dependabot` 更新,强制执行依赖项规范。
- 自动批准并合并安全的 `Dependabot` 补丁及次要版本升级,以减少维护开销。
- 运行面向 lint 的 pull request 检查,包括 Node.js 引导、可选的 package-lock 生成以及 JavaScript 语法验证。
- 针对JavaScript 和 TypeScript 的攻击面分析,执行计划性和按需的 `CodeQL` SAST 扫描。
- 提供一个 AI 辅助的 issue 生成 workflow,能够检查 push 和 pull request 并执行 Python 分析入口点。
- 通过结构化的 bug 报告和 feature request 表单,标准化 issue 收集流程。
- 提供一个可复用的 pull request 模板,用于捕捉变更类型、验证步骤和审查规范。
- 通过兼容 GitHub Sponsors 的元数据发布维护者赞助渠道。
- 保持仓库操作具有声明性、可审查性,并易于 fork 或移植到其他与日志相关的项目中。
## 技术栈与架构
### 核心技术栈
- `YAML`:GitHub Actions workflow、issue 表单、赞助配置和依赖自动化的主要配置语言。
- `Markdown`:面向人类的项目文档和 pull request 模板内容。
- `GitHub Actions`:CI/CD 编排与策略执行引擎。
- `Node.js 20`:被 lint workflow 用于安装依赖并运行可选的 lint 或语法检查。
- `Python 3.11`:被 AI 分析 workflow 用于在 GitHub 事件上下文中执行 `trigger action/trigger_action.py`。
- `CodeQL`:用于 JavaScript/TypeScript 分析的静态应用安全测试 (SAST) 引擎。
- `Dependabot`:用于包和 GitHub Action 依赖漂移的自动化更新管理。
### 项目结构
```
.
├── .github/
│ ├── FUNDING.yml
│ ├── dependabot.yml
│ ├── pull_request_template.md
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.yml
│ │ └── feature_request.yml
│ └── workflows/
│ ├── ai-issue.yml
│ ├── dependabot-auto-merge.yml
│ ├── lint.yml
│ └── sast.yml
├── LICENSE
├── README.md
└── trigger action/
└── trigger_action.py
```
### 各 YAML 文件的作用
该代码库规模很小,因此每个 YAML 文件都有特定的操作角色:
| 文件 | 目的 | 操作影响 |
| --- | --- | --- |
| `.github/FUNDING.yml` | 声明 GitHub 认可的赞助平台和自定义捐赠链接。 | 在仓库 UI 中展示支持链接,并集中管理维护者的赞助元数据。 |
| `.github/dependabot.yml` | 配置针对 `pip` 和 `github-actions` 的每周更新扫描。 | 防止 Python 依赖项和 workflow action 版本发生漂移或遗漏安全补丁。 |
| `.github/workflows/ai-issue.yml` | 在向 `main` 分支 `push` 及选定的 pull request 事件上运行 AI 辅助的分析流水线。 | 安装 Python 依赖项,注入 GitHub 事件元数据,并执行 `trigger action/trigger_action.py` 以创建或丰富 issue。 |
| `.github/workflows/dependabot-auto-merge.yml` | 审查由 `dependabot[bot]` 开启的 pull request。 | 自动批准并为安全的补丁/次要依赖项更新启用合并自动化。 |
| `.github/workflows/lint.yml` | 执行 pull request lint 和静态验证。 | 引导 Node.js,在缺失时创建 `package-lock.json`,可选择运行仓库 lint 脚本,并验证 `api/` 下的 JavaScript 语法。 |
| `.github/workflows/sast.yml` | 执行 `CodeQL` 静态分析。 | 在 PR、手动调度和每周计划任务中扫描 JavaScript/TypeScript 代码,以呈现安全发现。 |
| `.github/ISSUE_TEMPLATE/bug_report.yml` | 结构化的 bug 报告表单。 | 强制要求提供复现细节、预期行为、实际堆栈追踪和环境上下文。 |
| `.github/ISSUE_TEMPLATE/feature_request.yml` | 结构化的 feature 提案表单。 | 捕捉问题上下文、建议的解决方案和替代方案,用于路线图筛选。 |
### 关键设计决策
1. `优先使用 GitHub 原生自动化而非自定义基础设施`
- 该项目依赖于内置的 GitHub 原语,例如 Actions、issue 表单、计划内 workflow、仓库赞助和 PR 模板。
- 这使得操作层面尽可能精简,并避免了维护独立的 CI 编排器。
2. `策略即代码`
- 维护行为被编码在版本控制的 YAML 中,而不是隐式的仓库设置中。
- 每个 workflow 的更改都可以像应用程序代码一样进行审查、对比和审计。
3. `关注点分离`
- 依赖更新、安全扫描、lint 和 AI 辅助分类各自存在于独立的 workflow 文件中。
- 这提高了可调试性,并减少了维护任务之间的意外耦合。
4. `安全默认的自动化`
- 自动合并仅限于非破坏性的 `Dependabot` 补丁/次要版本更新。
- 高风险更改仍需人工审查。
5. `混合 runtime 支持`
- 该仓库同时考虑了以 Python 为中心的自动化(`trigger action/trigger_action.py`)以及 JavaScript/TypeScript 代码的扫描/lint。
- 对于可能会跨多个 runtime 暴露 SDK、CLI、仪表板或集成的日志项目来说,这是一种实用的设计。
#### Workflow 拓扑
```
flowchart TD
A[Developer Push / Pull Request] --> B[GitHub Actions Triggers]
B --> C[Lint Workflow]
B --> D[CodeQL SAST Workflow]
B --> E[AI Issue Workflow]
F[Dependabot Update] --> G[Dependabot Metadata]
G --> H[Auto-Approve Safe Updates]
H --> I[Enable Auto-Merge]
C --> J[Node.js Setup and Validation]
D --> K[Security Findings]
E --> L[Python Analysis Entry Point]
L --> M[Generated or Enriched Issues]
```
#### 日志库交付上下文
```
sequenceDiagram
participant Dev as Maintainer
participant GH as GitHub
participant CI as Actions Runner
participant Sec as CodeQL
participant Bot as Dependabot
Dev->>GH: Open pull request
GH->>CI: Trigger lint.yml
GH->>Sec: Trigger sast.yml
Sec-->>GH: Upload security results
CI-->>GH: Publish validation status
Bot->>GH: Open dependency PR
GH->>CI: Trigger dependabot-auto-merge.yml
CI-->>GH: Approve and enable auto-merge when safe
```
## 快速开始
### 前置条件
要在本地使用此仓库,您应该具备:
- `git`,用于克隆和版本控制操作。
- `Node.js 20` 和 `npm`,用于在本地模拟 lint workflow。
- `Python 3.11` 和 `pip`,用于模拟 AI workflow 的依赖安装。
- 一个启用了 Actions 的 GitHub 仓库(如果您希望 workflow 端到端执行)。
- 可选:`gh` CLI,用于测试 Dependabot 自动化使用的 PR 审查或合并命令。
### 安装
1. 克隆该仓库。
2. 进入项目目录。
3. 安装本地 workflow 模拟所需的运行时依赖。
```
git clone