From fe5ac20a1f51bc1b3e454a1a80c59ee3581ab688 Mon Sep 17 00:00:00 2001 From: hhs <386998068@qq.com> Date: Sat, 20 Jun 2026 19:29:12 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20env=5Ffile=20=E6=94=B9=E4=B8=BA=E7=9B=B8?= =?UTF-8?q?=E5=AF=B9=E8=B7=AF=E5=BE=84=EF=BC=8C=E8=A7=A3=E5=86=B3=20CI=20?= =?UTF-8?q?=E5=AE=B9=E5=99=A8=E6=97=A0=E6=B3=95=E8=AF=BB=E5=8F=96=20/opt/c?= =?UTF-8?q?amtalk/.env=20=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/deploy.yml | 46 ++++++++++++++++++++++--------------- deploy.sh | 40 ++++++++++++++++++++------------ docker-compose.yml | 6 ++--- 3 files changed, 56 insertions(+), 36 deletions(-) diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index cd5720e..8d48c36 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -8,26 +8,36 @@ jobs: deploy: runs-on: aliyun steps: - - name: Checkout - uses: "http://8.161.227.145:3000/huanghaosheng/checkout@releases/v4" - with: - ref: ${{ github.ref }} - - - name: Verify checkout + - name: Deploy run: | - echo "触发分支: ${GITHUB_REF_NAME}" - echo "当前 HEAD: $(git log -1 --oneline)" + if [ -d /root/camtalk/.git ]; then + cd /root/camtalk + git fetch origin ${GITHUB_REF_NAME} --depth=1 + git reset --hard origin/${GITHUB_REF_NAME} + else + git clone --depth=1 --branch ${GITHUB_REF_NAME} \ + http://8.161.227.145:3000/XEngineers/CamTalk.git /tmp/camtalk-deploy + mkdir -p /root/camtalk + rsync -a --delete \ + --exclude='.env' \ + --exclude='pgdata' \ + --exclude='redisdata' \ + /tmp/camtalk-deploy/ /root/camtalk/ + rm -rf /tmp/camtalk-deploy + fi - - name: Install Docker CLI - run: apk add --no-cache docker-cli docker-cli-compose rsync + # 确保 .env 存在于项目目录(CI 容器内无法直接访问 /opt) + if [ ! -f /root/camtalk/.env ]; then + cp /opt/camtalk/.env /root/camtalk/.env 2>/dev/null || true + fi + if [ ! -f /root/camtalk/.env ]; then + echo "==============================================" + echo " 错误: /root/camtalk/.env 不存在" + echo " 请在服务器上执行: cp /opt/camtalk/.env /root/camtalk/.env" + echo "==============================================" + exit 1 + fi - - name: Sync to deploy directory - run: | - mkdir -p /root/camtalk - rsync -a --delete --exclude='.env' --exclude='pgdata' --exclude='redisdata' ./ /root/camtalk/ - - - name: Build and Deploy - run: | chmod +x /root/camtalk/deploy.sh /root/camtalk/deploy.sh build - /root/camtalk/deploy.sh restart + /root/camtalk/deploy.sh restart \ No newline at end of file diff --git a/deploy.sh b/deploy.sh index fe8377e..17558b4 100755 --- a/deploy.sh +++ b/deploy.sh @@ -4,8 +4,9 @@ set -euo pipefail PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)" cd "$PROJECT_DIR" -# .env 固定路径(独立于项目目录,保证持久性) -ENV_FILE="/opt/camtalk/.env" +# .env 存放于项目目录,供 docker compose env_file 读取 +#(act_runner 容器内无法访问 /opt/camtalk,需放在项目目录下) +ENV_FILE="$PROJECT_DIR/.env" # 颜色输出 GREEN='\033[0;32m' @@ -15,19 +16,28 @@ info() { echo -e "${GREEN}[INFO]${NC} $*"; } # .env 检查:首次部署时从 .env.example 复制模板,提示用户填写 check_env() { - local env_example="$PROJECT_DIR/backend/.env.example" - if [ ! -f "$ENV_FILE" ]; then - mkdir -p "$(dirname "$ENV_FILE")" - if [ -f "$env_example" ]; then - cp "$env_example" "$ENV_FILE" - info "未找到 $ENV_FILE,已从 .env.example 复制模板" - echo " 请编辑 $ENV_FILE 填入实际配置后重新运行本脚本" - exit 0 - else - echo "错误: $ENV_FILE 和 .env.example 均不存在,请手动创建" - exit 1 - fi + if [ -f "$ENV_FILE" ]; then + return 0 fi + + # 如果项目目录没有 .env,尝试从 /opt/camtalk/.env 复制(兼容旧部署) + local legacy_env="/opt/camtalk/.env" + if [ -f "$legacy_env" ]; then + cp "$legacy_env" "$ENV_FILE" + info "已从 $legacy_env 复制环境变量文件" + return 0 + fi + + echo "==============================================" + echo " 错误: 未找到环境变量文件" + echo "" + echo " 请在以下任一位置创建 .env 文件:" + echo " 1. $ENV_FILE" + echo " 2. $legacy_env(运行本脚本时会自动复制)" + echo "" + echo " 模板参考: backend/.env.example" + echo "==============================================" + exit 1 } check_env @@ -98,4 +108,4 @@ case "${1:-}" in logs) shift; cmd_logs "$@" ;; status) cmd_status ;; *) usage; exit 1 ;; -esac +esac \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 74c04bd..c452930 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -18,7 +18,7 @@ services: dockerfile: Dockerfile container_name: camtalk-backend env_file: - - /opt/camtalk/.env + - .env environment: # 三级存储配置(敏感信息通过 env_file 注入) - CAMTALK_STORAGE_REDIS_ENABLED=${CAMTALK_STORAGE_REDIS_ENABLED:-true} @@ -38,7 +38,7 @@ services: image: docker.m.daocloud.io/library/postgres:15-alpine container_name: camtalk-postgres env_file: - - /opt/camtalk/.env + - .env environment: POSTGRES_DB: camtalk volumes: @@ -57,7 +57,7 @@ services: image: docker.m.daocloud.io/library/redis:7-alpine container_name: camtalk-redis env_file: - - /opt/camtalk/.env + - .env command: > sh -c ' if [ -n "$$CAMTALK_REDIS_PASSWORD" ]; then -- 2.49.1