Spec: 2026-11-05_blog-5n-admin-deep-optimization Co-authored-by: GLM-5.3
42 lines
1.4 KiB
Bash
Executable File
42 lines
1.4 KiB
Bash
Executable File
#!/bin/bash
|
||
# TMT 翻译构建链守卫(5n A1):包装 scripts/translate/translate_posts.py,
|
||
# 挂在 build.sh 的 astro build 之前——中文稿保存即自动出英文版,随同次部署上线。
|
||
#
|
||
# 部署哲学:翻译是增益件,绝不能阻断发布——任何失败(缺凭据/缺脚本/超时/
|
||
# TMT 报错)都只 WARN 并保留旧英文版,exit 0 让构建继续。
|
||
# 幂等语义见 translate_posts.py 头注:源文 sha256 未变跳过(零 API 调用);
|
||
# 译文 frontmatter locked: true 的人工润色版无条件不覆盖。
|
||
set -u
|
||
|
||
REPO_ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
||
SCRIPT="$REPO_ROOT/scripts/translate/translate_posts.py"
|
||
CRED="$HOME/docker_apps/blog/tencent-translate-credentials.txt"
|
||
TAG="[translate]"
|
||
TIMEOUT_SECS=180
|
||
|
||
if [ ! -f "$SCRIPT" ]; then
|
||
echo "$TAG SKIP 翻译脚本未就绪($SCRIPT)"
|
||
exit 0
|
||
fi
|
||
if ! command -v python3 >/dev/null 2>&1; then
|
||
echo "$TAG SKIP 无 python3"
|
||
exit 0
|
||
fi
|
||
if [ ! -f "$CRED" ]; then
|
||
echo "$TAG SKIP 无 TMT 凭据($CRED),保留现有英文版"
|
||
exit 0
|
||
fi
|
||
|
||
echo "$TAG 开始(TMT zh→en,幂等:已译且未变的源文零调用)"
|
||
if timeout "$TIMEOUT_SECS" python3 "$SCRIPT" "$@"; then
|
||
echo "$TAG 完成"
|
||
else
|
||
rc=$?
|
||
if [ "$rc" = 124 ]; then
|
||
echo "$TAG WARN 超时(>${TIMEOUT_SECS}s),保留旧英文版继续部署"
|
||
else
|
||
echo "$TAG WARN 失败(exit $rc),保留旧英文版继续部署"
|
||
fi
|
||
fi
|
||
exit 0
|