chore(远端): 彻底剔除 GitHub —— 删除已退役的 GitHub Actions 定义
用户明确「GitHub 现在整改,不能再作为备份库」,据此把 GitHub 从本项目
所有环节清干净。上一轮(b39dc297)已完成 remote / 推送别名 / 发布链路的
去 GitHub 化,本轮清掉最后一块实体:CI 定义。
- 删除整个 `.github/` 目录(3 个文件、共 1268 行):
deploy.yml 1169 行 原主构建发布流水线(已由 .cnb.yml 接管)
aliyun-backup.yml 54 行 备份到阿里云 OSS
cleanup.yml 45 行 清理 artifacts / cache
已确认无任何脚本、配置或流水线引用它们(全仓只有 .cnb.yml 的注释提过 deploy.yml)。
实现完整保留在 git 历史里,需要时可翻。
同步更新引用它们的注释与文档(否则会指向不存在的文件):
- `.cnb.yml` 头部:说明原流水线已删除、要查旧实现请翻 git 历史;
去掉「见 deploy.yml 第 290 行」这类失效指向
- `CNB构建落地方案.md`:
§4.0 标题「CNB 主仓 + GitHub 备份」→「+ 辅仓备份」
§pushurl 缺陷论证里「GitHub 那份备份」→「辅仓那份备份」
§敏感文件:「已核实 github.com 返回 Page not found」→ 更新为
账号被标记 + 仓库被 AUP 清空,该威胁面已消失
§历史清理的判断已变:当初不做的唯一顾虑(备份会分叉)已随 GitHub 消失,
filter-repo 现在是可行窗口(代价:SHA 全变、自建 Gitea 需重推)
- `架构总览.md`:§5.1 标注当前实际只用 `git push origin main`(gitee remote 未建);
§6 #1 改写为「GitHub 已彻底退出备份体系」、#5 由「可删」改为「已删除」;
末尾「已退役参考」改为「已删除,可翻 git 历史」
- `README.md`:脚本表补上 `backup-bundle.mjs` / `backup-task.cmd`;
`setup-cnb-remotes.sh` 的说明去掉 GitHub
This commit is contained in:
1 parent
8abe93d17a
commit
af1bbf9c1e
7 files changed
+24
-1284
No files matched your search
@@ -1,11 +1,13 @@
|
||||
# =====================================================================
|
||||
# CNB 流水线 | 由 .github/workflows/deploy.yml 迁移(2026-10-04)
|
||||
# CNB 流水线 | 由原 GitHub Actions 流水线迁移(2026-10-04)
|
||||
# ★ 原 .github/workflows/ 已于 2026-10-06 随 GitHub 一并删除
|
||||
# (账号被平台标记 + 仓库被按 AUP 清空),需要查旧实现请翻 git 历史
|
||||
# =====================================================================
|
||||
# 为什么迁过来反而更简单:
|
||||
# 1. 构建节点在国内(腾讯云)→ 又拍云「境内直传」恢复。
|
||||
# 原版因 runner 在境外(Gitea 在境外 VPS),直传又拍云恒失败被 if:false
|
||||
# 停用,改用「COS 中转 + 广州机 sync.sh 每分钟轮询」兜底。CNB 让这条
|
||||
# 整链失去存在理由(见 deploy.yml 第 290 行那段注释的「复活条件」)。
|
||||
# 整链失去存在理由。
|
||||
# 2. 不需要 artifact 传递:同一 pipeline 的 stages 顺序执行、共享工作目录,
|
||||
# public/ 天然传给后续 stage —— 连带 upload/download-artifact 在 Gitea 上
|
||||
# 那两个坑(v4 不支持 / v3 finalize 500)一起消失。
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
name: 备份到阿里云OSS
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: "0 0 * * 0" # 每周日的00:00执行一次(UTC)
|
||||
workflow_dispatch: # 手动触发工作流
|
||||
|
||||
concurrency:
|
||||
group: "aliyun-backup"
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
backup:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: 下载代码
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: true
|
||||
fetch-depth: 0
|
||||
|
||||
- name: 配置阿里云OSS
|
||||
uses: manyuanrong/setup-ossutil@v3.0
|
||||
with:
|
||||
endpoint: ${{ secrets.OSS_ENDPOINT }}
|
||||
access-key-id: ${{ secrets.OSS_ACCESS_KEY_ID }}
|
||||
access-key-secret: ${{ secrets.OSS_ACCESS_KEY_SECRET }}
|
||||
|
||||
- name: 增量上传资源(排除 public 文件夹)
|
||||
run: |
|
||||
# 使用 find -print0 和 xargs -0 安全处理特殊字符
|
||||
# 排除 public、.git、node_modules 等不必要的文件
|
||||
find . \
|
||||
-path ./public -prune -o \
|
||||
-path ./.git -prune -o \
|
||||
-path ./node_modules -prune -o \
|
||||
-path ./resources -prune -o \
|
||||
-type f -print0 | xargs -0 -I {} ossutil cp "{}" "oss://${{ secrets.OSS_BUCKET }}/{}" --update
|
||||
|
||||
- name: 验证备份完整性
|
||||
run: |
|
||||
# 统计本地文件数(排除目录)
|
||||
LOCAL_COUNT=$(find . -path ./public -prune -o -path ./.git -prune -o -path ./node_modules -prune -o -path ./resources -prune -o -type f | wc -l)
|
||||
echo "本地文件数: $LOCAL_COUNT"
|
||||
|
||||
# 统计 OSS 上的文件数
|
||||
REMOTE_COUNT=$(ossutil ls oss://${{ secrets.OSS_BUCKET }}/ --recursive | grep -v "Directory:" | wc -l)
|
||||
echo "OSS 文件数: $REMOTE_COUNT"
|
||||
|
||||
echo "## 备份统计" >> $GITHUB_STEP_SUMMARY
|
||||
echo "- **本地文件数**: $LOCAL_COUNT" >> $GITHUB_STEP_SUMMARY
|
||||
echo "- **OSS 文件数**: $REMOTE_COUNT" >> $GITHUB_STEP_SUMMARY
|
||||
@@ -1,45 +0,0 @@
|
||||
name: Cleanup Artifacts and Cache
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
cleanup:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
actions: write
|
||||
contents: read
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
steps:
|
||||
- name: Setup GitHub CLI
|
||||
run: |
|
||||
gh extension install actions/gh-actions-cache || true
|
||||
|
||||
- name: Delete all artifacts
|
||||
run: |
|
||||
echo "🗑️ 正在删除所有 artifacts..."
|
||||
for artifact in $(gh api repos/${{ github.repository }}/actions/artifacts --paginate | jq -r '.artifacts[].id'); do
|
||||
echo "删除 artifact: $artifact"
|
||||
gh api -X DELETE repos/${{ github.repository }}/actions/artifacts/$artifact || true
|
||||
done
|
||||
echo "✅ Artifacts 清理完成!"
|
||||
|
||||
- name: Delete all caches
|
||||
run: |
|
||||
echo "🗑️ 正在删除所有 caches..."
|
||||
for cache in $(gh api repos/${{ github.repository }}/actions/caches --paginate | jq -r '.actions_caches[].id'); do
|
||||
echo "删除 cache: $cache"
|
||||
gh api -X DELETE repos/${{ github.repository }}/actions/caches/$cache || true
|
||||
done
|
||||
echo "✅ Caches 清理完成!"
|
||||
|
||||
- name: Verify cleanup
|
||||
run: |
|
||||
echo "📊 当前存储状态:"
|
||||
echo "Artifacts:"
|
||||
gh api repos/${{ github.repository }}/actions/artifacts --paginate | jq -r '.artifacts | length' | xargs -I {} echo " - {} 个 artifacts"
|
||||
echo "Caches:"
|
||||
gh api repos/${{ github.repository }}/actions/caches --paginate | jq -r '.actions_caches | length' | xargs -I {} echo " - {} 个 caches"
|
||||
echo ""
|
||||
echo "✅ 清理完成!"
|
||||
File diff suppressed because it is too large.
Load diff
+11
-8
@@ -143,7 +143,7 @@ CNB 只替换「构建 + 搬运」这一段,顺带砍掉广州中转机上那
|
||||
|
||||
## 四、落地骨架
|
||||
|
||||
### 4.0 第一步:仓库迁移与「双远端推送」(CNB 主仓 + GitHub 备份)
|
||||
### 4.0 第一步:仓库迁移与「双远端推送」(CNB 主仓 + 辅仓备份)
|
||||
|
||||
**目标形态**
|
||||
|
||||
@@ -167,7 +167,7 @@ gitea → 自建 Gitea ← 暂时留着当只读参考,
|
||||
| 两个 pushurl 都可用 | ✅ 两个都收到,一次 push 搞定 |
|
||||
| **第一个失败** | ❌ **git 立即中止,第二个根本不会被推** |
|
||||
|
||||
也就是说:**CNB 推失败时,GitHub 那份备份也不会更新** —— 备份的意义就没了。
|
||||
也就是说:**主仓推失败时,辅仓那份备份也不会更新** —— 备份的意义就没了。
|
||||
所以拆成两个独立 remote,别名里用 `;` 而不是 `&&`,保证互不阻塞。
|
||||
|
||||
**脚本**(已就位,可直接用)
|
||||
@@ -211,12 +211,12 @@ git config --global credential.helper manager # Windows 的 Git Credential Man
|
||||
| `GITEA_SECRETS.md` | Gitea 相关凭据说明 | 已跟踪 |
|
||||
| `content/posts/2024/.../setup-secrets.png` | 疑似密钥配置截图 | 已跟踪 |
|
||||
|
||||
**好消息**:已核实 `https://github.com/zqlit/blog` 返回 **Page not found**,仓库不可公开访问
|
||||
→ **私钥没有被公开暴露**,无需紧急处置。
|
||||
**关于暴露面**:该仓一直是**私有**的(匿名 API 返回 404)。2026-10-06 账号被平台标记后
|
||||
仓库更被按 **AUP 合规**清空、本地也移除了 `gh` remote → **这条威胁面已彻底消失**。
|
||||
|
||||
**但两件事建议顺手做掉**:
|
||||
**但两件事仍建议做掉**:
|
||||
|
||||
1. **CNB 仓库建成「私有」** —— 这些文件在私有仓里影响可控
|
||||
1. **CNB 仓库保持「私有」** —— 这些文件在私有仓里影响可控
|
||||
2. **`git rm --cached` 停止继续跟踪**(历史里的删不掉,但至少不再新增):
|
||||
```bash
|
||||
git rm --cached .env GITEA_SECRETS.md write-server/nginx/ssl/privkey.pem write-server/nginx/ssl/fullchain.pem
|
||||
@@ -226,8 +226,11 @@ git config --global credential.helper manager # Windows 的 Git Credential Man
|
||||
(另:`.gitignore` 里那条 `write\.env` 是写错的 —— gitignore 中 `\` 是转义符,
|
||||
它实际匹配文件名 `write.env` 而非 `write/.env`;幸好 `write/.gitignore` 里有 `.env*` 兜住了。)
|
||||
|
||||
**不建议现在做历史清理**(`git filter-repo`):会重写 955 个提交、让 GitHub 备份随之分叉,
|
||||
收益(去掉一个未公开的私钥)远小于风险。正确做法是**轮换凭据**而不是重写历史。
|
||||
**历史清理(`git filter-repo`)的判断已变**:当初不做的唯一顾虑是「会让备份分叉」——
|
||||
2026-10-06 GitHub 那份已消失,**这个顾虑没有了**;且离线 bundle 已加密
|
||||
(见 `架构总览.md` §5.6),不受影响。
|
||||
所以**现在是彻底抹掉这些文件历史的最佳窗口**。
|
||||
代价:全部提交 SHA 改变、自建 Gitea 那份需重推。
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -131,7 +131,9 @@ Hugo + Ying 主题。`hugo.toml` 控站点信息、永久链接、Artalk 地址
|
||||
| `add_draft_to_hidden.py` | 构建前把 `status: hidden` 转成草稿 | **CI** |
|
||||
| `refresh_cdn.js` | 刷新多吉云 CDN(零依赖) | **CI** |
|
||||
| `send_mail.js` | 构建结果邮件通知(零依赖 SMTP) | **CI** |
|
||||
| `setup-cnb-remotes.sh` | 切换/重建 git 远端(CNB 主仓 + GitHub 备份) | 本机 |
|
||||
| `setup-cnb-remotes.sh` | 切换/重建 git 远端(CNB 主仓 + 辅仓备份) | 本机 |
|
||||
| `backup-bundle.mjs` | 整仓 bundle → AES-256-GCM 加密 → WebDAV 传中兴 F50(见 架构总览 §5.6) | 本机/计划任务 |
|
||||
| `backup-task.cmd` | 上面的计划任务入口(每天 03:30;**内容必须全 ASCII**) | 计划任务 |
|
||||
| `optimize_images.js` | 图片批量压缩优化 | 本机 |
|
||||
| `generate_circle_data.js` | 抓友链 RSS 生成朋友圈数据 | 本机 |
|
||||
| `update_link_lite_json.ps1` | 友链 `links.yaml` → JSON | 本机 |
|
||||
|
||||
@@ -112,7 +112,8 @@
|
||||
### 5.1 推送
|
||||
|
||||
```bash
|
||||
git pushall # 别名 = git push origin main; git push gitee main
|
||||
git pushall # 别名 = git push origin main; git push gitee main
|
||||
git push origin main # ← 当前实际只用这条:gitee remote 尚未建立(见 §6 #2)
|
||||
```
|
||||
|
||||
用 `;` 而非 `&&` —— **一段失败不影响另一段**(实测:串联 `pushurl` 时第一个失败会中止后续)。
|
||||
@@ -272,11 +273,11 @@ git clone blog.bundle blog # 或 git fetch blog.bundle 'refs/*:refs/*'
|
||||
|
||||
| # | 项 | 说明 |
|
||||
|---|---|---|
|
||||
| 1 | `gh` remote(GitHub) | ✅ **已移除**(2026-10-06)。GitHub 账号被标记、仓库被 AUP 清空,改以 Gitee 为辅仓 |
|
||||
| 1 | `gh` remote(GitHub) | ✅ **已移除**(2026-10-06)。GitHub 账号被标记、仓库被 AUP 清空 —— **GitHub 已彻底退出本项目的备份体系**:远端、推送别名、发布链路、CI 定义全部清干净。辅仓选型见 #2 |
|
||||
| 2 | **辅仓选型(未定)** | 当前 `pushall` 已写成 `origin + gitee`,但 `gitee` remote **尚不存在** → 每次 `git pushall` 的第二段会报错(**不影响 CNB 那段**)。两条路:**Gitee**(需先解 §5.3 两条硬约束)或**云效 Codeup**(见 §5.3 对照,零改造,但需绑钉钉或选「地域组织」)。定下后再 `git remote add` |
|
||||
| 3 | `bin/linux/hugo` 出库 | 83.1MB,超 Gitee 单文件上限。**只有选 Gitee 才必须做**;选 Codeup 则不必(占其命令行 200MB 上限的 41.6%)。要做的话需改为构建时获取(国内镜像 / CNB 对象存储),并同步改 `.cnb.yml` 的 `by:` 字段 |
|
||||
| 4 | `gitea` remote | 只读保留,稳定几天后 `git remote remove gitea` |
|
||||
| 5 | GitHub 侧旧 workflow | `.github/workflows/*`(`deploy.yml` 1169 行 + 两个辅助)已随 GitHub 一并退役,可删 |
|
||||
| 5 | GitHub 侧旧 workflow | ✅ **已删除**(2026-10-06)。整个 `.github/` 目录移除(`deploy.yml` 1169 行 + `aliyun-backup.yml` + `cleanup.yml`)—— **GitHub 已不再是任何环节的依赖**。旧实现可在 git 历史中查 |
|
||||
| 6 | 令牌 scope | 缺 `repo-cnb-history:r`(读构建日志);补上后 agent 可自行排错 |
|
||||
| 7 | Gitea 主机 / 广州中转机 | 发布链路已不依赖;是否退役取决于其它用途 |
|
||||
| 8 | `README.md` | 仍写着旧 GitHub Actions 流程,待更新 |
|
||||
@@ -295,4 +296,5 @@ git clone blog.bundle blog # 或 git fetch blog.bundle 'refs/*:refs/*'
|
||||
**证据出处(现行)**:`.cnb.yml`(284 行)、`deploy/Dockerfile`、`bin/linux/hugo`、
|
||||
`scripts/send_mail.js`、`scripts/refresh_cdn.js`、`scripts/setup-cnb-remotes.sh`、
|
||||
`scripts/backup-bundle.mjs`、`scripts/backup-task.cmd`。
|
||||
已退役参考:`.github/workflows/deploy.yml`(1169 行)。
|
||||
原 GitHub Actions 流水线(`.github/workflows/deploy.yml`,1169 行)已于 2026-10-06 删除,
|
||||
需要查请翻 git 历史。
|
||||
Reference in new issue
Block a user