【问题标题】:How to pass empty argument to msdeploy powershell deploy command如何将空参数传递给 msdeploy powershell deploy 命令
【发布时间】:2021-05-03 15:49:25
【问题描述】:

在下面的命令中,我想跳过 cmdParamString 参数,因为其中一个应用程序部署不需要它,而其他应用程序部署需要它,所以无法更改这个常见的部署命令,我该如何实现?

def deployCommand = "\"${msDeploy}\\MSDeploy.exe\" -verb:sync -source:package=\"${packageLocation}\" -dest:${destParamsString} ${cmdParamString}" 

输出 C:\bin\jenkins\workspace\Deploy Test>"C:\Program Files\IIS\Microsoft Web Deploy V3\MSDeploy.exe" -verb:sync -source:package="C:/bin/jenkins/ArtifactorySharedDownloads/cabb6d400bb5f176700c6bb21f0a5a6580c6c97f /package.zip" -dest:ContentPath="C:\WWW\Service",ComputerName="http:local.test/MSDeployAgentService",Username="xyz",Password="abc" -setParam:"NLog 数据库连接字符串"="server=No DB setting,null;database=null;Integrated Security=SSPI" -setParam:"NLog Log Level"="null" -setParam:"ISL Database connection string"="server=No DB setting,null ;database=null;Integrated Security=SSPI"

15:46:00 错误:无法识别的参数“NLog 数据库连接字符串”。

我试过了

if(application.name == "abc") {
    cmdParamString = '--%'              
}

错误:无法识别的参数“--”。

【问题讨论】:

  • deplyCommand 跑得怎么样了?
  • @cfrick bat(deployCommand) 被调用,还使用了 deploy.proj 文件,我在其中定义了这些项目
  • 所以这是一个詹金斯问题?
  • 是的 groovy 文件有 deploycommand 并且 delpoy.proj 有 Target 项目及其参数
  • @cfrick 因为这些都是空的,-setParam:"NLog 数据库连接字符串"="server=No DB setting,null;database=null;Integrated Security=SSPI" -setParam:"NLog Log Level"="null" -setParam:"ISL Database connection string"="server=No DB setting,null;database=null;Integrated Security=SSPI" deploycommand 一直失败

标签: powershell jenkins msdeploy


【解决方案1】:

对此的解决方案是传递一个如下所示的空参数并且它起作用了:

def cmdParamString = [ all database connection details are filled here]

if (application == 'abc') {
  cmdParamString = [:]
}

这已忽略应用程序 abc 的 deployCOMmand 中的 cmdParamString

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2019-09-16
    相关资源
    最近更新 更多