Publish gitea-publish via gitea-publish skill
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
---
|
||||
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 透出。
|
||||
Reference in New Issue
Block a user