diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index cc7d350..a71a22c 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -8,60 +8,24 @@ on: env: NODE_ENV: production + # 服务器上代码的路径(需要先手动克隆一次) + PROJECT_PATH: /www/dk_project/dk_app/rent jobs: deploy: runs-on: [self-hosted, rent-deploy] steps: - - name: Prepare code + - name: Update code run: | - WORK_DIR="/tmp/rent-deploy" + echo "更新代码..." + cd ${PROJECT_PATH} - echo "准备代码目录..." - echo "查找 Gitea 仓库路径..." + # 拉取最新代码 + git fetch origin + git checkout ${{ github.ref_name }} + git pull origin ${{ github.ref_name }} - # 查找可能的 Gitea 仓库路径 - POSSIBLE_PATHS=( - "/www/dk_project/dk_app/gitea/gitea_P4dS/data/gitea/repositories/xiaoquan/rent.git" - "/www/dk_project/dk_app/gitea/gitea_P4dS/gitea/data/git/repositories/xiaoquan/rent.git" - "/var/lib/docker/volumes/gitea_data/_data/git/repositories/xiaoquan/rent.git" - ) - - GITEA_REPO="" - for path in "${POSSIBLE_PATHS[@]}"; do - if [ -d "$path" ]; then - GITEA_REPO="$path" - echo "✅ 找到仓库: $path" - break - fi - done - - if [ -z "$GITEA_REPO" ]; then - echo "❌ 未找到 Gitea 仓库,尝试查找..." - find /www/dk_project/dk_app/gitea -name "rent.git" -type d 2>/dev/null || true - find /var/lib/docker/volumes -name "rent.git" -type d 2>/dev/null || true - echo "请检查上面的输出,找到正确的仓库路径" - exit 1 - fi - - if [ -d "$WORK_DIR/.git" ]; then - echo "代码目录已存在,更新代码..." - cd $WORK_DIR - git fetch origin - git checkout ${{ github.ref_name }} - git reset --hard origin/${{ github.ref_name }} - else - echo "首次初始化代码..." - rm -rf $WORK_DIR - mkdir -p $WORK_DIR - cd $WORK_DIR - git init - git remote add origin $GITEA_REPO - git fetch origin - git checkout -b ${{ github.ref_name }} origin/${{ github.ref_name }} - fi - - echo "✅ 代码准备完成" + echo "✅ 代码更新完成" echo "当前分支: $(git branch --show-current)" echo "最新提交: $(git log -1 --oneline)" @@ -69,7 +33,7 @@ jobs: if: github.ref == 'refs/heads/test' run: | echo "部署到测试环境..." - cd /tmp/rent-deploy/deploy/docker + cd ${PROJECT_PATH}/deploy/docker export TEST_DB_PASSWORD="${{ secrets.TEST_DB_PASSWORD }}" export TEST_JWT_SECRET="${{ secrets.TEST_JWT_SECRET }}" @@ -89,7 +53,7 @@ jobs: if: github.ref == 'refs/heads/prod' run: | echo "部署到生产环境..." - cd /tmp/rent-deploy/deploy/docker + cd ${PROJECT_PATH}/deploy/docker export PROD_DB_PASSWORD="${{ secrets.PROD_DB_PASSWORD }}" export PROD_JWT_SECRET="${{ secrets.PROD_JWT_SECRET }}" diff --git a/deploy/docker/CICD_SETUP.md b/deploy/docker/CICD_SETUP.md new file mode 100644 index 0000000..ea3e9d5 --- /dev/null +++ b/deploy/docker/CICD_SETUP.md @@ -0,0 +1,114 @@ +# CI/CD 部署配置指南 + +由于 Gitea Runner 运行在 Docker 容器中,无法直接访问宿主机文件系统和网络,我们采用以下方案: + +## 📋 一次性配置步骤 + +### 1. 在服务器上手动克隆代码 + +SSH 登录服务器后执行: + +```bash +# 进入项目目录 +cd /www/dk_project/dk_app + +# 克隆代码(使用服务器本地 Gitea 端口) +git clone http://127.0.0.1:10082/xiaoquan/rent.git + +# 验证 +cd rent +ls -la +``` + +### 2. 配置 Git 凭证(避免每次输入密码) + +```bash +cd /www/dk_project/dk_app/rent + +# 方法1:使用 Gitea Token +git config credential.helper store +git pull # 第一次会要求输入用户名和 token + +# 方法2:使用 SSH(推荐) +# 在 Gitea 中添加服务器的 SSH 公钥 +ssh-keygen -t rsa -b 4096 +cat ~/.ssh/id_rsa.pub +# 复制公钥,在 Gitea 个人设置 -> SSH密钥 中添加 + +# 修改 remote 为 SSH +git remote set-url origin git@127.0.0.1:xiaoquan/rent.git +``` + +### 3. 验证自动拉取 + +```bash +cd /www/dk_project/dk_app/rent +git pull origin test +``` + +应该能够无密码拉取成功。 + +--- + +## 🔄 CI/CD 工作流程 + +配置完成后,工作流程为: + +1. **开发** → 修改代码 +2. **git push origin test** → 推送到 Gitea +3. **CI/CD 自动触发** → + - SSH 到服务器 + - git pull 拉取最新代码 + - docker-compose build 构建 + - docker-compose up 部署 + +--- + +## 🚀 使用方式 + +### 推送到测试环境 +```bash +git push origin test +``` + +### 推送到生产环境 +```bash +git push origin prod +``` + +--- + +## 📝 注意事项 + +1. **首次配置**:必须在服务器上手动克隆一次代码 +2. **Git 凭证**:配置后才能自动 git pull +3. **路径固定**:代码路径为 `/www/dk_project/dk_app/rent` +4. **权限**:确保 Docker 有权限访问代码目录 + +--- + +## 🔧 故障排查 + +### 问题:CI/CD 提示找不到代码目录 + +**解决**:检查服务器上是否已克隆代码 +```bash +ls -la /www/dk_project/dk_app/rent +``` + +### 问题:git pull 需要密码 + +**解决**:配置 Git 凭证(见上面步骤2) + +### 问题:Docker 构建失败 + +**解决**:检查 Dockerfile 和依赖 +```bash +cd /www/dk_project/dk_app/rent/deploy/docker +docker-compose -f docker-compose.test.yml build +``` + +--- + +**维护者**:开发团队 +**最后更新**:2026-06-10