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


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

Вы можете настроить непрерывное развертывание из GitHub, Bitbucket и репозиториев Azure с помощью службы приложений 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 с начальным скриптом.
Питон *.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 может создать репозиторий для вас. С помощью этого метода проект сразу же готов к развертыванию с помощью Git.

Настройка источника развертывания

  1. На портале Azure перейдите в область управления для приложения службы приложений.

  2. В меню слева выберите Центр развертывания. Затем выберите Параметры.

  3. В поле "Источник " выберите один из вариантов непрерывного развертывания (CI/CD ):

    Снимок экрана: выбор источника развертывания.

Чтобы продолжить, выберите вкладку, соответствующую поставщику сборки.

  1. GitHub Actions является поставщиком сборки по умолчанию. Чтобы изменить поставщика, выберите Change provider>App Service Build Service>OK.

  2. При первом развертывании из GitHub выберите Авторизовать и следуйте запросам авторизации. Чтобы развернуть из репозитория другого пользователя, выберите "Изменить учетную запись".

  3. После авторизации учетной записи Azure с помощью GitHub выберите соответствующую организацию, репозиторий и филиал.

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

  4. В разделе " Тип проверки подлинности" выберите назначаемое пользователем удостоверение для повышения безопасности. Дополнительные сведения см. в разделе часто задаваемые вопросы.

    Примечание.

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

  5. (Необязательно) Чтобы просмотреть файл перед сохранением изменений, выберите файл предварительного просмотра. Служба приложений выбирает шаблон рабочего процесса на основе параметра стека языка приложения и фиксирует его в выбранном репозитории GitHub.

  6. Выберите Сохранить.

    Новые коммиты в выбранном репозитории и ветке теперь непрерывно разворачиваются в вашем приложении службы приложений. Фиксации и развертывания можно отслеживать на вкладке Журналы.

Отключение непрерывного развертывания

  1. На портале Azure перейдите на страницу управления для вашего приложения Службы приложений.

  2. В меню слева выберите Центр развертывания. Затем выберите Параметры>Отсоединить.

    Снимок экрана: отключение синхронизации облачной папки с приложением службы приложений на портале Azure.

  3. Файл рабочего процесса GitHub Actions сохраняется в репозитории по умолчанию, но он продолжает запускать развертывание в приложении. Чтобы удалить его из репозитория, выберите Удалить файл рабочего процесса.

  4. Нажмите ОК.

Что такое поставщики сборок?

В зависимости от источника развертывания в Центре развертывания может появиться несколько вариантов поставщика сборки. Поставщики сборок помогают создавать решение непрерывной интеграции и непрерывной доставки (CI/CD) с помощью Службы приложений Azure путем автоматизации сборки, тестирования и развертывания.

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

Поставщик сборки GitHub Actions доступен только для развёртывания в GitHub. При настройке из центра развертывания приложения поставщик сборок настраивает CI/CD путем депозита файла рабочего процесса GitHub Actions в репозиторий GitHub, который обрабатывает задачи сборки и развертывания в Службе приложений.

Для базовой аутентификации добавляется профиль публикации вашего приложения в качестве секрета GitHub. Файл рабочего процесса использует этот секрет для проверки подлинности в Службе приложений. Сведения о назначаемом пользователем удостоверении см. в разделе "Что делает опция 'удостоверение, назначаемое пользователем' для GitHub Actions?"

Он записывает сведения из журналов выполнения рабочего процесса и отображает его на вкладке "Журналы " в Центре развертывания.

Вы можете настроить поставщик сборки GitHub Actions следующими способами.

  • Вы можете настроить файл рабочего процесса после его создания в репозитории GitHub. Дополнительные сведения см. в статье о синтаксисе рабочего процесса для GitHub Actions. Просто убедитесь, что рабочий процесс развертывается в Служба приложений с использованием действия azure/webapps-deploy.
  • Если выбранная ветвь защищена, вы по-прежнему можете просмотреть файл рабочего процесса без сохранения конфигурации, а затем вручную добавить его в репозиторий. Этот способ не обеспечивает интеграцию журналов с порталом Azure.
  • Вместо использования базовой проверки подлинности или удостоверения, назначаемого пользователем, можно также выполнять развертывание с использованием учетной записи службы в Microsoft Entra ID. Этот метод не может быть настроен на портале.

Что происходит с моим приложением во время развертывания?

При использовании официально поддерживаемых методов развертывания изменения вносятся в файлы в папке приложения /home/site/wwwroot . Эти файлы используются для запуска приложения. Развертывание может завершиться ошибкой из-за заблокированных файлов. Кроме того, из-за неодновременного обновления всех файлов приложение может вести себя непредсказуемо во время развертывания. Такое поведение нежелательно для приложения, с которым работают клиенты.

Существует несколько способов избежать этих проблем:

Часто задаваемые вопросы

Работает ли поставщик сборок GitHub Actions с базовой проверкой подлинности, если обычная проверка подлинности отключена?

Нет. Попробуйте использовать GitHub Actions с параметром удостоверения, назначаемого пользователем.

Дополнительные сведения см. в разделе "Развертывание без базовой проверки подлинности".

Какие функции выполняет опция назначенного пользователем удостоверения для GitHub Actions?

Когда вы выбираете назначенную пользователем идентификацию в источнике GitHub Actions, App Service настраивает все необходимые ресурсы в Azure и GitHub. Служба приложений включает рекомендуемую проверку подлинности Microsoft OpenID Connect с помощью GitHub Actions.

В частности, Служба приложений выполняет следующие операции:

  • Создает федеративные учетные данные между управляемым удостоверением, назначенным пользователем, в Azure и выбранным репозиторием и ветвью в GitHub.
  • Создает секреты AZURE_CLIENT_IDи AZURE_TENANT_IDAZURE_SUBSCRIPTION_ID из федеративных учетных данных в выбранном репозитории GitHub.
  • Присваивает идентификатор вашему приложению.

В рабочем процессе GitHub Actions в вашем репозитории GitHub вы можете использовать Azure/login действие для аутентификации вашего приложения с помощью OpenID Connect. Примеры см. в статье "Добавление файла рабочего процесса в репозиторий GitHub".

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

Почему отображается сообщение об ошибке "У вас нет достаточных разрешений для назначения доступа на основе ролей управляемому удостоверению и настройке федеративных учетных данных"?

Сообщение указывает, что ваша учетная запись Azure не имеет необходимых разрешений для создания пользовательского управляемого удостоверения для GitHub Actions. Необходимые разрешения (область действия приложения) :

  • Microsoft.Authorization/roleAssignments/write
  • Microsoft.ManagedIdentity/userAssignedIdentities/write

По умолчанию роли администратора доступа пользователей и владельца уже имеют эти разрешения, но у роли участника нет этих разрешений. Если у вас нет необходимых разрешений, обратитесь к администратору Azure, чтобы создать управляемое удостоверение, назначаемое пользователем, с ролью участника веб-сайтов. В Центре развертывания можно выбрать удостоверение в раскрывающемся списке GitHub>Identity .

Дополнительные сведения об использовании альтернативных шагов см. в статье "Развертывание в службе приложений" с помощью GitHub Actions.

Почему отображается сообщение об ошибке "Это удостоверение не имеет разрешений на запись в этом приложении. Пожалуйста, выберите другую учетную запись или работайте с вашим администратором, чтобы назначить вашей учетной записи роль Участника веб-сайта в этом приложении.

Сообщение указывает, что выбранное управляемое удостоверение, назначаемое пользователем, не имеет требуемой роли для включения OpenID Connect между репозиторием GitHub и приложением Служба приложений. Идентификатор должен иметь одну из следующих ролей в приложении: владелец, контрибьютор или контрибьютор вебсайтов. Наименее привилегированная роль, необходимая для удостоверения, это редактор веб-сайтов.