手工部署与自动化部署场景模拟及参考项目
手工部署与自动化部署场景对比
手工部署场景模拟
-
环境准备:
- 手动安装JDK、Node.js、Python等运行环境
- 手动配置数据库、中间件等依赖服务
- 手动创建目录结构和配置文件
-
打包过程:
# 前端项目 cd frontend npm install npm run build# 后端项目 cd backend mvn clean package
-
部署过程:
- 手动上传构建产物到服务器
- 手动停止旧服务
- 手动备份旧版本
- 手动启动新服务
- 手动验证服务是否正常
-
问题排查:
- 查看日志文件定位问题
- 反复修改代码并重复上述步骤
自动化部署场景模拟
-
CI/CD流程:
- 代码提交触发自动化构建
- 自动运行单元测试和集成测试
- 自动打包并生成部署包
- 自动部署到指定环境
-
典型自动化脚本示例:
# GitHub Actions 示例 name: CI/CD Pipeline on: [push] jobs:build-and-deploy:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v2- name: Set up JDKuses: actions/setup-java@v1- name: Build with Mavenrun: mvn -B package --file pom.xml- name: Deploy to Testif: github.ref == 'refs/heads/main'run: ./deploy.sh test
参考项目与工具
开源参考项目
-
Jenkins 项目示例:
- Jenkins官方示例仓库
- 包含各种语言的CI/CD管道示例
-
GitLab CI 项目:
- GitLab CI示例
- 展示从简单到复杂的CI/CD配置
-
Spring Boot + Docker自动化部署:
- spring-boot-docker示例
- 展示容器化应用的自动化部署流程
-
前端自动化部署示例:
- react-ci-cd
- 使用React展示前端项目的完整CI/CD流程
现代CI/CD工具
-
云原生工具链:
- ArgoCD (GitOps工具)
- Tekton (Kubernetes原生CI/CD)
- FluxCD (持续交付工具)
-
Serverless部署工具:
- Serverless Framework
- AWS SAM
- Google Cloud Deploy
实施建议
-
从简单开始:
- 先实现自动化构建和测试
- 再逐步实现自动化部署
-
环境一致性:
- 使用Docker或虚拟机模板确保环境一致
- 采用基础设施即代码(IaC)工具如Terraform
-
监控与回滚:
- 部署后自动运行健康检查
- 实现一键回滚机制
-
文档化流程:
- 记录手工步骤作为自动化脚本的基础
- 维护部署手册和应急方案
以下是 5个可直接使用的实际项目,它们展示了手工部署与自动化部署(CI/CD)的对比场景,并提供了完整的代码示例和配置:
1. Spring Boot + Maven + Jenkins (传统Java项目CI/CD)
项目地址: spring-boot-rest-example
特点:
- 手工部署:手动执行
mvn clean package
生成JAR,然后上传服务器运行。 - 自动化部署:通过Jenkins Pipeline实现代码提交后自动构建、测试、打包并部署到Docker容器。
- 关键文件:
Jenkinsfile
(自动化流水线)- 手工部署脚本:
deploy.sh
2. React + GitHub Actions (前端自动化部署)
项目地址: react-gh-pages-autodeploy
特点:
- 手工部署:手动执行
npm run build
,然后上传build/
到服务器。 - 自动化部署:通过GitHub Actions实现代码推送到
main
分支后自动构建并发布到GitHub Pages。 - 关键文件:
.github/workflows/deploy.yml
(GitHub Actions配置)
3. Python Flask + Docker + GitLab CI (全栈自动化)
项目地址: flask-docker-gitlab-ci
特点:
- 手工部署:手动构建Docker镜像并推送到仓库,再在服务器上拉取运行。
- 自动化部署:通过GitLab CI实现提交代码后自动构建Docker镜像、运行测试并部署到Kubernetes集群。
- 关键文件:
.gitlab-ci.yml
(GitLab CI配置)
4. Node.js + AWS CodePipeline (云原生CI/CD)
项目地址: nodejs-aws-codepipeline
特点:
- 手工部署:手动ZIP代码并上传到AWS Lambda。
- 自动化部署:通过AWS CodePipeline实现代码提交→构建→测试→部署到Lambda的全流程。
- 关键文件:
buildspec.yml
(AWS构建配置)
5. **.NET Core + Azure DevOps (企业级CI/CD)**
项目地址: dotnet-core-azure-pipelines
特点:
- 手工部署:手动编译
.sln
文件,生成DLL并部署到IIS。 - 自动化部署:通过Azure DevOps流水线实现代码提交后自动构建、测试、发布到Azure App Service。
- 关键文件:
azure-pipelines.yml
(Azure流水线配置)
对比总结
项目 | 手工部署步骤 | 自动化部署触发条件 | 工具链 |
---|---|---|---|
Spring Boot | mvn package + 手动上传JAR | Git提交触发Jenkins Pipeline | Jenkins + Docker |
React | npm run build + 手动上传 | Push到main 分支触发GitHub Actions | GitHub Actions |
Python Flask | docker build + 手动部署 | GitLab Merge Request触发CI | GitLab CI + Kubernetes |
Node.js | 手动ZIP上传Lambda | CodeCommit提交触发CodePipeline | AWS CodePipeline |
.NET Core | 手动编译 + IIS部署 | Azure Repos提交触发Pipeline | Azure DevOps |
这些项目均提供 完整的代码和配置文件,可直接克隆后:
- 按照README尝试手工部署。
- 修改CI/CD配置(如GitHub Token、AWS凭证等)体验自动化流程。