修复 AGC Jenkins 空参数处理
Project CI / Repository checks (push) Successful in 3m44s
Project CI / Frontend tests (push) Successful in 4m34s
Project CI / Backend tests (push) Successful in 6m55s
Project CI / Native shell tests (push) Failing after 16m37s

COMMIT_HASH 为空时按空字符串处理

OSSUTIL_BIN 为空时按默认命令处理

补充 Windows 构建节点参数行为说明
This commit is contained in:
2026-09-02 11:02:30 +08:00
parent eb14cec0b8
commit cb737cae94
2 changed files with 3 additions and 2 deletions
@@ -54,6 +54,7 @@ AGC 发布流水线使用 `jenkins/Jenkinsfile.ai-game-creator-shell-build`
10.9.7、Rust 1.96.0、Visual Studio Build ToolsMSVC 与 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 或构建日志;
@@ -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"