【发布时间】:2020-01-16 14:46:07
【问题描述】:
我正在使用 Azure Devops Pipelines (YAML)。
我有一个 AzureFileCopy@2 任务,它将文件从源复制到存储帐户。存储帐户由较早的 ARM 部署任务动态创建(ARM 任务输出 SA 名称,然后将其解析为变量以供以后使用)。
AzureFileCopy@2 任务完美运行并将所有文件复制到存储帐户中。但是,我在运行中注意到 AzureFileCopy@2 任务实际上运行了两次——一次由我执行,一次作为“预作业”。预作业当然会失败,并显示无法引用存储帐户的警告(因为在那个阶段我还没有创建变量)。
幸运的是,这只是一个警告,但在每次运行时都有这个警告相当烦人。 我相信不能禁用 pre-jobs(尽管我可以放弃这是一项功能增强),那么有没有更好的方法来处理这种可能很常见的情况?
提前致谢
编辑:添加了混淆的 YAML:
variables:
My.Configuration: 'Release'
My.SQLProject: 'contoso.api'
My.ARMProject: 'contoso.azure.templates'
My.IntEnvironment: 'i'
My.ResourceGroupNumber: 66
My.ArtifactLocation: 'drop'
# BUILD STAGES ARE HERE
- stage: 'Stage_Deploy'
displayName: 'Stage Deploy'
jobs:
- deployment: 'Job_Deploy'
pool:
vmImage: 'windows-2019'
displayName: 'Job Deploy'
environment: 'env1'
strategy:
runOnce:
deploy:
steps:
- download: none
- task: DownloadPipelineArtifact@2
displayName: 'Download Pipeline Artifacts from Drop'
inputs:
buildType: 'current'
targetPath: '$(Pipeline.Workspace)'
- task: AzureResourceManagerTemplateDeployment@3
displayName: 'ARM Deployment'
inputs:
deploymentScope: 'Resource Group'
azureResourceManagerConnection: 'CONTOSO CONNECTION'
subscriptionId: 'aaaaaaaa-0000-0000-00000-aaaaaaaaaaaaa'
action: 'Create Or Update Resource Group'
resourceGroupName: 'contoso-$(My.IntEnvironment)-eun-core-$(My.ResourceGroupNumber)-rg'
location: 'North Europe'
templateLocation: 'Linked artifact'
csmFile: '$(Pipeline.Workspace)/$(My.ArtifactLocation)/$(My.ARMProject)/azuredeploy.json'
csmParametersFile: '$(Pipeline.Workspace)/$(My.ArtifactLocation)/$(My.ARMProject)/azuredeploy.parameters.json'
overrideParameters: '-environment $(My.IntEnvironment)'
deploymentMode: 'Incremental'
deploymentOutputs: 'ARMOutput'
- task: PowerShell@2
condition: true
displayName: 'Parse ARM Template Outputs'
inputs:
targetType: filePath
filePath: '$(Pipeline.Workspace)/$(My.ArtifactLocation)/$(My.ARMProject)/Parse-ARMOutput.ps1'
arguments: '-ARMOutput ''$(ARMOutput)'''
- task: AzureFileCopy@2
condition: true
displayName: 'Copy Static Web Content to SA'
inputs:
SourcePath: '$(Pipeline.Workspace)/$(My.ArtifactLocation)'
azureSubscription: 'CONTOSO CONNECTION'
Destination: AzureBlob
storage: '$(ARM.AppDataStorageName)'
ContainerName: static
然后,当我运行它时,会发生以下阶段: 1.初始化作业 2. 作业前:将静态网页内容复制到 SA
正是这个预工作,在调试中显示:
##[debug]StorageAccountRM=$(ARM.AppDataStorageName)
<other debug lines followed by...>
##[warning]Can\'t find loc string for key: StorageAccountDoesNotExist
稍后“将静态 Web 内容复制到 SA”任务作为正常任务运行并且运行良好。
【问题讨论】:
-
嗨,马克,您可以在删除个人信息(如果存在)后分享一些有关您的 yaml 文件的详细信息吗?有关您收到的警告的更多信息可能会更好地帮助我们检查此问题:)
-
嗨兰斯,感谢您的回复。我已经用信息编辑了 OP。干杯!
-
经过我的检查,这是 AzureFileCopy 任务代码的设计,因此警告难以避免。明天将添加有关警告原因的更多详细信息(包括源代码):)
标签: azure-devops azure-pipelines