diff --git a/.gitea/workflows/secrets.yml b/.gitea/workflows/secrets.yml index 066fff9..b39822d 100644 --- a/.gitea/workflows/secrets.yml +++ b/.gitea/workflows/secrets.yml @@ -5,9 +5,6 @@ on: branches: [main] paths: - 'src/**' - - 'Cargo.toml' - - 'Cargo.lock' - - '.gitea/workflows/secrets.yml' concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -56,6 +53,13 @@ jobs: echo "将创建新版本 ${tag}" fi + - name: 严格拦截重复版本 + if: steps.ver.outputs.tag_exists == 'true' + run: | + echo "错误: 版本 ${{ steps.ver.outputs.tag }} 已存在,禁止重复发版。" + echo "请先 bump Cargo.toml 中的 version,并执行 cargo build 同步 Cargo.lock。" + exit 1 + - name: 创建 Tag if: steps.ver.outputs.tag_exists == 'false' run: | diff --git a/AGENTS.md b/AGENTS.md index 426a944..f832d3f 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,5 +1,12 @@ # Secrets CLI — AGENTS.md +## 提交 / 发版硬规则(优先于下文其他说明) + +1. 涉及 `src/**`、`Cargo.toml`、`Cargo.lock`、CLI 行为变更的提交,默认视为**需要发版**,除非用户明确说明“本次不发版”。 +2. 发版前必须先检查 `Cargo.toml` 中的 `version`,再检查是否已存在对应 tag:`git tag -l 'secrets-*'`。 +3. 若当前版本对应 tag 已存在,必须先 bump `Cargo.toml` 的 `version`,再执行 `cargo build` 同步 `Cargo.lock`,然后才能提交。 +4. 提交前优先运行 `./scripts/release-check.sh`;该脚本会检查重复版本并执行 `cargo fmt -- --check && cargo clippy --locked -- -D warnings && cargo test --locked`。 + 跨设备密钥与配置管理 CLI 工具,将 refining / ricnsmart 两个项目的服务器信息、服务凭据存储到 PostgreSQL 18,供 AI 工具读取上下文。敏感数据(encrypted 字段)使用 AES-256-GCM 加密,主密钥由 Argon2id 从主密码派生并存入平台安全存储(macOS Keychain / Windows Credential Manager / Linux keyutils)。 ## 项目结构 @@ -25,6 +32,7 @@ secrets/ run.rs # inject / run 命令:临时环境变量注入 upgrade.rs # upgrade 命令:检查、校验摘要并下载最新版本,自动替换二进制 scripts/ + release-check.sh # 发版前检查版本号/tag 是否重复,并执行 fmt/clippy/test setup-gitea-actions.sh # 配置 Gitea Actions 变量与 Secrets .gitea/workflows/ secrets.yml # CI:fmt + clippy + musl 构建 + Release 上传 + 飞书通知 @@ -466,6 +474,14 @@ secrets --db-url "postgres://..." search -n refining 每次提交代码前,请在本地依次执行以下检查,**全部通过后再 push**: +优先使用: + +```bash +./scripts/release-check.sh +``` + +它等价于先检查版本号 / tag,再执行下面的格式、Lint、测试。 + ### 1. 版本号(按需) 若本次改动需要发版,请先确认 `Cargo.toml` 中的 `version` 已提升,避免 CI 打出的 Tag 与已有版本重复。**升级版本后需同时更新 `Cargo.lock`**(运行 `cargo build` 即可自动同步),否则 CI 中 `cargo clippy --locked` 会因 lock 与 manifest 不一致而失败。可通过 git tag 判断: diff --git a/scripts/release-check.sh b/scripts/release-check.sh new file mode 100755 index 0000000..f008726 --- /dev/null +++ b/scripts/release-check.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +set -euo pipefail + +repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +cd "$repo_root" + +version="$(grep -m1 '^version' Cargo.toml | sed 's/.*"\(.*\)".*/\1/')" +tag="secrets-${version}" + +echo "==> 当前版本: ${version}" +echo "==> 检查是否已存在 tag: ${tag}" + +if git rev-parse "refs/tags/${tag}" >/dev/null 2>&1; then + echo "错误: 已存在 tag ${tag}" + echo "请先 bump Cargo.toml 中的 version,再执行 cargo build 同步 Cargo.lock。" + exit 1 +fi + +echo "==> 未发现重复 tag,开始执行检查" +cargo fmt -- --check +cargo clippy --locked -- -D warnings +cargo test --locked