CI/CD流水线工具
GitHub Actions是GitHub原生CI/CD方案。使用YAML定义工作流,支持矩阵构建、并行任务和丰富的社区Action。推荐配置:Push触发测试流水线、PR创建触发代码审查流水线、Tag推送触发发布流水线。自托管Runner可以运行在自有服务器上,不受公共Runner配额限制。
GitLab CI与GitLab深度集成。使用.gitlab-ci.yml定义流水线,支持Stage和Job的分级执行。Runner支持Docker、Kubernetes和SSH等多种执行器。GitLab CI的Review Apps功能可为每个MR自动部署临时环境,极大提升代码审查效率。
Jenkins是老牌CI工具,配置灵活但维护成本高。推荐使用Jenkins Pipeline as Code(Jenkinsfile)将流水线定义纳入版本管理。插件生态系统丰富,几乎支持所有开发工具的集成。
基础设施即代码
Terraform是IaC领域的事实标准。使用HCL语言声明式定义云资源,支持AWS、Azure、阿里云等主流云平台。状态文件(terraform.tfstate)记录当前资源状态,是Terraform的核心。团队使用需配置远程状态存储(如S3+ DynamoDB锁)。
Ansible是无Agent的配置管理工具。使用YAML Playbook定义服务器状态,通过SSH执行。适合服务器初始化配置、应用部署和滚动更新。Ansible Galaxy社区提供大量预置Role,可复用成熟方案。
任务编排工具
Makefile是最简单直接的自动化工具。在项目根目录编写Makefile定义构建、测试、部署等目标任务。make build构建项目,make test运行测试,make deploy部署应用。条件判断和变量支持让Makefile适合各种规模的项目。
Task是Makefile的现代替代品。使用YAML定义任务,支持依赖管理、环境变量和操作系统判断。跨平台兼容性优于Makefile。
定时任务管理
Linux原生cron适合简单的定时任务。复杂场景使用Apache Airflow:通过DAG(有向无环图)定义任务依赖关系,内置失败重试、任务监控和日志管理。适合数据流水线和ETL任务。
n8n是可视化的工作流自动化工具。内置200多个节点连接各种SaaS服务,支持条件分支、循环和错误处理。自部署版本完全控制数据,适合对数据安全有要求的场景。
