fix(ci): avoid Groovy GString parse errors in Jenkins shell block

Jenkins CPS Groovy rejects patterns like if [ "${params.X}" = "true" ].
Assign params to shell variables first, then use $VAR in tests and EXTRA_ARGS.

Made-with: Cursor
This commit is contained in:
YuanXuan 2026-03-24 10:24:42 +08:00
parent 0bfb1e67e0
commit f072df7b76
1 changed files with 12 additions and 9 deletions

21
Jenkinsfile vendored
View File

@ -135,24 +135,27 @@ pipeline {
[ -f "\\$HOME/.zshrc" ] && source "\\$HOME/.zshrc" > /dev/null 2>&1
cd apps/${currentApp}
if [ "${params.CLEAN_BUILD}" = "true" ]; then
# 先写入 shell 变量,避免 GString 里出现 "\${params.xxx}" 触发 Groovy 解析错误
CLEAN_BUILD='${params.CLEAN_BUILD}'
VERSION_NAME='${params.VERSION_NAME}'
BUILD_NUMBER='${params.BUILD_NUMBER}'
BUILD_ENV='${params.BUILD_ENVIRONMENT}'
if [ "\$CLEAN_BUILD" = "true" ]; then
echo " - 执行 flutter clean..."
fvm flutter clean
fi
fvm flutter pub get
# 拼接附加构建参数 (Groovy 中 \$ 转义 $,避免被当作 Jenkins 变量插值)
EXTRA_ARGS=""
if [ ! -z "${params.VERSION_NAME}" ]; then
EXTRA_ARGS="\$EXTRA_ARGS --build-name=${params.VERSION_NAME}"
if [ -n "\$VERSION_NAME" ]; then
EXTRA_ARGS="\$EXTRA_ARGS --build-name=\$VERSION_NAME"
fi
if [ ! -z "${params.BUILD_NUMBER}" ]; then
EXTRA_ARGS="\$EXTRA_ARGS --build-number=${params.BUILD_NUMBER}"
if [ -n "\$BUILD_NUMBER" ]; then
EXTRA_ARGS="\$EXTRA_ARGS --build-number=\$BUILD_NUMBER"
fi
# 注入环境变量参数用于代码判断 (如需要)
EXTRA_ARGS="\$EXTRA_ARGS --dart-define=APP_ENV=${params.BUILD_ENVIRONMENT}"
EXTRA_ARGS="\$EXTRA_ARGS --dart-define=APP_ENV=\$BUILD_ENV"
echo " - 开始构建 APK 参数: \$EXTRA_ARGS"
fvm flutter build apk --release \$EXTRA_ARGS