Поделиться через


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

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

Примечание.

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

Предварительные условия

Для выполнения задач из этой статьи необходимо следующее:

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

  • Установлен Git и локальный репозиторий Git, содержащий код приложения для развертывания.

    Пример репозитория приложений Node.js можно клонировать, выполнив следующую команду в окне терминала Bash.

    git clone https://github.com/Azure-Samples/nodejs-docs-hello-world.git
    
  • Если вы хотите использовать команды Azure CLI, необходимо установить последнюю версию Azure CLI на локальный компьютер. Войдите в Azure с помощью az login.

  • Если вы хотите запустить команды Azure PowerShell, установлена последняя версия Azure PowerShell. Войдите в Azure с помощью Connect-AzAccount.

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

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

Время выполнения Файлы в корневом каталоге
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 с начальным скриптом.
Питон *.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 WebJobs.
Функции Ознакомьтесь с разделом Непрерывное развертывание для Функций Azure.

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

Подсказка

Visual Studio может создать репозиторий для вас. С помощью этого метода проект сразу же готов к развертыванию с помощью Git.

Учетные данные пользователя для развертывания

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

Пользователю развертывания в области пользователя для локального развертывания Git требуется только имя пользователя, а не пароль. Вы можете задать имя пользователя для пользовательской области, выполнив команду az webapp deployment user set --user-name <username> Azure CLI или на вкладке Локальные учетные данные Git/FTPS в разделе Центр развертывания приложения.

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

Пользователь развертывания в области приложения предназначен для конкретного приложения и создается автоматически при создании приложения. Вы можете получить учетные данные пользователя, связанные с областью приложения, которые используются для развертывания, на вкладке Локальные учетные данные Git/FTPS в Центре развертывания приложения.

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

Вы можете создать и настроить приложение с поддержкой Git или настроить локальное развертывание Git для предварительного приложения с помощью Azure CLI, Azure PowerShell или портала Azure.

  • Чтобы создать новое веб-приложение, настроенное для локального развертывания Git, выполните команду az webapp create с параметром --deployment-local-git . Например:

    az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name myApp --runtime "NODE:20-lts" --deployment-local-git
    
  • Чтобы настроить локальное развертывание Git для уже существующего приложения, запустите az webapp deployment source config-local-git. Например:

    az webapp deployment source config-local-git --name myApp --resource-group myResourceGroup
    

Любая команда создает выходные данные, включая URL-адрес, например:

Local git is configured with url of 'https://contoso-user@myapp.scm.azurewebsites.net/myApp.git'

Предыдущий URL-адрес содержит имяcontoso-user пользователя развертывания в области пользователя. Если у вас нет имени пользователя для развертывания в области пользователя, адрес URL использует имя пользователя области приложения, например https://$myApp@myApp.scm.azurewebsites.net/myApp.git.

Используйте этот URL-адрес клона Git для развертывания приложения на следующем шаге.

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

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

Создание удаленной ветви

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

  1. В локальном терминале измените каталог на корень клонированного репозитория Git.

  2. Добавьте удалённый репозиторий Git с именем azure, используя URL для клонирования Git. Если вы не знаете URL-адрес клона Git, используйте https://<app-name>.scm.azurewebsites.net/<app-name>.git.

    git remote add azure <git-clone-url>
    

Отправка в правильную ветвь

Репозитории службы приложений по умолчанию развертывают файлы в master ветви. Если существующие локальные файлы находятся в master ветви репозитория, теперь можно развернуть приложение, выполнив команду git push azure master.

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

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

git push azure main:master

Или измените DEPLOYMENT_BRANCH параметры приложения на main, а затем непосредственно отправьте на main.

  • Azure CLI:

    az webapp config appsettings set --name <app-name> --resource-group <group-name> --settings DEPLOYMENT_BRANCH='main'
    git push azure main
    
  • Портал Azure:

    1. На странице портала приложения выберите переменные среды в разделе "Параметры" в меню навигации слева.
    2. Выберите "Добавить", добавьте параметр приложения с именем DEPLOYMENT_BRANCH и значением main и нажмите кнопку "Применить".
    3. В окне терминала выполните команду git push azure main.

Завершение и проверка развертывания

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

Просмотрите данные, выводимые командой push. Вы можете увидеть автоматизацию, зависящую от конкретной среды выполнения, например npm install для Node.js, MSBuild для ASP.NET или pip install для Python. Если возникают ошибки, см. статью "Устранение неполадок развертывания".

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

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

Следующие распространенные ошибки могут возникать при использовании локального Git для публикации в приложении службы приложений в 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-адрес с помощью git remote remove, а затем пересоздайте подключение с правильным 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 <branch>.
Error - Changes committed to remote repository but deployment to website failed. Вы отправили локальную ветвь, которая не соответствует ветви развёртывания приложения на azure. Убедитесь, что текущая ветвь имеет значение masterили измените ветвь развертывания, следуя инструкциям при отправке в правильную ветвь.
src refspec [branchname] does not match any. Вы пытались отправить на ветвь, отличную от main, на удалённый azure. Запустите git push снова и укажите ветвь main с помощью 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\