主题
自动部署案例
自动部署是现代软件开发和运维的重要环节,借助脚本和 CI/CD 工具,实现代码自动构建、测试、发布和上线,大幅提升效率与稳定性。
一、自动部署基本流程
- 代码提交至版本库(如 Git)
- 触发 CI/CD 流水线执行自动构建和测试
- 构建产物自动发布到目标服务器
- 启动或重启应用服务
- 发送通知反馈部署状态
二、案例环境说明
- 应用类型:Node.js Web 应用
- 服务器环境:Ubuntu 20.04
- 版本控制:GitHub
- CI/CD 工具:GitHub Actions
- 部署方式:SSH 远程执行脚本
三、准备工作
- 在服务器配置 SSH 公钥免密码登录
- 编写部署脚本
deploy.sh,内容示例:
bash
#!/bin/bash
APP_DIR=/var/www/myapp
GIT_REPO=https://github.com/username/myapp.git
if [ ! -d "$APP_DIR" ]; then
git clone $GIT_REPO $APP_DIR
else
cd $APP_DIR && git pull origin main
fi
cd $APP_DIR
npm install
pm2 restart myapp || pm2 start app.js --name myapp确保脚本有执行权限:
bash
chmod +x deploy.sh四、GitHub Actions 自动部署配置示例
.github/workflows/deploy.yml:
yaml
name: Deploy
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Copy deploy script to server
uses: appleboy/[email protected]
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SERVER_SSH_KEY }}
source: deploy.sh
target: ~/deploy.sh
- name: Execute deploy script
uses: appleboy/[email protected]
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SERVER_SSH_KEY }}
script: bash ~/deploy.sh五、实践要点
- 将敏感信息(如服务器地址、SSH 密钥)保存在 GitHub Secrets
- 部署脚本要具备错误处理和日志记录
- 可以结合容器技术和负载均衡实现滚动升级
- 测试环境先验证部署流程,确保安全稳定
六、其他自动部署工具
- Jenkins Pipeline
- GitLab CI/CD
- Ansible 自动化部署
通过本案例,用户能掌握自动部署的完整流程,利用脚本与 CI/CD 工具实现代码到生产环境的快速、安全交付。
