Как изменить структуру папки агента среды Azure DevOps

Чтобы добиться непрерывного развертывания, мы использовали (классический) конвейер выпуска в Azure DevOps для развертывания веб-службы на виртуальной машине в нашей интрасети. Чтобы воспользоваться конвейером развертывания yaml, я заменил наш бывший агент пула развертывания на этой виртуальной машине агентом среды.

Для фактического развертывания мы используем задачу IIS Web App Deploy . Исходный каталог для этих задач по умолчанию: $(System.DefaultWorkingDirectory)\**\*.zip. Переводится в подкаталог конкретного релиза.

К сожалению для меня, агент среды загружает артефакт рядом с -folder, а не в нее, как агент пула среды. Таким образом, настройки задачи развертывания по умолчанию не могут ее найти. Я знаю, что могу легко обойти эту проблему, используя $(System.DefaultWorkingDirectory)\..\**\*.zip. Мне просто интересно, почему Microsoft ввела такой удар по скорости разработки в агенты среды.

Могу ли я каким-либо образом заставить агента среды загрузить артефакт в $(System.DefaultWorkingDirectory)он же aа не рядом?

2 ответа

Если вы используете задание развертывания в конвейере yaml. Артефакты будут автоматически загружены в $(Pipeline.Workspace)/(папка рядом с ) в заданиях развертывания. См. ниже выдержку отсюда :

  • Артефакты из текущего конвейера загружаются в $(Pipeline.Workspace)/.

  • Артефакты из связанного ресурса конвейера загружаются в $(Pipeline.Workspace)/{идентификатор ресурса конвейера}/.

  • Все доступные артефакты из текущего конвейера и из связанных ресурсов конвейера автоматически загружаются в заданиях развертывания и становятся доступными для вашего развертывания. Чтобы предотвратить загрузку, укажите download: none.

Чтобы агент среды загрузил артефакт в $(System.DefaultWorkingDirectory).

Вы можете указать download: none. И используйте задачу Download Pipeline Artifacts и укажите pathпараметр для загрузки ваших артефактов в $(System.DefaultWorkingDirectory). Смотри ниже:

       - deployment: 
   environment: Dev
   strategy:
     runOnce:    
       deploy:
         steps:
         - download: none #prevent automatically download

         - task: DownloadPipelineArtifact@2
           inputs:
             buildType: 'current'
             targetPath: '$(System.DefaultWorkingDirectory)'  # download to default folder.

Другой обходной путь - изменить исходный каталог для IIS Web App Deploy taskпо умолчанию $(Pipeline.Workspace)\**\*.zip

При переходе с классического конвейера на YAML для развертывания вам, вероятно, потребуется изменить $(System.DefaultWorkingDirectory)к $(Pipeline.Workspace). Вы можете убедиться в этом, выполнив следующие шаги:

      - pwsh: Get-ChildItem $(System.DefaultWorkingDirectory) -Recurse
  displayName: Check System.DefaultWorkingDirectory
- pwsh: Get-ChildItem $(Pipeline.Workspace) -Recurse
  displayName: Check Pipeline.Workspace

(Да, это ужасно многословный способ сделать это. Тем не менее, он даст вам более полное представление о файловой структуре, поддерживающей вашу работу.)