Files
BYW-VoiceHub/patches/0026-fix-ci-deploy-Job-docker-compose.override.yml-heredo.patch
T

81 lines
4.3 KiB
Diff
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
From 732c9c672527e90155d8633499ac49a8a25b7a35 Mon Sep 17 00:00:00 2001
From: HenryDu8133 <813367384@qq.com>
Date: Sun, 6 Sep 2026 14:17:05 +0800
Subject: [PATCH 26/58] =?UTF-8?q?fix(ci):=20deploy=20Job=20=E5=A2=9E?=
=?UTF-8?q?=E5=8A=A0=E7=9B=AE=E5=BD=95=E5=8F=AF=E5=86=99=E6=80=A7=E9=A2=84?=
=?UTF-8?q?=E6=A3=80=E6=9F=A5=20+=20docker-compose.override.yml=20heredoc?=
=?UTF-8?q?=20=E5=88=86=E9=9A=94=E7=AC=A6=E6=94=B9=20COMPOSE=5FOVERRIDE=20?=
=?UTF-8?q?=E5=B9=B6=E5=AF=B9=E9=BD=90=E7=BC=A9=E8=BF=9B=EF=BC=88=E7=BB=95?=
=?UTF-8?q?=E5=BC=80=20YAML=20parser=20=E8=AF=AF=E5=88=A4=20+=20=E6=9D=83?=
=?UTF-8?q?=E9=99=90=E9=97=AE=E9=A2=98=E5=8F=8B=E5=A5=BD=E6=8E=92=E6=9F=A5?=
=?UTF-8?q?=EF=BC=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitea/workflows/deploy.yml | 28 ++++++++++++++++++++++++----
1 file changed, 24 insertions(+), 4 deletions(-)
diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml
index 8a150e2..a16efa4 100644
--- a/.gitea/workflows/deploy.yml
+++ b/.gitea/workflows/deploy.yml
@@ -455,9 +455,27 @@ jobs:
echo "Deploy dir : ${DEPLOY_DIR}"
echo "=============================================="
- mkdir -p "${DEPLOY_DIR}"
+ mkdir -p "${DEPLOY_DIR}" 2>/dev/null || sudo mkdir -p "${DEPLOY_DIR}" 2>/dev/null || true
cd "${DEPLOY_DIR}"
+ # ========== 目录可写性预检查(权限排查友好化) ==========
+ TEST_FILE="${DEPLOY_DIR}/.deploy_writable_test_$$"
+ if ! (touch "${TEST_FILE}" && rm -f "${TEST_FILE}") 2>/dev/null; then
+ echo "================================================================="
+ echo "ERROR:deploy 用户对部署目录 ${DEPLOY_DIR} 没有写权限(Permission denied)"
+ echo "当前用户:$(whoami)"
+ echo "目录归属与权限:"
+ ls -ld "${DEPLOY_DIR}" || true
+ echo ""
+ echo "请在服务器上以 root 身份执行下面 3 行命令修复(复制粘贴):"
+ echo " chown -R deploy:docker '${DEPLOY_DIR}'"
+ echo " chmod 775 '${DEPLOY_DIR}'"
+ echo " setfacl -R -m u:deploy:rwx -m g:docker:rwx -m d:u:deploy:rwx -m d:g:docker:rwx '${DEPLOY_DIR}' 2>/dev/null || true"
+ echo "修复后重新触发此 workflow 即可。"
+ echo "================================================================="
+ exit 3
+ fi
+
if [ -n "${REGISTRY_PULL_TOKEN}" ] && [ -n "${REGISTRY_PULL_USER}" ]; then
echo "使用专用 pull 凭证登录 Gitea Container Registry"
printf '%s' "${REGISTRY_PULL_TOKEN}" \
@@ -471,11 +489,13 @@ jobs:
docker tag "${IMAGE_NEW}" "${IMAGE_LATEST}"
echo "New image pulled and tagged as latest"
- cat > docker-compose.override.yml <<YAML
+ # heredoc 分隔符用 COMPOSE_OVERRIDE,不能用 YAML(外层是 .yml 文件,YAML parser 会冲突)
+ # 注意:heredoc 内容和结束 COMPOSE_OVERRIDE 行必须保持同样的缩进(跟 run block 对齐),否则 YAML parser 会把 services: 当 YAML key 解析
+ cat > docker-compose.override.yml <<'COMPOSE_OVERRIDE'
services:
voicehub:
image: ${IMAGE_NEW}
- YAML
+ COMPOSE_OVERRIDE
echo "docker-compose.override.yml written, image=${IMAGE_NEW}"
if [ ! -f docker-compose.yml ]; then
@@ -492,7 +512,7 @@ jobs:
if [ ! -f .env ]; then
echo "================================================================="
echo "WARNING:${DEPLOY_DIR}/.env 不存在"
- echo "首次部署请在服务器上创建 .env(至少填写 POSTGRES_PASSWORD / JWT_SECRET / NUXT_PUBLIC_SITE_URL)"
+ echo "首次部署请在服务器上创建 .env(至少填写 POSTGRES_PASSWORD / JWT_SECRET / NUXT_PUBLIC_SITE_URL + 5 个 cpus 数字兜底:APP_CPUS/APP_CPUS_LIMIT/APP_CPUS_RESERVATION/PG_CPUS/REDIS_CPUS)"
echo "参考仓库根目录的 .env.example"
echo "================================================================="
fi
--
2.45.1.windows.1