From f7afd7f819d98390d6bff9ab31a4b6b48f26d375 Mon Sep 17 00:00:00 2001 From: voson Date: Sun, 22 Mar 2026 16:15:29 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=90=8C=E6=AD=A5=20CI=20=E8=A7=A6?= =?UTF-8?q?=E5=8F=91=E8=B7=AF=E5=BE=84=E3=80=81=E8=A6=86=E7=9B=96=E5=BC=8F?= =?UTF-8?q?=20tag/Release=20=E8=AF=B4=E6=98=8E=E4=B8=8E=20RUST=5FLOG=20?= =?UTF-8?q?=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - AGENTS.md / README:与 workflow 变更路径、远端 tag 覆盖及非 draft Release 行为一致 - deploy/.env.example:补充可选 RUST_LOG 注释 Made-with: Cursor --- AGENTS.md | 6 +++--- README.md | 7 ++++--- deploy/.env.example | 3 +++ 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index eca380c..33540b8 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -140,10 +140,10 @@ git tag -l 'secrets-mcp-*' ## CI/CD -- **触发**:任意分支 `push`,且路径含 `crates/**`、`deploy/**`、根目录 `Cargo.toml`、`Cargo.lock`(见 `.gitea/workflows/secrets.yml`)。 -- **版本与 tag**:从 `crates/secrets-mcp/Cargo.toml` 读版本;若远程已存在同名 `secrets-mcp-` tag,则复用现有 tag 继续构建;否则由 CI 创建并推送该 tag。 +- **触发**:任意分支 `push`,且路径含 `crates/**`、`deploy/**`、根目录 `Cargo.toml`、`Cargo.lock`、`.gitea/workflows/**`(见 `.gitea/workflows/secrets.yml`)。 +- **版本与 tag**:从 `crates/secrets-mcp/Cargo.toml` 读版本;构建成功后打 `secrets-mcp-`:若远端已存在同名 tag,CI 会先删后于**当前提交**重建并推送(覆盖式发版)。 - **质量与构建**:`fmt` / `clippy --locked` / `test --locked` → `x86_64-unknown-linux-musl` 发布构建 `secrets-mcp`。 -- **Release(可选)**:`secrets.RELEASE_TOKEN`(Gitea PAT)用于创建草稿 Release、上传 `tar.gz` + `.sha256`、构建成功后发布;未配置则跳过 API Release,仅 tag + 构建。 +- **Release(可选)**:`secrets.RELEASE_TOKEN`(Gitea PAT)用于通过 API **创建或更新**该 tag 的 Release(非 draft)、上传 `tar.gz` + `.sha256`;未配置则跳过 API Release,仅 tag + 构建。 - **部署(可选)**:仅 `main`、`feat/mcp`、`mcp` 分支在构建成功时跑 `deploy-mcp`;需 `vars.DEPLOY_HOST`、`vars.DEPLOY_USER`、`secrets.DEPLOY_SSH_KEY`。勿把 OAuth/DB 等写进 workflow,用 `deploy/.env.example` 在目标机配置。 - **Secrets 写法**:Actions **secrets 须为原始值**(PEM、PAT 明文),**勿** base64;否则 SSH/Release 会失败。**勿**在 CI 中保存 `GOOGLE_CLIENT_SECRET`、DB 密码。 - **通知**:`vars.WEBHOOK_URL`(可选,飞书)。 diff --git a/README.md b/README.md index 3c9b27c..61144e7 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,7 @@ cargo build --release -p secrets-mcp | `BASE_URL` | 对外访问基址;OAuth 回调为 `{BASE_URL}/auth/google/callback`。默认 `http://localhost:9315`。 | | `SECRETS_MCP_BIND` | 监听地址,默认 `127.0.0.1:9315`。容器内或直接对外暴露端口时请改为 `0.0.0.0:9315`;反代时常为 `127.0.0.1:9315`。 | | `GOOGLE_CLIENT_ID` / `GOOGLE_CLIENT_SECRET` | 可选;不配置则无 Google 登录入口。运行时从环境读取,勿写入 CI、勿打入二进制。 | +| `RUST_LOG` | 可选;日志级别,如 `secrets_mcp=debug`。 | ```bash cargo run -p secrets-mcp @@ -165,9 +166,9 @@ deploy/ # systemd、.env 示例 见 [`.gitea/workflows/secrets.yml`](.gitea/workflows/secrets.yml)。 -- **触发**:任意分支 `push`,且变更路径包含 `crates/**`、`deploy/**`、根目录 `Cargo.toml` / `Cargo.lock`。 -- **流水线**:解析 `crates/secrets-mcp/Cargo.toml` 版本 → 若 `secrets-mcp-` 的 tag 已存在则**复用现有 tag 继续构建**,否则自动打 tag → `cargo fmt` / `clippy --locked` / `test --locked` → 交叉编译 `x86_64-unknown-linux-musl` 的 `secrets-mcp`。 -- **Release(可选)**:配置仓库 Secret `RELEASE_TOKEN`(Gitea PAT,明文勿 base64)时,会通过 API 创建**草稿** Release、在 Linux 构建成功后上传 `tar.gz` 与 `.sha256`,再自动将草稿**正式发布**;未配置则跳过创建 Release 与产物上传,仅保留 tag 与构建结果。 +- **触发**:任意分支 `push`,且变更路径包含 `crates/**`、`deploy/**`、根目录 `Cargo.toml` / `Cargo.lock`、`.gitea/workflows/**`。 +- **流水线**:解析 `crates/secrets-mcp/Cargo.toml` 版本 → `cargo fmt` / `clippy --locked` / `test --locked` → 交叉编译 `x86_64-unknown-linux-musl` 的 `secrets-mcp` → 构建成功后打 tag `secrets-mcp-`(若远端已存在同名 tag,会先删除再于**当前提交**重建并推送,覆盖式发版)。 +- **Release(可选)**:配置仓库 Secret `RELEASE_TOKEN`(Gitea PAT,明文勿 base64)时,会通过 API **创建或更新**已指向该 tag 的 Release(非 draft)、上传 `tar.gz` 与 `.sha256`;未配置则跳过 API Release,仅 tag + 构建结果。 - **部署(可选)**:仅在 `main`、`feat/mcp` 或 `mcp` 分支且构建成功时,若已配置 `vars.DEPLOY_HOST`、`vars.DEPLOY_USER` 与 `secrets.DEPLOY_SSH_KEY`,则 `deploy-mcp` 通过 SCP/SSH 更新目标机二进制并 `systemctl restart secrets-mcp`。 - **通知(可选)**:`vars.WEBHOOK_URL` 为飞书 Webhook 时,构建/部署/发布节点会推送简要状态。 diff --git a/deploy/.env.example b/deploy/.env.example index b9608ab..9cfee02 100644 --- a/deploy/.env.example +++ b/deploy/.env.example @@ -22,6 +22,9 @@ GOOGLE_CLIENT_SECRET= # WECHAT_APP_CLIENT_ID= # WECHAT_APP_CLIENT_SECRET= +# ─── 日志(可选)────────────────────────────────────────────────────── +# RUST_LOG=secrets_mcp=debug + # ─── 注意 ───────────────────────────────────────────────────────────── # SERVER_MASTER_KEY 已不再需要。 # 新架构(E2EE)中,加密密钥由用户密码短语在客户端本地派生,服务端不持有原始密钥。