Должен ли я архивировать артефакты перед развертыванием в службе приложений Azure?

#azure-devops #azure-pipelines #azure-pipelines-build-task

#azure-devops #azure-конвейеры #azure-pipelines-build-task

Вопрос:

В настоящее время я заканчиваю создание конвейера разработки CI и ссылаюсь на следующую документацию

Все ссылки показывают, что артефакты сначала архивируются, публикуются, а затем развертываются.

Однако разработчик проекта сказал мне, что после .ЧИСТАЯ сборка, он просто копирует / развертывает сгенерированные артефакты AngularOutput в службу приложений Azure.

Я протестировал его таким образом с помощью архивной задачи, а затем опубликовал, и конвейер CI работал просто отлично. Тем не менее, я также протестировал публикацию напрямую, без предварительного архивирования, и я изменил путь к BundlesAngularOutput , и шаг публикации прошел нормально и отобразил опубликованные артефакты

замененный
опубликованные артефакты

Итак, вопрос в том, если публикация работает без предварительного архивирования / архивирования, могу ли я выполнить прямое развертывание после публикации артефактов? и если да, то что нужно указать для Azure App Service Deploy task: Package/Folder этого?

моментальный снимок конвейера

Если задача архивирования необходима / рекомендуется, это нормально, но означает ли это, что Azure App Service deploy автоматически извлечет архивированный артефакт?

Ответ №1:

Прежде всего, да, вы можете опубликовать свой артефакт, фактически не публикуя его в конвейере как артефакт. Однако, если вы публикуете их в конвейере и разделяете конвейеры сборки и выпуска, вы можете повторно развернуть приложение без перестройки.

Также вы всегда можете загрузить артефакт и опубликовать его вручную, если в этом есть необходимость. (например, для некоторых целей разработки / отладки).

И Zip deploy метод

введите описание изображения здесь

который используется здесь

Создает пакет развертывания .zip выбранного пакета или папки и развертывает содержимое файла в папке wwwroot приложения App Service name function в Azure. Этот параметр перезаписывает все существующее содержимое в папке wwwroot. Дополнительные сведения см. в разделе Zip-развертывание функций Azure.

поэтому, если вам нужно развернуть его из конвейера сборки, вы можете просто указать путь к своему zip-файлу или к файлу папки, в которой находится содержимое.

И, пожалуйста, рассмотрите многоступенчатый конвейер, в котором вы можете разделить этапы сборки и развертывания между этапами. Однако в этом случае вам необходимо опубликовать свой артефакт как артефакт конвейера. И этот артефакт конвейера будет автоматически загружен при выполнении deployment задания.

Комментарии:

1. Привет, Кшиштоф, меня смущает это утверждение without actually publishing them on the pipeline as artifact , которое вы имели в виду вместо этого: without actually ZIPPING them on the pipeline as artifact ? Кроме того, что касается этого утверждения: or to folder file where the content is. папка, в которой публикуются артефакты, находится в конвейере. но idk, какой будет переменная для этого? (как на моем изображении, которое указывает, что артефакт был создан, и у меня есть стрелка, указывающая на него). Для zip это было бы: $(System.DefaultWorkingDirectory)/**/*.zip но для nonzip, какой будет переменная?

2. Не уверен, что вы уже нашли все это выше. Но у вас есть артефакт публикации конвейера . У вас есть контроль над тем, где вы загружаете, или формируете, что для более удобного ypu публикует артефакт конвейера.

3. Итак, я просто запустил его, пропустив задачу архивирования и сразу опубликовав AngularOutput, поэтому, поскольку я пропускаю архив, я изменил местоположение папки развертывания службы приложений Azure $(System.DefaultWorkingDirectory)/**/AngularOutput , и оно успешно завершено. тем не менее, я нашел это интересным в журнале, в котором говорилось: Package deployment using ZIP Deploy initiated. Successfully deployed web package to App Service. NOTE: Run From Package makes wwwroot read-only, so you will receive an error when writing files to this directory. Successfully updated App Service configuration details

4.Прохладный. Если это экономит время сборки. Подробнее об этом можно прочитать Run from package здесь . И можете ли вы рассмотреть возможность голосования за мой ответ, если он был полезен для вас?

5. Конечно, готово 🙂