Можете найти файл загрузки в azure конвейере - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь использовать azure конвейер для загрузки сертификата и привязки службы приложения. Сначала я использую DEV-этап, все работает хорошо. В настоящее время мне нужно создать новый этап для QUAL env. Просто клонировать новый этап из DEV-stage и обновить переменные, но мы запускаем конвейер, не можем найти сертификат (файл ) Я загрузил. Моя задача загрузки:

steps:
- task: DownloadSecureFile@1
  displayName: 'Download ***.**.com Certificate for API App'
  inputs:
    secureFile: dev.pfx

и затем использовать задачу azure powershell ,, но в моем сценарии возникает такая ошибка:

Certificate does not exist at path D:\a\_temp/

Кажется, не удается найти файл загрузки в агент. enter image description here

Загруженное задание:

steps:
- 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)'
    azurePowerShellVersion: LatestVersion

скрипт Power Shell:

$CertificateFilePath = $env:AGENT_TEMPDIRECTORY + "/" +  $CertificateFileName

$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
}

Как это проверить?

1 Ответ

1 голос
/ 25 марта 2020

Обновлено:

На основании вашего комментария файлы там уже существуют. Кроме того, объедините ваш скрипт 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
}
...