Skip to content

fix: inject PROXY_VERSION at Docker build time to fix stale version display (#676)#677

Open
icebear0828 wants to merge 5 commits into
devfrom
fix/docker-version-display
Open

fix: inject PROXY_VERSION at Docker build time to fix stale version display (#676)#677
icebear0828 wants to merge 5 commits into
devfrom
fix/docker-version-display

Conversation

@icebear0828

Copy link
Copy Markdown
Owner

问题

Docker 容器内没有 .git,所以 getProxyInfo() 只能读 package.json。但 package.json 的 version 字段一直停在 2.0.77(tag-only 发版策略不 bump package.json),导致容器始终显示旧版本。

修复

文件 变更
Dockerfile 添加 ARG PROXY_VERSION + ENV PROXY_VERSION=${PROXY_VERSION}
docker-publish.yml build 时传 build-args: PROXY_VERSION=<computed>
src/self-update.ts getProxyInfo() 优先读 process.env.PROXY_VERSION,无环境变量时回退 git-tag / package.json

验证

PROXY_VERSION=2.0.80 node -e 'const m=require("./dist/self-update.js"); console.log(m.getProxyInfo().version)'
# → 2.0.80 ✅

Closes #676

…isplay

Docker containers lack .git so getProxyInfo() falls back to package.json
which hasn't been bumped (still 2.0.77 while tag is 2.0.80).

Changes:
- Dockerfile: add ARG PROXY_VERSION + ENV PROXY_VERSION=${PROXY_VERSION}
- docker-publish.yml: pass build-args: PROXY_VERSION=<computed-version>
- src/self-update.ts: getProxyInfo() checks process.env.PROXY_VERSION first,
  falls back to git-tag / package.json for non-Docker environments

Fixes #676
@icebear0828

Copy link
Copy Markdown
Owner Author

Self-review Notes

总体评价

核心机制(ARGENV → 优先读取)正确,有效解决了 Docker 容器内版本显示 bug。但有两处需要跟进。


🔴 Must Fix

1. CI smoke 未传 PROXY_VERSION build-arg,修复没有被自动化覆盖

ci-docker.yml 的 smoke build 没有传 --build-arg PROXY_VERSION,意味着 CI 跑的镜像里 PROXY_VERSION 是空字符串,版本走 fallback。

建议 smoke step 改为:

run: |
  PKG_VER=$(node -p "require('./package.json').version")
  docker build -t codex-proxy:smoke --build-arg PROXY_VERSION=$PKG_VER .
  docker run --rm codex-proxy:smoke node -e     "const m=require('./dist/self-update.js'); const v=m.getProxyInfo().version; if(!v) process.exit(1); console.log('version:',v)"

2. 缺少单元测试(违反项目 TDD 规范)

getProxyInfo()PROXY_VERSION env 设置时的行为没有任何测试覆盖:

it("prefers PROXY_VERSION env over package.json", () => {
  process.env.PROXY_VERSION = "9.9.9";
  try {
    expect(getProxyInfo().version).toBe("9.9.9");
  } finally {
    delete process.env.PROXY_VERSION;
  }
});

🟢 Low

  • CHANGELOG.md 里写的是 issue #676,应改为 PR 编号 #677
  • ci-docker.yml smoke 补好后一并修这两点再 merge

…CHANGELOG ref

- tests: add two cases covering PROXY_VERSION env priority and empty fallback
- ci-docker.yml: pass --build-arg PROXY_VERSION to smoke build; add step to
  verify container reports correct version via getProxyInfo()
- CHANGELOG: correct PR reference from #676 (issue) to #677 (PR)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Docker Image Not Updating to Latest Version (Still Showing Proxy v2.0.77)

1 participant