diff --git a/docs/technical/【技术方案】AGC客户端更新检查与下载-2026-08-31.md b/docs/technical/【技术方案】AGC客户端更新检查与下载-2026-08-31.md index 0221e9304..bce24d154 100644 --- a/docs/technical/【技术方案】AGC客户端更新检查与下载-2026-08-31.md +++ b/docs/technical/【技术方案】AGC客户端更新检查与下载-2026-08-31.md @@ -54,6 +54,7 @@ AGC 发布流水线使用 `jenkins/Jenkinsfile.ai-game-creator-shell-build`, 10.9.7、Rust 1.96.0、Visual Studio Build Tools(MSVC 与 Windows SDK)、NSIS、Git 和 ossutil; Jenkins Agent 服务必须能在同一用户环境中找到这些命令。流水线执行根 workspace 的 `npm ci`,然后调用 `npm run ai-game-creator-shell:release:upload`,并归档 Windows 安装包、`latest.json` 与源码 commit。 +流水线会将未导出的空参数按空字符串处理:`COMMIT_HASH` 留空时沿用 Jenkins SCM 当前提交,`OSSUTIL_BIN` 留空时使用节点 PATH 中的 `ossutil`,不会因 PowerShell 对空环境变量调用 `.Trim()` 而提前失败。 Jenkins Job 在“Build and upload”阶段通过受保护凭据 ID `AliyunAccessKeyId` 和 `AliyunaccessKeySecret` 注入 AccessKey,仅在当前进程运行时传给 ossutil,不写入仓库、workspace 或构建日志; diff --git a/jenkins/Jenkinsfile.ai-game-creator-shell-build b/jenkins/Jenkinsfile.ai-game-creator-shell-build index e541f2abe..ab7e44744 100644 --- a/jenkins/Jenkinsfile.ai-game-creator-shell-build +++ b/jenkins/Jenkinsfile.ai-game-creator-shell-build @@ -47,7 +47,7 @@ pipeline { if ($LASTEXITCODE -ne 0) { throw 'Git fetch 分支失败' } & $git checkout --detach "origin/$($env:SOURCE_BRANCH)" } - $commit = $env:COMMIT_HASH.Trim() + $commit = ([string]$env:COMMIT_HASH).Trim() if ($commit) { if ($commit -notmatch '^[0-9a-fA-F]{7,64}$') { throw 'COMMIT_HASH 必须是 7-64 位十六进制 Git commit。' @@ -85,7 +85,7 @@ pipeline { throw "Windows AGC 节点缺少 $commandName,请先安装并加入 Jenkins Agent PATH。" } } - $ossutil = $env:OSSUTIL_BIN.Trim() + $ossutil = ([string]$env:OSSUTIL_BIN).Trim() if (-not $ossutil) { $ossutil = 'ossutil' } if (-not (Get-Command $ossutil -ErrorAction SilentlyContinue)) { throw "Windows AGC 节点缺少 ossutil:$ossutil"