有人能告诉我为什么Azure管道不喜欢这个yaml文件吗? -- 变量: azureSubscription:“Visual Studio专业版订阅(237bc9da-22ad-49ea-8411-6cf6a190c18f)” RG:云中的教室 工作: -职位:1 步骤: -任务:AzureCLI@1 dislayName:'Azure CLI' 投入: azureSubscription:$(azureSubscription) scriptLocation:inlineScript inlineScript:| mkdir$(Pipeline.Workspace)\BlobFile az存储blob下载--容器名称$(containername)--文件“$(Pipeline.Workspace)/s/student.json”--名称“student.json”--连接字符串“此处的值” -pwsh:| cd'/home/vsts/work/1/s/' ls $armOutput=Get Content'/home/vsts/work/1/s/student.json'|从json转换 $studentvalue=$armOutput.studentvalue $type=$armOutput.type 写入主机“[$studentvalue]的值为[$type]” 写入输出“##vso[task.setvariable variable=$studentvalue;]$type” 写入输出“##vso[task.setvariable variable=$studentvalue;isOutput=true]$studentvalue” 写入输出“studentvalue的值为[$studentvalue]” 名称:setvarStep -文字:| echo$(studentvalue) -职位:2 displayName:创建Web应用程序 德彭森:1 变量: webappname:$[studentvalue] 步骤: -任务:AzureWebApp@1 投入: azureSubscription:$(azureSubscription) resourceGroupName:$(RG) appName:$(webappname) 包:$(System.DefaultWorkingDirectory)**/*.csproj -任务:AzureAppServiceSettings@1 displayName:Azure应用程序服务设置 投入: azureSubscription:$(azureSubscription) appName:$(webappname) #要在插槽上部署设置,请提供插槽名称,如下所示。默认情况下,这些设置将应用于实际的Web应用程序(生产槽) #slotName:暂存 应用程序设置:| [ { “名称”:“DIAGNOSTICS_AzureBlobContainers ASURL”, “value”:“VALUEINHERE”, “开槽”:错误 }, { “名称”:“DIAGNOSTICS_AzureBlobRetentioningDays”, “值”:“365”, “开槽”:错误 }, { “名称”:“OEM”, “值”:“netsupport”, “开槽”:错误 }, { “名称”:“SCM\U存储库\U路径”, “值”:“d:\\home\\respository”, “开槽”:错误 }, { “名称”:“视频客户端URL”, “值”:https://signal-uks.classroom.cloud", “开槽”:错误 }, { “名称”:“网站\节点\默认\版本”, “价值”:“10.15.2”, “开槽”:错误 } ]
有人能告诉我为什么在将此YAML文件放入管道时会出现以下错误吗有人能告诉我为什么Azure管道不喜欢这个yaml文件吗? -- 变量: azureSubscription:“Visual Studio专业版订阅(237bc9da-22ad-49ea-8411-6cf6a190c18f)” RG:云中的教室 工作: -职位:1 步骤: -任务:AzureCLI@1 dislayName:'Azure CLI' 投入: azureSubscription:$(azureSubscription) scriptLocation:inlineScript inlineScript:| mkdir$(Pipeline.Workspace)\BlobFile az存储blob下载--容器名称$(containername)--文件“$(Pipeline.Workspace)/s/student.json”--名称“student.json”--连接字符串“此处的值” -pwsh:| cd'/home/vsts/work/1/s/' ls $armOutput=Get Content'/home/vsts/work/1/s/student.json'|从json转换 $studentvalue=$armOutput.studentvalue $type=$armOutput.type 写入主机“[$studentvalue]的值为[$type]” 写入输出“##vso[task.setvariable variable=$studentvalue;]$type” 写入输出“##vso[task.setvariable variable=$studentvalue;isOutput=true]$studentvalue” 写入输出“studentvalue的值为[$studentvalue]” 名称:setvarStep -文字:| echo$(studentvalue) -职位:2 displayName:创建Web应用程序 德彭森:1 变量: webappname:$[studentvalue] 步骤: -任务:AzureWebApp@1 投入: azureSubscription:$(azureSubscription) resourceGroupName:$(RG) appName:$(webappname) 包:$(System.DefaultWorkingDirectory)**/*.csproj -任务:AzureAppServiceSettings@1 displayName:Azure应用程序服务设置 投入: azureSubscription:$(azureSubscription) appName:$(webappname) #要在插槽上部署设置,请提供插槽名称,如下所示。默认情况下,这些设置将应用于实际的Web应用程序(生产槽) #slotName:暂存 应用程序设置:| [ { “名称”:“DIAGNOSTICS_AzureBlobContainers ASURL”, “value”:“VALUEINHERE”, “开槽”:错误 }, { “名称”:“DIAGNOSTICS_AzureBlobRetentioningDays”, “值”:“365”, “开槽”:错误 }, { “名称”:“OEM”, “值”:“netsupport”, “开槽”:错误 }, { “名称”:“SCM\U存储库\U路径”, “值”:“d:\\home\\respository”, “开槽”:错误 }, { “名称”:“视频客户端URL”, “值”:https://signal-uks.classroom.cloud", “开槽”:错误 }, { “名称”:“网站\节点\默认\版本”, “价值”:“10.15.2”, “开槽”:错误 } ],azure,azure-devops,Azure,Azure Devops,有人能告诉我为什么在将此YAML文件放入管道时会出现以下错误吗 Line 14, Col 7: Unexpected Value Display Name Line 45, Col 6: A sequence was not expected 第二个错误是因为第40行的步骤处于webappname级别,而它应该处于变量级别。通常,您不应该使用单空格缩进来避免此类错误 我不确定第一个错误,但尝试在第10行写入displayName而不是dislayName。请首先查看此文档:下面是设置多作业输出
Line 14, Col 7: Unexpected Value Display Name
Line 45, Col 6: A sequence was not expected
第二个错误是因为第40行的
步骤
处于webappname
级别,而它应该处于变量
级别。通常,您不应该使用单空格缩进来避免此类错误
我不确定第一个错误,但尝试在第10行写入
displayName
而不是dislayName
。请首先查看此文档:下面是设置多作业输出变量的示例yaml
jobs:
# Set an output variable from job A
- job: A
pool:
vmImage: 'vs2017-win2016'
steps:
- powershell: echo "##vso[task.setvariable variable=myOutputVar;isOutput=true]this is the value"
name: setvarStep
- script: echo $(setvarStep.myOutputVar)
name: echovar
# Map the variable into job B
- job: B
dependsOn: A
pool:
vmImage: 'ubuntu-18.04'
variables:
myVarFromJobA: $[ dependencies.A.outputs['setvarStep.myOutputVar'] ] # map in the variable
# remember, expressions require single quotes
steps:
- script: echo $(myVarFromJobA)
name: echovar
因此,下面的yaml片段应该是供您参考的正确语法
pool:
vmImage: windows-latest
variables:
azureSubscription: 'subscription here'
RG: 'WClassroomInTheCloud'
jobs:
- job: job1
steps:
- task: AzureCLI@1
displayName: 'Azure CLI '
inputs:
azureSubscription: $(azureSubscription)
scriptLocation: inlineScript
inlineScript: |
mkdir $(Pipeline.Workspace)\BlobFile
az storage blob download --container-name $(containername) --file '$(Pipeline.Workspace)/s/student.json' --name 'student.json' --connection-string 'VALUE IN HERE'
- pwsh: |
cd '/home/vsts/work/1/s/'
ls
$armOutput = Get-Content '/home/vsts/work/1/s/student.json' | convertfrom-json
$student = $armOutput.studentvalue #use student not studentvalue
$type = $armOutput.type
Write-Host "The value of [$student] is [$type]"
Write-Host "##vso[task.setvariable variable=studentvalue;isOutput=true]$student" #use studentvalue not $studentvalue
name: setvarStep
- script: echo $(setvarStep.studentvalue)
name: echovar
- job: job2
displayName: Create Web App
dependsOn: job1
variables:
webappname: $[ dependencies.job1.outputs['setvarStep.studentvalue'] ]
steps:
- task: AzureWebApp@1
inputs:
azureSubscription: $(azureSubscription)
appType: 'webApp'
resourceGroupName: $(RG)
appName: $(webappname)
package: $(System.DefaultWorkingDirectory)**/*.csproj
- task: AzureAppServiceSettings@1
inputs:
azureSubscription: $(azureSubscription)
appName: $(webappname)
resourceGroupName: $(RG)
# To deploy the settings on a slot, provide slot name as below. By default, the settings would be applied to the actual Web App (Production slot)
# slotName: staging
appSettings: |
{
"name": "DIAGNOSTICS_AZUREBLOBCONTAINERSASURL",
"value": "VALUEINHERE",
"slotSetting": false
},
{
"name": "DIAGNOSTICS_AZUREBLOBRETENTIONINDAYS",
"value": "365",
"slotSetting": false
},
{
"name": "OEM",
"value": "netsupport",
"slotSetting": false
},
{
"name": "SCM_REPOSITORY_PATH",
"value": "d:\\home\\respository",
"slotSetting": false
},
{
"name": "VIDEO_CLIENT_URL",
"value": "https://signal-uks.classroom.cloud",
"slotSetting": false
},
{
"name": "WEBSITE_NODE_DEFAULT_VERSION",
"value": "10.15.2",
"slotSetting": false
}
我可能会先修改你的压痕。然后,由于您正在显示YAML的一个片段,我将突出显示它所抱怨的特定行,因为在您的示例中没有行号。谢谢您,我现在可以看到哪里出了问题,我只是无法理解如何传递变量定义,这对我来说现在是有意义的。我确实读过这两篇文章以及更多的文章,但现在我看到你的文章,一个重大的啊哈时刻已经发生了,所以谢谢你。