我已经使用片段生成器定义了属性,下面是jenkinsfile的部分。
properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([string(defaultValue: 'SNAPSHOT', description: '', name: 'BUILD_TYPE'), string(defaultValue: '5.7.0', description: '', name: 'BRANCH_VERSION')]), pipelineTriggers([])])
当我使用" echo param"回显上面定义的属性时或者" echo env.param"这些参数已正确解析。
以下内容已正确解决:
echo BUILD_TYPE
echo BRANCH_VERSION
echo env.BUILD_TYPE
echo env.BRANCH_VERSION
但是,我需要在批处理脚本中使用这些参数,这是同一个jenkins文件的一部分,但这些参数在那里没有解析。下面是jenkinsfile的批处理部分
bat '''echo off
echo "flag: env.BUILD_TYPE"
echo "flag: env.BRANCH_VERSION"'''
答案 0 :(得分:0)
由于批处理脚本是Windows CMD脚本,必须遵循Windows CMD的语法。
即。这意味着对CMD Interpreter处理的环境变量使用正确的变量扩展。
CMD脚本通过将环境变量包装在百分号中(或启用延迟扩展时的感叹号(!))来扩展环境变量。
例如:Jenkins设置环境变量“BUILD_TYPE”CMD使用“%BUILD_TYPE%”扩展此值
如果它位于独立的CMD文件中,它将如下所示:
REM Script: Jenkinsbat.cmd
@(SETLOCAL
ECHO OFF
)
echo "flag: %BUILD_TYPE%"
echo "flag: %BRANCH_VERSION%"
(ENDLOCAL
Exit /b
)
Jenkins会通过引用脚本的完整路径来调用它:
bat '''REM Call Script: Jenkinsbat.cmd
ECHO OFF
CALL "\\URL\Share\Path_to_Bat\Jenkinsbat.cmd"'''
由于您的批处理脚本是位于Jenkins文件中的代码,因此它应如下所示:
bat '''REM Script: Jenkinsbat.cmd
ECHO OFF
echo "flag: %BUILD_TYPE%"
echo "flag: %BRANCH_VERSION%"'''