Files
BYW-VoiceHub/patches/0027-fix-ci-docker-compose.override.yml-heredoc-printf-ba.patch
T

50 lines
2.6 KiB
Diff

From 43e2a0566641a829287997473e703975d06ee536 Mon Sep 17 00:00:00 2001
From: HenryDu8133 <813367384@qq.com>
Date: Sun, 6 Sep 2026 15:10:36 +0800
Subject: [PATCH 27/58] =?UTF-8?q?fix(ci):=20docker-compose.override.yml=20?=
=?UTF-8?q?=E7=94=9F=E6=88=90=E6=96=B9=E5=BC=8F=E4=BB=8E=20heredoc=20?=
=?UTF-8?q?=E6=94=B9=20printf=20=E5=8D=95=E8=A1=8C=E6=8B=BC=EF=BC=8C?=
=?UTF-8?q?=E5=BD=BB=E5=BA=95=E7=BB=95=E5=BC=80=20bash=20heredoc=20?=
=?UTF-8?q?=E7=BB=93=E6=9D=9F=E5=88=86=E9=9A=94=E7=AC=A6=E5=BF=85=E9=A1=BB?=
=?UTF-8?q?=E8=A1=8C=E9=A6=96=20+=20=E5=8F=98=E9=87=8F=E4=B8=8D=E5=B1=95?=
=?UTF-8?q?=E5=BC=80=20+=20YAML=20parser=20=E8=AF=AF=E5=88=A4=20services:?=
=?UTF-8?q?=20=E4=B8=89=E9=87=8D=E5=9D=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitea/workflows/deploy.yml | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml
index a16efa4..350afb3 100644
--- a/.gitea/workflows/deploy.yml
+++ b/.gitea/workflows/deploy.yml
@@ -489,14 +489,15 @@ jobs:
docker tag "${IMAGE_NEW}" "${IMAGE_LATEST}"
echo "New image pulled and tagged as latest"
- # 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}
- COMPOSE_OVERRIDE
+ # 用 printf 拼 override.yml,彻底避免 bash heredoc 的三重坑:
+ # 1) 结束分隔符必须行首(否则 bash 不认,把后面整段代码都写进文件)
+ # 2) 内层 <<'XXX' 单引号包裹导致变量不展开(image: ${IMAGE_NEW} 会是字面量)
+ # 3) 外层 .yml parser 把 heredoc 里的 services: 当 YAML mapping key 解析
+ printf 'services:\n voicehub:\n image: %s\n' "${IMAGE_NEW}" > docker-compose.override.yml
echo "docker-compose.override.yml written, image=${IMAGE_NEW}"
+ echo "--- override.yml content ---"
+ cat docker-compose.override.yml
+ echo "--- override.yml end ---"
if [ ! -f docker-compose.yml ]; then
echo "docker-compose.yml 不存在,自动从仓库模板下载(如访问 GitHub 会自动加 gh-proxy 前缀)"
--
2.45.1.windows.1