Batch file Jenkins声明性管道:如何在Windows bat命令中使用传递到函数中的参数?
我有一个管道,在其中我定义了一个接受字符串参数的函数,然后尝试在包含bat命令的步骤中使用该函数/参数。我一辈子都不知道如何在bat命令中公开这些字符串参数 下面是函数-Batch file Jenkins声明性管道:如何在Windows bat命令中使用传递到函数中的参数?,batch-file,jenkins,groovy,arguments,jenkins-declarative-pipeline,Batch File,Jenkins,Groovy,Arguments,Jenkins Declarative Pipeline,我有一个管道,在其中我定义了一个接受字符串参数的函数,然后尝试在包含bat命令的步骤中使用该函数/参数。我一辈子都不知道如何在bat命令中公开这些字符串参数 下面是函数- // publish step def publish(String projectName, String publishProfile) { echo "${projectName}" echo "${publishProfile}" bat ''' sqlpackage.exe /Action:P
// publish step
def publish(String projectName, String publishProfile) {
echo "${projectName}"
echo "${publishProfile}"
bat ''' sqlpackage.exe /Action:Publish /SourceFile:%WORKSPACE%\\%projectName%\\bin\\Debug\\%projectName%.dacpac /Profile:%WORKSPACE%\\%projectName%\\Publish\\%publishProfile% '''
}
在控制台输出中,我可以看到传入的正确的projectName和publishProfile被回显。%工作区%在bat命令中正确显示。但是,%projectName%和%publishProfile%只是空白。我尝试了很多双引号、单引号等的组合。如何在bat命令中公开它们?最终解决了这个问题。在bat命令中使用“”(双引号)而不是“”,可以公开参数。然后,我在bat命令中使用set将它们设置为变量,这样它们就可以很好地处理文件路径/文件扩展名
def publish(String projectName, String publishProfile) {
bat """ set PROJNAME=$projectName
set PUBPROF=$publishProfile
\"C:\\Program Files (x86)\\Microsoft SQL Server\\140\\DAC\\bin\\sqlpackage.exe\" /Action:Publish /SourceFile:%WORKSPACE%\\%PROJNAME%\\bin\\Debug\\%PROJNAME%.dacpac /Profile:%WORKSPACE%\\%PROJNAME%\\Publish\\%PUBPROF% """
}