【问题标题】:How to use variable in CURL command?如何在 CURL 命令中使用变量?
【发布时间】:2021-06-25 05:20:03
【问题描述】:

我在共享库的管道中使用以下行。它不起作用。谁能帮我解决一下?

ApplicationName 是函数的输入参数。

sh 'curl -u $USERPASS "$UDEPLOY_URL/cli/application/environmentsInApplication?application=${ApplicationName}" > uDeployEnvChoice.json'

【问题讨论】:

  • 我尝试了以下选项并且它不起作用 -> (1) application=${ApplicationName} (2) application=$ApplicationName (3) application=${ApplicationName} (4) application=" '"$ApplicationName"'" (5) application=\"$ApplicationName\"

标签: shell curl jenkins-pipeline


【解决方案1】:

Groovy 只对双引号之间的文本进行字符串插值。

我建议你先做一个“回声”而不是“卷曲”来查看你的命令。

并且首选“-o uDeployEnvChoice.json”选项将 curl 响应正文重定向到您的文件。因此,您应该会看到 curl 输出,并且可以添加 -v 标志以获取更多信息。

【讨论】:

    【解决方案2】:

    我在共享库下的函数中使用了 withEnv。有效。使用 sh 或 bat 时,我们需要使用 withEnv

    def getEnvironmentChoice(String ApplicationName){ def 选择 = []

            withEnv(["ApplicationName=${ApplicationName}"]){     
                 withCredentials([usernameColonPassword(credentialsId: 'SCM_Credential_ID', variable: 'USERPASS')])
                  {
                  echo "In Shared Lib: ${applicationName}"
                  sh 'curl -u $USERPASS "$UDEPLOY_URL/cli/application/environmentsInApplication?application=$ApplicationName" > uDeployEnvChoice.json'
                  }
                }                  
                def uDeployJsonData
                uDeployJsonData = readJSON file:'uDeployEnvChoice.json'
                   
                echo "Size: ${uDeployJsonData.size()}"
                   
                for(i = 0; i < uDeployJsonData.size(); i++)
                {  
                 CHOICES.add(uDeployJsonData[i].name)
                }
                   
                return CHOICES
    

    }

    【讨论】:

      猜你喜欢
      • 2021-12-29
      • 1970-01-01
      • 1970-01-01
      • 2015-11-04
      • 1970-01-01
      • 1970-01-01
      • 2019-08-27
      • 2021-08-27
      • 1970-01-01
      相关资源
      最近更新 更多