fix: artifact 传递补两个坑(隐藏文件 + 产物层数)
Deploy to Production / probe-network (push) Skipped
Deploy to Production / pre-check (push) Successful in 54s
Deploy to Production / build (push) Failing after 3m53s
Deploy to Production / deploy-edgeone (push) Skipped
Deploy to Production / finalize (push) Skipped
Deploy to Production / notify-failure (push) Successful in 4s

- upload-artifact@v4 默认排除隐藏文件,public/.build_hash 会丢
  → 开 include-hidden-files: true,否则中转机读不到 hash 无法判断同步
- download 后产物可能多一层 public/ → EdgeOne 部署前统一拍平并校验 index.html

配合中转机 sync.sh 改造(COS → Gitea artifact),两者需同时生效。
This commit is contained in:
zqlit committed 2026-10-04 10:06:27 +08:00
1 parent 4ede54b96d
commit fffdbe6865
1 file changed
+24
+24
View File
@@ -224,10 +224,15 @@ jobs:
# - deploy-edgeone 用 actions/download-artifact 直接拿(同 runner,零跨境)
# - 国内中转机用 Gitea API 下载 artifact zip(替代原先的「从 COS 下载」)
# hash 写在 public/.build_hash 里随 artifact 一起走,中转机解压后读它判断是否同步。
#
# ★ include-hidden-files 必须为 true:
# upload-artifact@v4 默认「忽略隐藏文件」(以 . 开头),.build_hash 正好是隐藏
# 文件,不开这个开关它不会进 artifact,中转机就读不到 hash、无法判断是否需要同步。
uses: actions/upload-artifact@v4
with:
name: hugo-public
path: public/
include-hidden-files: true
retention-days: 7
- name: Report deploy status (built)
@@ -423,6 +428,25 @@ jobs:
name: hugo-public
path: public/
- name: Normalize artifact layout
# upload-artifact 对「目录路径」的打包语义存在版本/实现差异:
# 解出来的可能是 public/index.html(内容直接在根),也可能是
# public/public/index.html(多一层目录)。这里统一拍平成 public/index.html,
# 免得 EdgeOne 部署时找不到入口、或站点多出一层 /public/ 前缀。
run: |
if [ ! -f public/index.html ] && [ -f public/public/index.html ]; then
echo "ℹ️ 检测到产物多一层 public/,已拍平"
mv public/public public__flat
rm -rf public
mv public__flat public
fi
if [ ! -f public/index.html ]; then
echo "❌ 产物结构异常:public/index.html 不存在"
find public -maxdepth 2 | head -20
exit 1
fi
echo "✅ public/index.html 就位,文件数 $(find public -type f | wc -l)"
- name: Start upload timing
id: start-edgeone-upload
run: echo "start_time=$(date +%s)" >> $GITHUB_OUTPUT