Обновлено:
На основании вашего комментария файлы там уже существуют. Кроме того, объедините ваш скрипт powershell и ваше сообщение об ошибке.
Поскольку вы просто разделяете часть своего YAML, я не мог знать, как вы определяете переменные. Убедитесь, что ваша переменная CertificateFileName
была сохранена и успешно передана в powershell.
Поскольку полное имя файла должно отображаться в сообщении об ошибке powershell, даже если оно не существует в пути.
На самом деле очень легко вызвать некоторые проблемы после изменения используемой среды агента.
После выполнения Download secure file
будет сгенерирована одна переменная среды, имя которой равно secureFilePath
. Вам просто нужно установить переменную как выходную переменную и использовать ее непосредственно в вашем скрипте powershell.
Небольшие изменения в вашем скрипте YAML и powershell:
YAML:
steps:
- task: DownloadSecureFile@1
displayName: 'Download ***.**.com Certificate for API App'
inputs:
secureFile: dev.pfx
name: Path
- task: AzurePowerShell@3
displayName: 'Upload Certificate to API app and Bind Domain'
inputs:
azureSubscription: 'Azure: CDA NextGen DEV'
ScriptPath: '$(System.DefaultWorkingDirectory)/CdaApi-ArmTemplates/ArmTemplates/InstallSSLAndCustomDomain.ps1'
ScriptArguments: '-ResourceGroupName $(ResourceGroupName) -AppServiceName $(ApiSiteName) -CustomDomains $(ApiHostName) -CertificatePassword $(Password) -CertificateFileName $(CertificateFileName) -SecureFilePath $(Path.secureFilePath)'
azurePowerShellVersion: LatestVersion
Powershell:
$CertificateFilePath = $SecureFilePath
$ResourceGroupName -ResourceType Microsoft.Web/sites -ApiVersion 2014-11-01
if ([System.IO.File]::Exists($CertificateFilePath))
{
Write-Host ("Certificate found at {0}" -f $CertificateFilePath)
}
else
{
Write-Error ("Certificate does not exist at path {0}" -f $CertificateFilePath)
throw
}