Развертывание локального репозитория Git в Службе приложений Azure

В этом руководстве показано, как развернуть в службе приложений Azure собственное приложение из репозитория Git на локальном компьютере.

Примечание.

Если обычная проверка подлинности SCM отключена, развертывание Локальной Git не работает, и вы не можете настроить локальное развертывание Git в Центре развертывания приложения.

Необходимые компоненты

Выполните следующие шаги для изучения данного руководства.

  • Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.

  • Установите Git.

  • Обеспечьте локальный репозиторий Git кодом, который вы хотите развернуть. Чтобы скачать пример репозитория, выполните следующую команду в локальном окне терминала.

    git clone https://github.com/Azure-Samples/nodejs-docs-hello-world.git
    

Подготовка репозитория

Чтобы получать автоматические сборки с сервера сборки Службы приложений Azure, убедитесь, что корень репозитория содержит нужные файлы проекта.

Параметры выполнения Файлы в корневом каталоге
ASP.NET (только для Windows) *.sln, *.csproj или default.aspx
ASP.NET Core *.sln или *.csproj
PHP index.php
Ruby (только для Linux) Gemfile
Node.js server.js, app.jsили package.json с скриптом запуска
Python *.py, requirements.txt или runtime.txt
HTML default.htm, default.html, default.asp, index.htm, index.html или iisstart.htm
веб-задания; <job_name>/run.<extension> в разделе App_Data/jobs/continuous для непрерывных веб-заданий или App_Data/jobs/triggered для триггерных веб-заданий. См. сведения в документации по веб-заданиям Kudu.
Функции Ознакомьтесь с разделом Непрерывное развертывание для Функций Azure.

Чтобы настроить развертывание, добавьте в корень репозитория DEPLOYMENT-файл. См. сведения о настройке развертываний и настраиваемом скрипте развертывания.

Примечание.

Если вы используете Visual Studio, позвольте Visual Studio создать репозиторий для вас. Ваш проект будет немедленно готов к развертыванию через Git.

Настойка пользователя развертывания

См. статью Настройка данных развертывания для службы приложений Azure. Можно использовать либо учетные данные области пользователя, либо учетные данные области приложения.

Создание приложения с поддержкой Git

Если у вас уже есть приложение Службы приложений и вы хотите настроить для него локальное развертывание на Git, см. раздел Настройка существующего приложения.

Запустите az webapp create с --deployment-local-git параметром. Например:

az webapp create --resource-group <group-name> --plan <plan-name> --name <app-name> --runtime "<runtime-flag>" --deployment-local-git

Выходные данные содержат URL-адрес следующего вида: https://<deployment-username>@<app-name>.scm.azurewebsites.net/<app-name>.git . Используйте этот URL-адрес для развертывания приложения на следующем шаге.

Настройка существующего приложения

Если у вас еще нет приложения, см. статью "Создание приложения с поддержкой Git".

Запустите az webapp deployment source config-local-git. Например:

az webapp deployment source config-local-git --name <app-name> --resource-group <group-name>

Выходные данные содержат URL-адрес следующего вида: https://<deployment-username>@<app-name>.scm.azurewebsites.net/<app-name>.git . Используйте этот URL-адрес для развертывания приложения на следующем шаге.

Совет

Этот URL-адрес содержит имя пользователя для развертывания области пользователя. При желании вместо этого можно использовать учетные данные области приложения .

Развертывание веб-приложения

  1. В локальном окне терминала измените каталог на корень репозитория Git и добавьте удаленный Git с помощью URL-адреса, полученного из приложения. Если выбранный метод не предоставляет URL-адрес, используйте https://<app-name>.scm.azurewebsites.net/<app-name>.git с именем приложения в <app-name>.

    git remote add azure <url>
    

    Примечание.

    Если вы создали приложение с поддержкой Git в PowerShell с помощью New-AzWebApp, удаленный объект уже создан.

  2. Выполните принудительную отправку в удаленный объект Azure git push azure master (см. раздел Изменение ветви развертывания).

  3. В окне диспетчера учетных данных Git введите учетные данные области пользователя или приложения, а не учетные данные для входа в Azure.

    Если удаленный URL-адрес Git уже содержит имя пользователя и пароль, вы не будете перенаправлены.

  4. Просмотрите выходные данные. Вы можете увидеть автоматизацию, зависят от среды выполнения, например MSBuild для ASP.NET, npm install для Node.js и pip install для Python.

  5. Перейдите к своему приложению на портале Azure, чтобы убедиться, что содержимое развернуто.

Изменение ветви развертывания

Когда вы отправляете фиксации в репозиторий Службы приложений, Служба приложений по умолчанию развертывает файлы в ветви master. Так как многие репозитории Git перемещаются из master в main, необходимо убедиться в том, что вы выполняете отправку в правильную ветвь репозитория Службы приложений. Это можно сделать двумя способами.

  • Явно выполнить развертывание в master с помощью команды, аналогичной следующей:

    git push azure main:master
    
  • Изменить ветвь развертывания, задав параметр приложения DEPLOYMENT_BRANCH, а затем отправить фиксации в пользовательскую ветвь. Чтобы сделать это с помощью интерфейса командной строки Azure:

    az webapp config appsettings set --name <app-name> --resource-group <group-name> --settings DEPLOYMENT_BRANCH='main'
    git push azure main
    

    Вы также можете изменить DEPLOYMENT_BRANCH параметр приложения в портал Azure, выбрав "Конфигурация" в разделе Параметры и добавив новый параметр приложения с именем DEPLOYMENT_BRANCH и значениемmain.

Устранение неполадок с развертыванием

При публикации в приложении Служба приложений в Azure могут появиться следующие распространенные сообщения об ошибках:

Сообщение Причина Решение
Unable to access '[siteURL]': Failed to connect to [scmAddress] Приложение не работает и не запущено. запуск приложения на портале Azure. Развертывание Git недоступно, когда веб-приложение остановлено.
Couldn't resolve host 'hostname' Неверные сведения об адресе удаленного azure . используйте команду git remote -v, чтобы вывести список всех удаленных репозиториев с соответствующими URL-адресами. Убедитесь, что URL-адрес для удаленного удаленного azure адреса указан правильно. При необходимости удалите и повторно создайте этот удаленный репозиторий, используя правильный URL-адрес.
No refs in common and none specified; doing nothing. Perhaps you should specify a branch such as 'main'. Вы не указали ветвь в процессе git push или не задали push.default значение в .gitconfig. Выполните команду git push еще раз, указав главную ветвь:git push azure main.
Error - Changes committed to remote repository but deployment to website failed. Вы отправляете локальную ветвь, в которую не соответствует ветвь azureразвертывания приложений. Убедитесь, что текущая ветвь — master . Чтобы изменить ветвь по умолчанию, используйте параметр приложения DEPLOYMENT_BRANCH (см. раздел Изменение ветви развертывания).
src refspec [branchname] does not match any. Вы попытались отправить в ветвь, отличной от главного на удаленном azure устройстве. Выполните команду git push еще раз, указав главную ветвь:git push azure main.
RPC failed; result=22, HTTP code = 5xx. эта ошибка может возникнуть при попытке отправить большой репозиторий Git по протоколу HTTPS. Измените конфигурацию Git на локальном компьютере, чтобы увеличить postBuffer. Например: git config --global http.postBuffer 524288000.
Error - Changes committed to remote repository but your web app not updated. Вы развернули приложение Node.js, содержащее файл package.json, в котором указаны дополнительные необходимые модули. Проверьте npm ERR! сообщения об ошибках, предшествовавшие этой ошибке, для получения дополнительных сведений о сбое. Ниже перечислены известные причины этой ошибки и соответствующие npm ERR! сообщения.

Неправильно сформированный пакет файлов json: npm ERR! Couldn't read dependencies.

Собственный модуль, не имеющий двоичного дистрибутива для Windows:
npm ERR! \cmd "/c" "node-gyp rebuild"\ failed with 1
или
npm ERR! [modulename@version] preinstall: \make || gmake\

Дополнительные ресурсы