Files
2026-08-09 00:36:06 +00:00

70 lines
3.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
description: 将本地目录发布到自托管 Gitea 实例,自动建仓并推送。当用户说「嘎查」「嘎查一下」「把这个技能发布到我的 Gitea」「推送到 gitea.apescale.com」「在
gitea 上建仓并上传」「把生成内容提交到个人 gitea」时使用。
name: gitea-publish
---
# Gitea 发布技能
把任意本地目录发布为 Gitea 仓库:自动建仓(若不存在)+ git 提交并推送。
典型用途:开发一个 WorkBuddy 技能后,直接把它发布到你自己的 Gitea。
## 何时使用
- "嘎查" / "嘎查一下"(暗号,谐音 Gitea
- "把这个技能发布到我的 Gitea"
- "推送到 gitea.apescale.com"
- "在 gitea 上建一个仓库并把内容传上去"
- "把生成内容提交到个人 gitea"
## 配置(凭据,务必通过变量/参数传入,切勿硬编码)
通过环境变量或命令行参数传入,避免把令牌写进任何文件或在聊天里回显:
- `GITEA_URL` : Gitea 基地址
- `GITEA_USER` : 用户名
- `GITEA_TOKEN` : 个人访问令牌(PAT,推荐)或密码
本部署默认值:
- Gitea 地址固定为 `https://gitea.apescale.com`
- 用户名默认 `figmar`(即 `GITEA_USER=figmar`
- `GITEA_TOKEN` 无默认值,必须由用户提供(环境变量或 `--token`),且不写入任何文件。
生成 PAT:Gitea 网页 → 右上角头像 → 设置 → 应用 → 生成令牌。
## 用法
运行本技能附带的脚本(路径相对于本 SKILL.md 所在目录):
```bash
bash <skill_dir>/publish.sh \
--repo <仓库名> \
--path <本地目录> \
--url "$GITEA_URL" \
--user "$GITEA_USER" \
--token "$GITEA_TOKEN" \
[--display-url "$GITEA_DISPLAY_URL"] \ # 可选:对外展示的公开域名,默认 https://gitea.apescale.com
[--private] # 可选:创建私有仓库
[--branch <分支>] # 可选:指定默认分支,默认 main
```
也可以用同名环境变量替代 `--url/--user/--token`
## 脚本流程
1. 调用 Gitea API `GET /api/v1/repos/{user}/{repo}` 检查仓库是否存在;
不存在则用 `POST /api/v1/user/repos` 创建(支持 `--private`)。
2.`--path` 内执行 `git init`(若尚未初始化),提交全部文件。
3. 设置 remote 为 `<protocol>://<user>:<token>@<host>/<user>/<repo>.git` 并推送默认分支。协议(http/https)从 `--url` 参数自动提取。
4. 若远程已有内容,先 `pull --rebase` 再推送,降低冲突风险。
## 注意事项
- 凭据仅用于本次建仓/推送,不要写入仓库或回显到聊天记录。
- 默认分支优先使用 `main`,回退到 `master`
- 该技能可"自举":开发完成后,用它把自身(即本目录)发布到 Gitea。
- **协议自适应**:脚本从 `--url` 中提取协议(`http://``https://`),不再硬编码 `https://`。HTTP-only 的 Gitea 实例也可正常推送。
- **代理环境**:若运行环境有全局代理(如沙箱),需设置 `no_proxy='*'` 或在命令前添加 `http_proxy='' https_proxy=''`,否则 curl/git 可能走代理导致连接失败。
- **凭据自动发现**:若用户未显式提供凭据,可检查 macOS 钥匙串(`git credential-osxkeychain get`)和 `~/.ssh/config`Host 条目)自动发现 Gitea 地址和凭据。
- **对外地址始终为公开域名**:脚本把"实际推送/API 端点"与"对外展示的 Web 地址"解耦。无论 `--url`(或 `GITEA_URL`)是内网 IP、端口还是其他主机名,最终打印给用户的仓库地址都落在 `--display-url` / `GITEA_DISPLAY_URL` 指定的公开域名下(默认 `https://gitea.apescale.com`),绝不把内网主机名或带凭据的 URL 透出。