Files
TanXin 6fdb12a620 release: v1.4.3 — 完善上游同步结果反馈 (#58)
## 发布内容

- 解析 GitHub Fork 同步接口返回结果,明确区分无需同步、fast-forward、merge 和失败状态
- 在 Actions 日志及执行摘要中提供简洁中文反馈
- 冲突或权限异常时保留失败退出码,并输出可操作的诊断建议
- 减少同步结果中的 Emoji 图标,避免原始 JSON 带来的歧义
- 将项目版本升级至 `1.4.3` 并更新 CHANGELOG

## 验证

- 工作流 YAML 和内嵌 Bash 语法检查通过
- Worker 与前端 TypeScript 类型检查通过
- 30 个测试文件、463 项单元与集成测试通过
- 前端生产构建及内联产物生成成功
- 19 项 Chromium E2E 与无障碍测试通过
2026-08-02 09:35:04 +08:00

96 lines
2.8 KiB
YAML

name: Sync upstream
on:
schedule:
# Runs daily at 04:20 Asia/Shanghai (20:20 UTC).
- cron: '20 20 * * *'
workflow_dispatch:
permissions:
contents: write
concurrency:
group: sync-upstream-main
cancel-in-progress: false
jobs:
sync:
# Run only in forks. Scheduled sync is opt-in;
# manual dispatch remains available without setting the repository variable.
if: >-
github.event.repository.fork == true &&
(github.event_name == 'workflow_dispatch' || vars.AUTO_SYNC_UPSTREAM == 'true')
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Sync main branch from upstream
env:
GH_TOKEN: ${{ github.token }}
REPOSITORY: ${{ github.repository }}
run: |
set -euo pipefail
error_file="$(mktemp)"
trap 'rm -f "$error_file"' EXIT
if ! response=$(gh api \
--method POST \
"repos/${REPOSITORY}/merge-upstream" \
-f branch=main 2>"$error_file"); then
cat "$error_file" >&2
echo "::error title=上游同步失败::GitHub 无法同步 main 分支,请检查分支冲突或仓库权限。"
{
echo "## 上游同步结果"
echo
echo "- 状态:同步失败"
echo "- 建议:检查分支冲突或仓库权限"
} >> "$GITHUB_STEP_SUMMARY"
exit 1
fi
if [[ -s "$error_file" ]]; then
cat "$error_file" >&2
fi
rm -f "$error_file"
trap - EXIT
merge_type=$(jq -r '.merge_type // "unknown"' <<< "$response")
base_branch=$(jq -r '.base_branch // "unknown"' <<< "$response")
detail=""
case "$merge_type" in
none)
result="当前 main 分支未落后于上游,无需同步"
;;
fast-forward)
result="已成功同步上游更新"
detail="合并方式:fast-forward"
;;
merge)
result="已成功同步上游更新"
detail="合并方式:merge"
;;
*)
result="GitHub 已完成同步请求"
detail="合并方式:${merge_type}"
;;
esac
echo "上游分支:${base_branch}"
echo "同步结果:${result}"
if [[ -n "$detail" ]]; then
echo "$detail"
fi
echo "::notice title=上游同步::${result}"
{
echo "## 上游同步结果"
echo
echo "- 上游分支:\`${base_branch}\`"
echo "- 状态:${result}"
if [[ -n "$detail" ]]; then
echo "- ${detail}"
fi
} >> "$GITHUB_STEP_SUMMARY"