50 lines
1.6 KiB
YAML
50 lines
1.6 KiB
YAML
name: Deploy Django App
|
||
|
||
on:
|
||
push:
|
||
branches:
|
||
- main # 触发条件:当代码推送到 main 分支时
|
||
|
||
jobs:
|
||
deploy:
|
||
runs-on: ubuntu-latest # 使用 GitHub 提供的 Ubuntu 环境
|
||
|
||
steps:
|
||
# 步骤 1:检出代码
|
||
- name: Checkout code
|
||
uses: actions/checkout@v3
|
||
|
||
# 步骤 2:设置 Python 环境
|
||
- name: Set up Python
|
||
uses: actions/setup-python@v4
|
||
with:
|
||
python-version: '3.9' # 指定 Python 版本
|
||
|
||
# 步骤 3:安装依赖
|
||
- name: Install dependencies
|
||
run: |
|
||
python -m pip install --upgrade pip
|
||
pip install -r requirements.txt
|
||
|
||
# 步骤 4:运行测试(可选)
|
||
- name: Run tests
|
||
run: |
|
||
python manage.py test
|
||
|
||
# 步骤 5:部署到生产服务器
|
||
- name: Deploy to production
|
||
uses: appleboy/ssh-action@v1
|
||
with:
|
||
host: ${{ secrets.PRODUCTION_HOST }} # 生产服务器 IP 或域名
|
||
username: ${{ secrets.PRODUCTION_USER }} # SSH 用户名
|
||
key: ${{ secrets.PRODUCTION_SSH_KEY }} # SSH 私钥
|
||
script: |
|
||
cd /opt/myapp # 项目部署目录
|
||
git pull origin main # 拉取最新代码
|
||
source /opt/myenv/bin/activate # 激活虚拟环境
|
||
pip install -r requirements.txt # 安装依赖
|
||
python manage.py collectstatic --noinput # 收集静态文件
|
||
python manage.py migrate --noinput # 执行数据库迁移
|
||
sudo systemctl restart gunicorn # 重启 Gunicorn
|
||
sudo systemctl restart nginx # 重启 Nginx
|