Skip to content

Commit 738d8d7

Browse files
committed
fix: make release sidecar build work in ci
1 parent 8e7ae72 commit 738d8d7

6 files changed

Lines changed: 36 additions & 13 deletions

File tree

docs-linhay/dev/20260426-release-prep-guide.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@
3636
对应脚本:
3737
- `scripts/build-sidecar.sh <goos> <goarch> <output-dir>`
3838

39+
补充:
40+
41+
1. 本地开发默认优先使用 `docs-linhay/references/CLIProxyAPI`
42+
2. CI runner 若没有该目录,脚本会自动 clone `https://github.com/linhay/CLIProxyAPI.git`
43+
3. 默认构建分支为 `gettokens/wham-token-fix`,可通过 `CLI_PROXY_SOURCE_REF` 覆盖
44+
3945
示例:
4046

4147
```bash

docs-linhay/memory/2026-04-26.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,3 +152,7 @@
152152
- 额外发现:Wails `darwin/universal` 打包后,`GetTokens.app/Contents/MacOS/cli-proxy-api` 会退回单架构副本;因此 workflow 需要在 `wails build` 之后显式把 `build/bin/cli-proxy-api` 覆盖回 app bundle,再进入签名与 DMG。
153153
- Release v0.1.1 已完成本地正式签名公证验证:`GetTokens.app` notarization submission `f408535a-17b1-4390-8833-144fb05cfcce` Accepted,`GetTokens_darwin_universal.dmg` submission `67381bcb-427e-4d4a-bed8-4fa66a8a5e1c` Accepted,`stapler validate` 通过。
154154
- 本轮发布版本同步到 `frontend/package.json@0.1.1` / `frontend/package-lock.json@0.1.1`,准备以 git tag `v0.1.1` 触发 GitHub Release workflow。
155+
- `v0.1.1` 的 GitHub Release workflow 失败根因已定位:runner checkout 不包含 `docs-linhay/references/CLIProxyAPI`,导致 `scripts/build-sidecar.sh` 在 CI 上找不到 fork 源码目录。
156+
- 已修正 `scripts/build-sidecar.sh`:本地优先用 `docs-linhay/references/CLIProxyAPI`,CI 缺目录时自动 clone `linhay/CLIProxyAPI#gettokens/wham-token-fix` 再构建 sidecar,避免 workflow 依赖未纳入 git 的本地参考目录。
157+
- 修正验证已完成:通过 `CLI_PROXY_SOURCE_DIR=/tmp/gettokens-missing-source ./scripts/build-sidecar.sh darwin arm64 /tmp/gettokens-sidecar-clone-verify` 覆盖了 CI 回退路径,确认自动 clone fork 后可以正常构建并退出。
158+
- 发布版本继续上调到 `v0.1.2`,避免复用已失败的 `v0.1.1` tag。

frontend/package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

frontend/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "gettokens-frontend",
33
"private": true,
4-
"version": "0.1.1",
4+
"version": "0.1.2",
55
"type": "module",
66
"scripts": {
77
"dev": "vite",

frontend/package.json.md5

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
eeceab8a0dae6629403dcfd4cc741ee1
1+
cf32875b7317ee64da4c6d80843c2f5b

scripts/build-sidecar.sh

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,35 @@ OUTPUT_DIR="$3"
1212
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
1313
ROOT_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)"
1414
SOURCE_DIR="${CLI_PROXY_SOURCE_DIR:-${ROOT_DIR}/docs-linhay/references/CLIProxyAPI}"
15+
SOURCE_REPO="${CLI_PROXY_SOURCE_REPO:-https://github.com/linhay/CLIProxyAPI.git}"
16+
SOURCE_REF="${CLI_PROXY_SOURCE_REF:-gettokens/wham-token-fix}"
1517
BINARY_NAME="cli-proxy-api"
18+
TEMP_SOURCE_DIR=""
19+
STAGE_DIR=""
1620

1721
if [[ "$GOOS" == "windows" ]]; then
1822
BINARY_NAME="${BINARY_NAME}.exe"
1923
fi
2024

21-
if [[ ! -d "${SOURCE_DIR}" ]]; then
22-
echo "CLIProxyAPI source dir not found: ${SOURCE_DIR}" >&2
23-
exit 1
24-
fi
25+
ensure_source_dir() {
26+
if [[ -f "${SOURCE_DIR}/go.mod" ]]; then
27+
return 0
28+
fi
2529

26-
if [[ ! -f "${SOURCE_DIR}/go.mod" ]]; then
27-
echo "CLIProxyAPI source dir is missing go.mod: ${SOURCE_DIR}" >&2
28-
exit 1
29-
fi
30+
TEMP_SOURCE_DIR="$(mktemp -d)"
31+
32+
echo "→ CLIProxyAPI source missing locally, cloning ${SOURCE_REPO}#${SOURCE_REF}" >&2
33+
git clone --depth 1 --branch "${SOURCE_REF}" "${SOURCE_REPO}" "${TEMP_SOURCE_DIR}/CLIProxyAPI" >&2
34+
SOURCE_DIR="${TEMP_SOURCE_DIR}/CLIProxyAPI"
35+
36+
if [[ ! -f "${SOURCE_DIR}/go.mod" ]]; then
37+
echo "CLIProxyAPI source dir is missing go.mod after clone: ${SOURCE_DIR}" >&2
38+
exit 1
39+
fi
40+
}
41+
42+
ensure_source_dir
43+
trap 'rm -rf "${TEMP_SOURCE_DIR}" "${STAGE_DIR}"' EXIT
3044

3145
resolve_git_value() {
3246
local cmd="$1"
@@ -65,7 +79,6 @@ case "${GOOS}:${GOARCH}" in
6579
fi
6680

6781
STAGE_DIR="$(mktemp -d)"
68-
trap 'rm -rf "${STAGE_DIR}"' EXIT
6982

7083
ARM64_PATH="${STAGE_DIR}/cli-proxy-api-arm64"
7184
AMD64_PATH="${STAGE_DIR}/cli-proxy-api-amd64"

0 commit comments

Comments
 (0)