DevOps 术语表(Glossary)
本术语表收录 DevOps 学习过程中遇到的核心概念。每个术语保留英文原文,附中文解释。随课程推进持续更新。
基础概念
- DevOps
- Development + Operations 的合成词。一种文化和实践,旨在打破开发与运维之间的壁垒,通过自动化工具链实现软件的快速、可靠交付。不是一个具体职位。
- CI/CD
- Continuous Integration / Continuous Delivery(或 Deployment)的缩写。持续集成:频繁将代码合并到主干并自动测试。持续交付:确保代码始终处于可发布状态。持续部署:每一个通过测试的变更自动部署到生产环境。
- Infrastructure as Code (IaC)
- 基础设施即代码。用声明式配置文件(如 Terraform 的 HCL、Ansible 的 YAML)来定义和管理服务器、网络、数据库等基础设施,而非手动操作。基础设施可以版本控制、review、自动化。
- Pipeline (流水线)
- 一组自动执行的步骤序列。从代码提交开始,经过构建、测试、部署等阶段,最终将软件交付到目标环境。CI/CD 流水线是 DevOps 的核心工具。
- SRE
- Site Reliability Engineering,站点可靠性工程。Google 提出的理念:用软件工程的方法解决运维问题。SRE 和 DevOps 是互补关系,不是替代关系。
- Shift Left
- 「左移」。将测试、安全检查等环节尽可能提前到开发周期的早期(流水线的左侧),而非等到部署前才做。越早发现问题,修复成本越低。
Linux & 命令行
- Shell
- 命令行解释器。用户输入命令,Shell 翻译给操作系统执行。最常见的 Shell 是 Bash(Bourne Again Shell)。
- stdin / stdout / stderr
- 标准输入(文件描述符 0)、标准输出(1)、标准错误(2)。每个进程都有这三个数据流。管道
| 连接 stdout 到 stdin,2>/dev/null 丢弃 stderr。
- Pipe (管道)
| 符号。将左边命令的标准输出(stdout)连接到右边命令的标准输入(stdin),实现命令串联。
- systemd
- 现代 Linux 的初始化系统和服务管理器。PID 1。通过
systemctl 管理后台服务(启动、停止、重启、开机自启)。
- SSH (Secure Shell)
- 加密的远程登录协议。DevOps 日常:
ssh user@host 进入服务器,scp 传文件。所有远程操作的基础。
- Package Manager (包管理器)
- 管理软件安装、升级、卸载的工具。Debian/Ubuntu 用
apt,RHEL/CentOS 用 yum/dnf,macOS 用 brew。
- /dev/null
- Linux 的「黑洞」——写入的数据被丢弃,读取立即返回 EOF。常用于丢弃不需要的输出。
Shell 脚本编程
- Shebang (#!)
- 脚本第一行的
#!/bin/bash。告诉操作系统用哪个解释器执行脚本。必须写在第一行。
- Exit Code (退出码)
- 每个命令/脚本结束时返回的整数。0 = 成功,非 0 = 失败。
$? 变量获取上一条命令的退出码。exit 0 正常退出,exit 1 报错退出。
- set -e
- Bash 选项。任何命令返回非 0 退出码时立即终止脚本。DevOps 脚本几乎必用,防止错误被忽略。
- set -u
- Bash 选项。使用未定义变量时立即报错退出。防止拼写错误导致静默 bug。
- set -o pipefail
- Bash 选项。管道中任何命令失败都导致整个管道失败,而非只看最后一个命令。
- Command Substitution (命令替换)
$(command) 语法。将命令的标准输出作为字符串嵌入。如 TODAY=$(date)。旧语法 `command` 不推荐。
- Trap
- 捕获信号或错误并执行指定命令。如
trap 'echo "Failed at $LINENO"' ERR 在脚本出错时打印行号。
容器 & 编排
- Container (容器)
- 一种轻量级的虚拟化技术。将应用及其所有依赖(运行时、库、配置)打包在一起,确保在任何环境中行为一致。Docker 是最流行的容器工具。
- Image (镜像)
- 容器的静态模板。包含运行应用所需的完整文件系统。镜像是只读的,容器是镜像的运行实例。
- Docker
- 最广泛使用的容器平台。提供构建镜像、运行容器、管理镜像仓库的完整工具链。
- Kubernetes (K8s)
- 容器编排平台。管理成百上千个容器的部署、扩缩容、负载均衡、自愈。K8s 是「K」和「s」之间 8 个字母的缩写。
- Pod
- Kubernetes 的最小调度单元,包含一个或多个紧密耦合的容器。
- Dockerfile
- 定义如何构建 Docker 镜像的文本文件。包含 FROM、COPY、RUN、CMD 等指令。相当于镜像的「食谱」。
- Docker Compose
- Docker 官方工具,用 YAML 文件定义和运行多容器应用。一个
docker compose up 启动全部服务。
- Docker Layer (层)
- Dockerfile 中每条指令(RUN、COPY 等)生成一个只读层。Docker 按层缓存:未变的层直接复用,加速构建。COPY package*.json 放在 COPY . . 前面就是为了利用层缓存。
- Multi-stage Build (多阶段构建)
- 一个 Dockerfile 包含多个 FROM 指令。第一阶段编译/构建,第二阶段只复制产物。最终镜像不包含构建工具,体积大幅减小。
- Volume (卷)
- Docker 的数据持久化机制。容器的文件系统是临时的(容器删除数据丢失),Volume 将数据存在宿主机上,跨容器生命周期保留。数据库数据必须用 Volume。
- Docker Registry (镜像仓库)
- 存储和分发 Docker 镜像的服务。Docker Hub 是默认公共仓库(类似 npm registry)。
docker push/pull 与之交互。
- Alpine Linux
- 一个超轻量 Linux 发行版(~5MB)。Docker 官方镜像大多提供 Alpine 版本(如
node:22-alpine),是生产环境首选基础镜像。
CI/CD
- GitHub Actions
- GitHub 内建的 CI/CD 平台。通过 YAML 文件定义自动化工作流,免费额度慷慨(公开仓库无限用)。触发条件包括 push、PR、定时、手动。
- Workflow (工作流)
- GitHub Actions 的顶层单元。一个 YAML 文件 = 一个 Workflow。定义触发条件(on)、要跑的任务(jobs)及其执行环境。
- Job (任务)
- Workflow 中的独立执行单元。多个 Job 默认并行运行,可用
needs 指定依赖顺序。
- Runner (执行器)
- 执行 Workflow 的虚拟机。GitHub 免费提供 ubuntu-latest、macos-latest、windows-latest。也可自建 runner。
- GitHub Secrets
- 仓库级别的加密变量。存储敏感信息(密码、Token、SSH Key),Workflow 中用
${{ secrets.NAME }} 读取,日志中自动屏蔽。
- Matrix Build (矩阵构建)
- 同一个 Job 在多个参数组合上并行运行。如同时在 Node 18/20/22 和 Ubuntu/macOS 上跑测试,确保跨平台兼容性。
- Artifact (制品)
- Workflow 运行产生的文件(构建产物、测试报告、覆盖率数据)。可在 Job 之间传递或下载保存。
部署 & 网络
- Reverse Proxy (反向代理)
- 位于客户端和后端服务器之间的中间层。接收客户端请求,转发给后端,返回响应。Nginx 是最常用的反向代理。作用:SSL 终止、负载均衡、静态文件服务、安全隔离。
- Nginx
- 高性能 HTTP 服务器和反向代理。DevOps 标配:站在应用前面处理 HTTPS、静态文件、请求转发。配置文件在
/etc/nginx/sites-available/。
- Let's Encrypt
- 免费、自动化的 SSL/TLS 证书颁发机构。通过 Certbot 工具自动获取和续期 HTTPS 证书,90 天有效期,自动续期。
- rsync
- 远程文件同步工具。只传输变化的文件,比 scp 全量复制更高效。常用于部署:
rsync -avz ./ user@server:/opt/app/。
- Zero-downtime Deployment (零停机部署)
- 部署新版本时不中断服务。常用策略:蓝绿部署(两套环境切换)、滚动更新(逐个替换实例)、金丝雀发布(先给小部分流量)。
Infrastructure as Code
- Provider (Terraform)
- Terraform 的「驱动」。通过 Provider 与具体平台(AWS、Docker、GCP 等)的 API 交互。每个 Provider 定义了一套可用的 Resource 类型。
- Resource (Terraform)
- Terraform 管理的基本单元——服务器实例、安全组、DNS 记录、Docker 容器等。在 .tf 文件中用
resource "type" "name" { ... } 定义。
- State (tfstate)
- Terraform 的核心文件,记录「上次 apply 后基础设施的实际状态」。用于计算 plan diff。包含敏感信息,不能提交 Git。团队协作用 Remote State(S3、Terraform Cloud)。
- HCL (HashiCorp Configuration Language)
- Terraform 的配置语言。声明式语法,类似 JSON 但更人性化。支持变量、函数、模块、条件表达式。
- Module (Terraform)
- 一组可复用的 Terraform 资源配置,相当于「函数」。封装常见模式(如「一个 VPC + 子网 + 安全组」),通过输入变量参数化。
Ansible / 配置管理
- Ansible
- Red Hat 出品的配置管理工具。Agentless(仅需 SSH),用 YAML 写 Playbook,声明式定义服务器应达到的状态。与 Terraform 互补:Terraform 创建基础设施,Ansible 配置服务器内部。具备幂等性——重复执行不会导致重复操作。
- Inventory(清单)
- Ansible 的「通讯录」——列出要管理哪些机器(主机名/IP + 分组)。支持静态文件(INI/YAML)和动态生成(从 AWS/GCP 查询)。
- Playbook(剧本)
- Ansible 的执行单元,YAML 文件定义一组 Task(任务),按顺序在指定主机上执行。相当于声明式版本的 Shell 脚本。
- Idempotency(幂等性)
- Ansible 的核心属性:同一个 Playbook 执行多次,结果相同。如果目标状态已满足,Task 自动跳过。与 Bash 脚本「每次跑都可能有副作用」形成对比。
- Module(模块)
- Ansible 的原子操作单元(如
apt、service、copy、template、docker_container)。3000+ 内置模块覆盖 DevOps 日常 95% 的操作。永远优先用专用模块而非 shell 模块。
- Handler
- Ansible 的特殊 Task,只在被
notify 通知时才执行。典型场景:Nginx 配置文件变化时才重启 Nginx,配置没变就不重启。减少不必要的服务中断。
- Jinja2
- Python 模板引擎,Ansible 用它做变量替换和条件渲染。在
.j2 模板文件中使用 {{ variable }} 和 {% if %} 等语法,生成配置文件。
- Role(角色)
- Ansible 的可复用配置包。将 Task、变量、模板、Handler 按约定目录结构组织。相当于「装一套东西的模板」,如 nginx-role、docker-role。
监控 & 告警
- PromQL
- Prometheus Query Language。Prometheus 的查询语言,用于检索和聚合时间序列数据。核心函数:
rate()、avg()、sum()、increase()。
- Node Exporter
- Prometheus 生态的「探针」。装在每台服务器上,暴露 CPU、内存、磁盘、网络等系统指标的
/metrics 端点。
- Alertmanager
- Prometheus 的告警管理组件。接收 Prometheus 发出的告警,进行去重、分组、静默、路由,推送到 Slack/钉钉/邮件/PagerDuty。
- RED Method
- 服务监控方法论。对每个服务关注三个指标:Rate(每秒请求数)、Errors(错误率)、Duration(响应延迟)。面试常考题。
- USE Method
- 系统监控方法论。对每个资源关注:Utilization(利用率)、Saturation(饱和度)、Errors(错误数)。与 RED 互补,RED 看服务,USE 看资源。
- Scrape (抓取)
- Prometheus 的数据采集方式。Prometheus 定期 HTTP GET 目标的
/metrics 端点,拉取指标数据存入时间序列数据库。与「推送」模式相对。
云 & 基础设施
- Cloud Provider (云服务商)
- 提供按需计算、存储、网络资源的公司。三大公有云:AWS、Azure、Google Cloud。国内:阿里云、腾讯云、华为云。
- Terraform
- HashiCorp 出品的基础设施即代码工具。用 HCL 语言声明式地定义云资源,执行
terraform apply 即可创建/更新实际基础设施。
- Ansible
- Red Hat 出品的配置管理工具。用 YAML 定义服务器配置,通过 SSH 执行,无需在被管理节点上安装 agent。
- Load Balancer (负载均衡器)
- 将进入的流量分发到多个后端服务器,提高可用性和吞吐量。
监控 & 可观测性
- Observability (可观测性)
- 通过系统的外部输出(日志、指标、追踪)来理解系统内部状态的能力。比「监控」更全面。
- Metrics (指标)
- 可量化的测量值,如 CPU 使用率、请求延迟、错误率。Prometheus 是最流行的指标收集系统。
- Logging (日志)
- 系统和应用产生的事件记录。ELK Stack (Elasticsearch, Logstash, Kibana) 是最常见的日志方案。
- Prometheus
- CNCF 孵化的开源监控和告警系统。按时间序列收集指标,配合 Grafana 做可视化。
- Grafana
- 开源的数据可视化和仪表盘平台。通常与 Prometheus 配合使用。
日志系统
- Loki
- Grafana Labs 出品的轻量级日志聚合系统,CNCF 项目。设计哲学:像 Prometheus 但用于日志——只索引元数据标签,不索引日志全文,大幅节省资源(~200MB 内存起步)。适合容器和云原生环境。
- Promtail
- Loki 的日志采集 agent。部署在每台服务器或每个节点上,tail 日志文件或通过 Docker socket 采集容器日志,加标签后推送给 Loki。相当于日志版的 Node Exporter。
- LogQL
- Loki Query Language,Loki 的查询语言。语法:
{label="value"} | filter | parser,类似 PromQL。如 {container="app"} |= "error" | json。
- Structured Logging(结构化日志)
- 将日志输出为 JSON 格式而非纯文本,每个字段(level、timestamp、userId、traceId 等)都是可查询的维度。生产环境三原则:1. 永远 JSON 2. 永远带 level 3. 永远带 traceId。
- ELK Stack
- Elasticsearch + Logstash + Kibana 的简称。最知名的集中式日志方案,功能强大但资源消耗高(4GB+ 内存起步)。适合日志量极大且需要毫秒级全文搜索的场景。
- Log Level(日志级别)
- 日志严重性分级。标准级别(从低到高):DEBUG(调试)→ INFO(一般信息)→ WARN(警告)→ ERROR(错误)→ FATAL(致命)。生产环境通常只输出 INFO 及以上。
版本控制 & 协作
- Git
- 分布式版本控制系统。DevOps 工具链的基础——几乎所有自动化流程都由 Git 事件触发。
- SCM (Source Control Management)
- 源代码管理。在 DevOps 语境中通常泛指 Git + GitHub/GitLab 等平台。
- GitOps
- 一种操作模式:将 Git 作为声明式基础设施和应用的「单一事实来源」。Git 仓库中的变更自动同步到实际系统。
- Rebase
- 变基。将一系列 commit「搬到」另一个 commit 之后,重写提交历史为线性。与 merge 不同,rebase 不产生 merge commit。黄金法则:不要 rebase 已经 push 到共享分支的 commit。
- Cherry-pick
- 摘樱桃。将某一个 commit 的改动复制到当前分支,不合并整个分支。常用于将 hotfix 中的单个修复移植到 release 分支。
- Stash
- 暂存。将工作区未提交的改动临时保存,恢复干净工作区。用
git stash pop 恢复。
- Bisect
- 二分查找。自动通过二分法定位引入 bug 的 commit。每步标记 good/bad,Git 自动缩小范围。
- Reflog
- 引用日志。记录 HEAD 和分支引用的所有移动历史。即使 commit 被 reset 删除,reflog 仍能找到。默认保留 90 天。
- Git Hook
- Git 钩子。在特定 Git 事件(commit、push、receive)触发时自动执行的脚本。pre-commit、pre-push 用于本地检查,post-receive 用于触发 CI/CD。
- Conventional Commits
- 约定式提交。一种 commit message 规范:
type(scope): description(如 feat(auth): add login)。有利于自动化生成 changelog 和版本号。
GitOps
- GitOps
- CNCF 定义的部署模式:将 Git 仓库作为集群期望状态的唯一真相来源(Single Source of Truth)。任何对集群的手动修改都会被自动回滚。核心原则:声明式(Git 里的 YAML 定义一切)、版本化(所有变更可追溯、可回滚)、自动化(Git 变了集群自动同步)。
- ArgoCD
- CNCF 毕业项目,GitOps 的事实标准实现。部署在 K8s 集群内部,持续监控 Git 仓库变化并自动同步到集群。核心概念:Application(定义一个 Git 仓库 + K8s 资源路径 + 目标集群)、Sync(拉集群到 Git 期望状态)。
- Sync(同步)
- ArgoCD 的核心操作:将 K8s 集群的实际状态拉到 Git 声明的期望状态。支持手动触发和自动同步(检测到 Git 变化即触发)。同步状态:Synced(一致)、OutOfSync(不一致)。
- Drift Detection(漂移检测)
- ArgoCD 每 3 分钟对比 Git 期望状态和集群实际状态。发现不一致(如有人手动 kubectl edit 改了副本数)→ 标记 OutOfSync → 自动或手动修复。这是 GitOps 区别于传统 CI/CD push model 的关键特性。
- Self-healing(自愈)
- ArgoCD 的自动修复能力。开启后,任何对集群的手动修改都会被自动回滚到 Git 声明的状态。例如:手动 scale replicas=10 → 几分钟后自动改回 Git 里的 replicas=3。
- Pull Model vs Push Model
- GitOps 使用 Pull Model(集群内部主动拉取 Git 状态),而非 Push Model(CI 从外部推送变更到集群)。好处:集群无需暴露 kubeconfig,CI 不需要访问集群,安全性更高。
- Application(ArgoCD)
- ArgoCD 管理的单元。一个 YAML 文件声明了:Git 仓库 URL + K8s 资源路径 + 目标集群 + 同步策略。等价于「把 Git 的哪个目录,同步到哪个集群的哪个 namespace」。
云平台 (Cloud Platform)
- VPC (Virtual Private Cloud)
- 虚拟私有云。云上所有资源的网络容器,可自定 IP 范围、划分子网、配路由表和网关。Public Subnet 有出网路由(Internet Gateway),Private Subnet 无公网 IP 更安全(数据库放这里)。
- Security Group(安全组)
- 作用在云实例(EC2/ECS)级别的有状态防火墙。有状态 = 允许 inbound 的请求,响应自动允许 outbound(不需要配 outbound 规则)。与 NACL(子网级无状态)互补。
- IAM (Identity and Access Management)
- 云的权限管理体系。三个核心概念:User(人)、Role(角色,给服务用的临时凭证)、Policy(JSON 权限文档,Allow/Deny 特定 Action 在特定 Resource)。最小权限原则:只给刚好够用的权限。
- IAM Role vs IAM User
- User 有永久 Access Key,适合人用;Role 提供临时凭证(自动轮转),适合 EC2/Lambda 等服务用。最佳实践:永远不给 EC2 配 Access Key,用 Role。
- S3 (Simple Storage Service)
- AWS 的对象存储。Key-Value 模型,无限容量,11 个 9 持久性。典型用途:静态网站托管、CI/CD 制品存储、日志归档、Terraform State 后端。
- RDS (Relational Database Service)
- 云的托管数据库服务。自动处理备份、升级、高可用(Multi-AZ 自动故障切换 < 2 分钟)、磁盘扩容。比自己装数据库省掉 90% 的运维工作。
- Multi-AZ
- RDS 高可用模式:主库 + 同步备库在不同可用区。主库故障自动切到备库,数据零丢失。生产数据库必开。
- Elastic IP
- AWS 的静态公网 IP 地址。可以随时绑定到不同的 EC2 实例——但不要给每台机器绑,贵且浪费。应该用 Load Balancer 对外暴露服务。
DevSecOps / 安全
- DevSecOps
- Development + Security + Operations 的融合。核心理念:安全不是上线前的「检查点」,而是内嵌在 CI/CD 每一步的自动化流程。Shift Left = 安全检测尽量左移(代码阶段),早期发现成本最低。
- SAST (Static Application Security Testing)
- 静态应用安全测试。不运行代码,直接读源码找安全漏洞(SQL 注入、XSS、硬编码密钥)。代表工具:Semgrep、SonarQube。
- Secret Scanning(密钥扫描)
- 扫描 Git 历史和当前代码,检测误提交的 API Key / Token / 密码。代表工具:gitleaks、truffleHog。最佳实践:pre-commit hook 在提交前拦截 + CI 中二次检测。
- Container Image Scanning
- 扫描 Docker 镜像的基础系统包和应用依赖,检测已知漏洞(CVE)。代表工具:Trivy、Snyk。按严重级别(CRITICAL/HIGH/MEDIUM/LOW)分级,有 CRITICAL 应阻止发布。
- CVE (Common Vulnerabilities and Exposures)
- 公开已知的安全漏洞编号系统。如 CVE-2024-21626 是 runc 容器逃逸漏洞。Trivy 等扫描器用 CVE 数据库来比对镜像里的软件包版本。
- OPA / Gatekeeper
- Open Policy Agent。K8s 的策略引擎,用 Rego 语言写策略规则。Gatekeeper 是其 K8s 原生的实现——把策略做成 Custom Resource。禁止 latest tag、强制 resource limits、禁止 hostPath 等策略都通过它落地。
- Distroless Image
- Google 推出的超精简容器基础镜像。不含 shell、包管理器、甚至不含 ls——只有你的应用和它最少的运行时依赖。攻击者在容器里拿到 shell 也没用,因为没有 shell。
数据库运维
- Database Migration(数据库迁移)
- 对数据库 schema 的版本化变更。每个迁移包含 up(正向)和 down(回滚)两个文件,和代码一起版本控制,CI/CD 自动执行。代表工具:golang-migrate、Flyway、Alembic。
- RPO (Recovery Point Objective)
- 恢复点目标。能容忍丢失多少数据(时间维度)。RPO = 1 小时 → 万一现在炸了,最多丢最近 1 小时的数据。由备份频率决定。
- RTO (Recovery Time Objective)
- 恢复时间目标。从故障发生到服务恢复的最长允许时间。RTO = 30 分钟 → 从炸到好必须在 30 分钟内完成。
- PITR (Point-in-Time Recovery)
- 时间点恢复。利用 PostgreSQL WAL 归档,可以将数据库恢复到过去任意时间点(「回到昨天下午 3:05 的状态」)。比 pg_dump 定时备份更精细。
- WAL (Write-Ahead Log)
- 写前日志。PostgreSQL 在修改实际数据页之前,先把操作记录写入 WAL 日志。WAL = 数据库的「录像」,用于崩溃恢复和 PITR。
- PgBouncer
- PostgreSQL 轻量级连接池(~2MB 内存)。应用连接 PgBouncer :6432 → PgBouncer 用少量实际连接转发到 PostgreSQL :5432。Transaction Pooling 模式:每个事务用完立刻还连接,是生产推荐配置。
- 缓存穿透 / 击穿 / 雪崩
- Redis 面试三连击。穿透:查不存在的数据,绕过缓存直接命中 DB——用布隆过滤器。击穿:一个热点 key 过期,大量请求打向 DB——用互斥锁/mutex。雪崩:大量 key 同时过期或 Redis 宕机——TTL 加随机值 + 高可用集群。
- maxmemory-policy
- Redis 内存满后的淘汰策略。allkeys-lru(淘汰最近最少用的)适合缓存场景;noeviction(不淘汰,拒绝写入)是默认值但生产中几乎不用。
GitHub 协作 & 发布
- Issue
- GitHub 的项目管理单元——不只是 bug 报告器。Label 分类、Milestone 按版本分组、Assignee 指派负责人、Projects 看板视图。DevOps 团队也用 Issue 追踪基础设施变更。
- Pull Request (PR)
- 代码变更的最小协作单元。包含 diff 对比、讨论线程、CI 检查结果、审批状态。合并后关联的 Issue 自动关闭(
Closes #N)。
- Branch Protection(分支保护)
- GitHub 仓库的 gates(门禁)。规则包括:必须走 PR、必须 N 人审批、必须 CI 通过(Require status checks)、必须解决所有讨论。这是 CI/CD 和 Git 工作流的连接点。
- CODEOWNERS
.github/CODEOWNERS 文件。定义「谁拥有哪些代码的审查权」——当有人修改匹配文件时,对应的 owner 自动被设为 PR Reviewer。
- Semantic Versioning (SemVer, 语义化版本)
- 版本号命名规范 2.0.0:MAJOR.MINOR.PATCH。MAJOR = 不兼容变更,MINOR = 向后兼容新功能,PATCH = 向后兼容 bug 修复。一旦发布不可修改。
- Git Tag(annotated)
- 指向特定 commit 的不可变引用。Annotated tag(
git tag -a v1.0.0 -m "...")包含 tagger、日期、message,可 GPG 签名——永远用 annotated,不用 lightweight。
- GitHub Release
- 基于 git tag 的发布单元。包含 release notes(可自动生成)、可下载的二进制/assets、预发布标记。Tag push 可以触发 CI/CD 自动创建 Release。
- CHANGELOG.md
- 给人看的版本日志。keepachangelog.com 格式:Added / Changed / Deprecated / Removed / Fixed / Security 六大分类,每个版本标注日期。
- Conventional Commits(约定式提交)
- 标准化 commit message 格式:
type(scope): description。feat:→MINOR, fix:→PATCH, feat!:或含BREAKING CHANGE:→MAJOR。配合 semantic-release 实现全自动版本发布。
- semantic-release
- 自动化发布工具。分析 Conventional Commits → 自动决定版本号 → 生成 CHANGELOG → 创建 git tag → 创建 GitHub Release → 发布到包管理器。零手动操作。
- Community Health Files
- GitHub 自动识别的仓库「健康文件」:README、LICENSE、CONTRIBUTING、CODE_OF_CONDUCT、SECURITY、SUPPORT。在 Insights → Community 查看完整度评分。
- LICENSE(许可证)
- 没有许可证的公开仓库 = 保留所有权利,别人不能合法使用。MIT(最宽松)、Apache 2.0(MIT + 专利保护,K8s/Terraform 用)、GPL(Copyleft,用了就必须开源)。
- GitHub Discussions
- 仓库的社区论坛——Issue 是待办任务,Discussion 是开放式对话。支持 Q&A(可标记 Accepted Answer)、Ideas、Announcements、General。
- GitHub Pages
- 把仓库的
docs/ 目录或 gh-pages 分支发布为静态网站(https://user.github.io/repo)。适合项目文档站。支持 GitHub Actions 自动部署。
- .github Repository
- 组织下的特殊仓库(
myorg/.github)。里面的 Community Health Files 和 Issue/PR 模板会作为所有组织仓库的默认值——避免每个仓库复制粘贴。
- BDFL(Benevolent Dictator for Life)
- 「仁慈的终身独裁者」——开源治理模型。一个人(通常是项目创始人)对重大决策有最终决定权。Linux(Linus)、Python 早期(Guido)都是 BDFL 模型。