我无法理解为什么此Azure CLI无法在我的Azure管道中工作

我无法理解为什么此Azure CLI无法在我的Azure管道中工作,azure,azure-devops,yaml,azure-cli,azure-devops-pipelines,Azure,Azure Devops,Yaml,Azure Cli,Azure Devops Pipelines,在将运行时变量传递到以下两个CLI命令时,我在管道中不断遇到以下问题 az webapp create --resource-group $(RG) --plan $(azureSubscription) --name "%APPNAME%"' az webapp config appsettings set --name "%APPNAME%"' --resource-group $(RG) --settings '/home/vsts/work/1/

在将运行时变量传递到以下两个CLI命令时,我在管道中不断遇到以下问题

az webapp create --resource-group $(RG) --plan $(azureSubscription) --name "%APPNAME%"'

az webapp config appsettings set --name "%APPNAME%"' --resource-group $(RG) --settings '/home/vsts/work/1/s/studentsettings.json' --subscription $(azureSubscription)
这就是错误:

/home/vsts/work/_temp/azureclitaskscript1617264397722.sh: line 1: syntax error near unexpected token `('
我已经附上了一段代码,我已经做了请有人能帮助我。我花了8个小时试图解决这个问题,一个深夜。我需要这个来工作

-作业:作业2
displayName:“获取学生环境的变量值”
德彭森:工作1
步骤:
-任务:AzureCLI@1
displayName:'Azure CLI'
投入:
azureSubscription:$(azureSubscription)
scriptLocation:inlineScript
inlineScript:|
mkdir$(Pipeline.Workspace)\BlobFile
az存储blob下载--容器名称$(containername)--文件'$(Pipeline.Workspace)/s/student.json'--名称'student.json'--连接字符串'MY VALUE'
az存储blob下载--容器名称'private'--文件'$(Pipeline.Workspace)/s/studentsettings.json'--名称'studentappsettings.json'--连接字符串'MY VALUE'
-pwsh:|
cd'/home/vsts/work/1/s/'
ls
$armOutput=Get Content'/home/vsts/work/1/s/student.json'|从json转换
$student=$armOutput.studentvalue#使用student而不是studentvalue
$type=$armOutput.type
$appservice=$armOutput.appservicevalue
写入主机“[$student]的值为[$appservice]”
写入主机“##vso[task.setvariable variable=studentvalue;isOutput=true]$student”#使用studentvalue而不是$studentvalue
写入主机“##vso[task.setvariable variable=appservicevalue;isOutput=true]$appservice”#使用appservicevalue而不是$appservice
名称:setvarStep
-脚本:echo$(setvarStep.studentvalue)
-脚本:echo$(setvarStep.appservicevalue)
姓名:echovar
-工作:工作3
displayName:创建Web应用程序
德彭森:工作2
变量:
webappname:$[dependencies.job2.outputs['setvarStep.studentvalue']]
appservicename:$[dependencies.job2.outputs['setvarStep.appservicevalue']]
步骤:
-脚本:导出APPNAME=webappname
-脚本:回显%APPNAME%
-脚本:导出APPPLAN=appservicename
-脚本:回显%APPPLAN%
#创建Web应用程序
-任务:AzureCLI@1
displayName:“在$(appservicename)中创建Web应用”
投入:
azureSubscription:$(azureSubscription)
scriptLocation:inlineScript
inlineScript:|
az webapp创建--资源组$(RG)--计划$(azureSubscription)--名称“%APPNAME%”
#下载工件文件
-下载:无
-任务:DownloadPipelineArtifact@2
displayName:“下载生成工件”
投入:
模式:'***.zip'
路径:“$(Build.ArtifactStagingDirectory)”
#部署到Azure Web应用程序
-任务:AzureWebApp@1
displayName:'Azure Web应用部署:$(webappname)'
投入:
包:$(Build.ArtifactStagingDirectory)/***.zip
azureSubscription:$(appconnectionname)
ConnectedServiceName:$(appconnectionname)
appName:“$(webappname)”的名称
ResourceGroupName:$(RG)
#更改应用程序设置
-任务:AzureCLI@1
displayName:“更改Web应用设置”
投入:
azureSubscription:$(azureSubscription)
scriptLocation:inlineScript
inlineScript:|
az webapp配置appsettings集--名称“%APPNAME%”--资源组$(RG)--设置'/home/vsts/work/1/s/studentsettings.json'--订阅$(azureSubscription)
/home/vsts/work/_temp/azureclitaskscript1617264397722.sh:第1行:意外标记“(”附近的语法错误

从错误消息来看,Azure Cli命令的格式似乎存在一些问题

您需要检查以下两点:

1.在Azure CLI命令中,它在命令末尾包含一个额外字符

2.您可以尝试使用
$(webappname)
格式来调用变量,而不是
%APPNAME%

以下是一个例子:

- job: job3
  displayName: Create Web App 
  dependsOn: job2
  variables:
    webappname: $[ dependencies.job2.outputs['setvarStep.studentvalue'] ]
    appservicename: $[ dependencies.job2.outputs['setvarStep.appservicevalue'] ]
  steps:
  - script: |
     set APPNAME=webappname  


  - script: echo %APPNAME%
  - script: export APPPLAN=appservicename
  - script: echo %APPPLAN%

# Create Web App
  - task: AzureCLI@1
    inputs:
      azureSubscription: $(azureSubscription)
      scriptLocation: 'inlineScript'
      inlineScript: |
        az webapp create --resource-group $(RG) --plan $(azureSubscription) --name $(webappname)

坏掉的部分是这一点:#创建Web应用程序-任务:AzureCLI@1displayName:在$(appservicename)中创建Web应用输入:azureSubscription:'$(azureSubscription)'脚本位置:'inlineScript'inlineScript:'az webapp创建-g$(RG)-p$(azureSubscription)-n$(webappname)“我试过了,但没用。我甚至找到了一篇语法正确的博客文章,但当我使用命令Az Web Create with runtime variables时,当我输入实际值而不是它运行的变量时,它会出现语法错误。您好@Jason。如何定义变量$(RG)和$(azureSubscription)?在yaml文件的顶部,我做了一个变量,然后在那里对它们进行了定义。为什么?当您使用this format
$(variablename)
时,是否仍会出现相同的错误?根据我的测试,它可以正常工作。另一方面,您需要检查变量大小写,因为Linux系统区分大小写。