25.1 引言
CI/CD(持续集成/持续交付) 是现代软件开发中不可或缺的一环,能够让你:
- 自动构建和测试代码
- 自动部署到服务器/云端
- 减少人为失误,提升交付速度
本章将介绍:
- CI/CD 基本流程
- 使用 GitHub Actions 实现自动构建与测试
- 使用 Docker 容器化 Python 项目
- 自动部署示例
25.2 CI/CD 基本流程
CI/CD 包含两个阶段:
|
阶段 |
名称 |
目标 |
|
CI |
持续集成(Continuous Integration) |
自动构建、测试、检查代码质量 |
|
CD |
持续交付(Continuous Delivery) |
自动部署到测试/生产环境 |
一般流程:
提交代码 → GitHub Actions 触发 → 自动运行测试 → 构建 Docker 镜像 → 部署服务器
25.3 使用 GitHub Actions 自动化构建与测试
25.3.1 基本工作流配置
示例:
.github/workflows/python-ci.yml
name: Python CI
on:
push:
branches: [ main ]
pull_request:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Run tests
run: |
pytest --maxfail=1 --disable-warnings -q
✅ 每次推送代码到 main 分支时,GitHub 会自动运行 pytest 测试。
25.4 使用 Docker 容器化 Python 项目
25.4.1 Dockerfile
示例:
# 基础镜像
FROM python:3.11-slim
# 设置工作目录
WORKDIR /app
# 安装依赖
COPY requirements.txt .
RUN pip install -r requirements.txt
# 复制项目文件
COPY . .
# 运行应用
CMD ["python", "app.py"]
构建镜像:
docker build -t myapp .
运行:
docker run -p 8000:8000 myapp
✅ 通过容器封装环境,保证本地和线上一致性。
25.5 在 CI 中使用 Docker 部署
GitHub Actions 示例:
name: Deploy to Server
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Build Docker image
run: docker build -t myapp .
- name: Push image to Docker Hub
run: |
echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin
docker tag myapp mydockerhub/myapp:latest
docker push mydockerhub/myapp:latest
- name: SSH Deploy to Server
uses: appleboy/ssh-action@v0.1.7
with:
host: ${{ secrets.SERVER_IP }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SERVER_SSH_KEY }}
script: |
docker pull mydockerhub/myapp:latest
docker stop myapp || true
docker rm myapp || true
docker run -d -p 8000:8000 --name myapp mydockerhub/myapp:latest
利用 GitHub Secrets 安全存储账号密码等敏感信息。
25.6 小型自动部署演示流程图
[ 开发者推送代码 ]
│
▼
┌──────────────┐
│ GitHub Actions│
└──────┬───────┘
│
自动测试、构建Docker镜像
│
▼
[ Docker Hub 镜像仓库 ]
│
▼
[ 生产服务器自动拉取并运行 ]
✅ 从推送代码到服务上线,全程无需人工干预。
25.7 小结
|
工具/技术 |
用途 |
|
GitHub Actions |
自动构建、测试、部署流程 |
|
Docker |
封装运行环境,保证一致性 |
|
pytest |
自动运行测试,保障质量 |
|
SSH Action |
部署代码到远程服务器 |
✅ 通过 CI/CD,你可以实现自动化测试与部署,极大提升开发效率与发布质量。
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END












暂无评论内容