基于Django+React项目的极简依赖持续部署自动化方案咨询
低依赖自动化部署方案(Django+React)
针对你手动部署的三个步骤,以下是几种最少依赖的自动化实现方案:
方案1:本地Shell脚本(最轻量化)
仅依赖系统自带的Shell环境、Git、AWS CLI(若上传到S3)和Python,无需额外安装复杂工具。
实现步骤:
- 创建部署脚本
deploy.sh,写入以下内容(根据你的实际路径修改):
#!/bin/bash # 1. 拉取最新Django代码 cd /path/to/your/django-project git pull origin main # 2. 构建React并上传至AWS cd /path/to/your/react-project npm run build # 若上传到S3: aws s3 sync ./build s3://your-bucket/static/ --delete # 若上传到EC2服务器,替换为scp命令: # scp -r ./build ec2-user@your-ec2-ip:/path/to/django/static/ # 3. 收集静态文件 cd /path/to/your/django-project python manage.py collectstatic --noinput
- 给脚本添加执行权限:
chmod +x deploy.sh
- 部署时直接运行脚本:
./deploy.sh,若需要定时自动部署,可通过crontab配置定时任务(比如每天凌晨执行)。
方案2:Git Hooks(代码提交后自动触发)
利用Git内置的钩子功能,实现代码提交后自动触发部署流程,无额外依赖,仅需Git和基础工具。
客户端钩子(本地提交后触发)
适合个人开发者本地提交代码后直接部署:
- 进入Django项目的
.git/hooks目录,创建post-commit文件(删除原有的.sample后缀):
#!/bin/bash # 构建React并上传 cd /path/to/your/react-project npm run build aws s3 sync ./build s3://your-bucket/static/ --delete # 收集Django静态文件 cd /path/to/your/django-project python manage.py collectstatic --noinput
- 添加执行权限:
chmod +x post-commit
此后每次本地执行git commit后,钩子会自动运行部署步骤。
服务器端钩子(代码Push到远程仓库后触发)
适合团队协作场景,代码推送到远程Git服务器后自动部署:
- 在远程Git服务器的仓库目录下,进入
hooks文件夹,创建post-receive文件:
#!/bin/bash DEPLOY_DIR="/path/to/production/django-project" REACT_DIR="/path/to/production/react-project" # 拉取最新代码到部署目录 cd $DEPLOY_DIR git pull origin main # 构建React并上传 cd $REACT_DIR npm run build aws s3 sync ./build s3://your-bucket/static/ --delete # 收集静态文件 cd $DEPLOY_DIR python manage.py collectstatic --noinput
- 添加执行权限:
chmod +x post-receive
此后团队成员推送代码到远程仓库时,服务器会自动执行部署流程。
方案3:AWS CodeBuild极简配置(云原生自动化)
利用AWS原生服务实现自动化,无需本地维护脚本,仅需配置BuildSpec文件和AWS权限。
实现步骤:
- 在Django项目根目录创建
buildspec.yml文件:
version: 0.2 phases: install: commands: # 安装React依赖 - npm install --prefix ./react-project # 安装Django依赖 - pip install -r requirements.txt build: commands: # 拉取最新代码 - git pull origin main # 构建React - npm run build --prefix ./react-project # 上传构建文件到AWS - aws s3 sync ./react-project/build s3://your-bucket/static/ --delete # 收集静态文件 - python manage.py collectstatic --noinput artifacts: files: - '**/*'
- 在AWS控制台创建CodeBuild项目,关联你的Git仓库(GitHub/AWS CodeCommit等),设置触发条件为代码提交到主分支时自动构建。
- 配置CodeBuild服务角色权限,确保其能访问S3和执行Git操作。
内容的提问来源于stack exchange,提问作者nerd_geek365
相关产品推荐
相关产品推荐

