Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Вы можете использовать рабочий процесс GitHub Actions, чтобы определить порядок действий для автоматического создания и развертывания кода в функциональное приложение в Azure Functions.
Файл YAML (.yml), определяющий конфигурацию рабочего процесса, сохраняется в /.github/workflows/ пути в репозитории. Это определение содержит действия и параметры, составляющие рабочий процесс, который зависит от языка разработки функций. Рабочий процесс GitHub Actions для функций выполняет следующие задачи независимо от языка:
- Настроить среду.
- Создайте проект кода.
- Разверните пакет в функциональном приложении на платформе Azure.
Действие Azure Functions обрабатывает развертывание в существующем приложении-функции в Azure.
Вы можете создать файл конфигурации рабочего процесса для развертывания вручную. Вы также можете создать файл из набора шаблонов, относящихся к языку, одним из следующих способов:
- На портале Azure
- Использование Azure CLI
- Из репозитория GitHub
Если вы не хотите создать файл YAML вручную, выберите другой метод в верхней части статьи.
Предварительные условия
Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
Учетная запись GitHub. Если у вас ее нет, зарегистрируйтесь бесплатно.
Рабочее приложение-функция, размещенное на Azure с исходным кодом в репозитории GitHub.
- Azure CLI при локальной разработке. Вы также можете использовать Azure CLI в Azure Cloud Shell.
Создание учетных данных для развертывания.
Так как GitHub Actions использует профиль публикации для доступа к приложению-функции во время развертывания, сначала необходимо получить профиль публикации и безопасно хранить его в виде секрета GitHub.
Внимание
Профиль публикации — это ценные учетные данные, которые позволяют получить доступ к Azure ресурсам. Убедитесь, что вы всегда переносите и храните его безопасно. В GitHub профиль публикации должен храниться только в секретах GitHub.
Скачайте свой профиль публикации
Чтобы скачать профиль публикации приложения-функции, сделайте следующее:
На портале Azure найдите страницу приложения-функции, разверните Settings>Configuration в левом столбце.
На странице "Конфигурация" выберите вкладку "Общие параметры" и убедитесь, что учетные данные публикации SCM Basic Auth включены. Если этот параметр отключен, вы не можете использовать профили публикации, поэтому нажмите кнопку "Вкл ." и " Применить".
Вернитесь на страницу Обзор функционального приложения, а затем выберите Получить профиль публикации.
Сохраните и скопируйте содержимое файла.
Добавьте секрет GitHub
В GitHub перейдите в репозиторий.
Перейдите в меню Параметры.
Выберите Secrets и переменные> Actions.
Нажмите Создать секрет репозитория.
Добавьте новый секрет с именем
AZURE_FUNCTIONAPP_PUBLISH_PROFILEи значением, заданным для содержимого файла профиля публикации.Выберите Добавить секрет.
GitHub теперь может аутентифицироваться в вашем приложении-функции в Azure.
Создание рабочего процесса из шаблона
Лучший способ вручную создать конфигурацию рабочего процесса — начать с официально поддерживаемого шаблона.
Выберите Windows или Linux, чтобы убедиться, что вы получите шаблон для правильной операционной системы.
Скопируйте шаблон для конкретного языка из репозитория действий Azure Functions с помощью следующей ссылки:
Обновите параметр
env.AZURE_FUNCTIONAPP_NAME, указав имя вашего ресурса функции приложения в Azure. При необходимости может потребоваться обновить параметр, который задает языковую версию, используемую приложением, напримерDOTNET_VERSIONдля C#.Добавьте этот новый файл YAML в
/.github/workflows/путь в репозитории.
Создание конфигурации рабочего процесса на портале
При использовании портала для включения GitHub Actions функция создаёт файл рабочего процесса на основе стека приложения и коммитит его в репозиторий GitHub в соответствующем каталоге.
Портал автоматически получает ваш профиль публикации и добавляет его в секреты GitHub вашего репозитория.
Во время создания приложения-функции
Вы можете быстро приступить к работе с GitHub Actions с помощью вкладки развертывания при создании функции на портале Azure. Чтобы добавить рабочий процесс GitHub Actions при создании нового приложения-функции:
На портале Azure выберите Deployment в потоке Create Function App.
Включите Континетное развертывание если требуется, чтобы каждое обновление кода активировало отправку кода на портал Azure.
Введите организацию, репозиторий и ветку GitHub.
Завершите настройку функционального приложения. Теперь репозиторий GitHub включает новый файл рабочего процесса в
/.github/workflows/.
Для существующего функционального приложения
Чтобы добавить рабочий процесс GitHub Actions в существующее функциональное приложение:
Перейдите к приложению-функции на портале Azure и выберите Deployment Center.
Для Source выберите GitHub. Если вы не видите сообщение по умолчанию Building с GitHub Actions, выберите Изменить поставщика услуг, выберите GitHub Actions и нажмите ОК.
Если у вас еще нет авторизованного доступа GitHub, выберите Authorize. Укажите учетные данные GitHub и выберите Sign in. Чтобы авторизовать другую учетную запись GitHub, выберите Change Account и войдите с помощью другой учетной записи.
Выберите GitHub Organization, Repository и Branch. Чтобы развернуть с помощью GitHub Actions, необходимо иметь доступ на запись в этот репозиторий.
В параметрах
Проверка подлинности выберите, следует ли GitHub Actions пройти проверку подлинности с использованием удостоверения, назначаемого пользователемили использовать базовые учетные данные аутентификации . Для базовой проверки подлинности используются текущие учетные данные. Выберите файл Preview, чтобы просмотреть файл рабочего процесса, который добавляется в репозиторий GitHub в
github/workflows/.Нажмите кнопку "Сохранить", чтобы добавить файл рабочего процесса в репозиторий.
Добавление конфигурации рабочего процесса в репозиторий
С помощью az functionapp deployment github-actions add команды можно создать файл конфигурации рабочего процесса из правильного шаблона приложения-функции. Затем новый файл YAML хранится в правильном расположении (/.github/workflows/) в предоставленном репозитории GitHub, а файл профиля публикации для вашего приложения добавляется в секреты GitHub в том же репозитории.
Выполните следующую
az functionappкоманду, заменив значенияgithubUser/githubRepoиMyResourceGroupMyFunctionapp:az functionapp deployment github-actions add --repo "githubUser/githubRepo" -g MyResourceGroup -n MyFunctionapp --login-with-githubЭта команда использует интерактивный метод для получения персонального токена доступа к вашей учетной записи GitHub.
В окне терминала должно появиться следующее сообщение:
Please navigate to https://github.com/login/device and enter the user code XXXX-XXXX to activate and retrieve your GitHub personal access token.Скопируйте уникальный код
XXXX-XXXX, перейдите к https://github.com/login/device и введите код. После ввода кода вы увидите следующее сообщение:Verified GitHub repo and branch Getting workflow template using runtime: java Filling workflow template with name: func-app-123, branch: main, version: 8, slot: production, build_path: . Adding publish profile to GitHub Fetching publish profile with secrets for the app 'func-app-123' Creating new workflow file: .github/workflows/master_func-app-123.ymlПерейдите в репозиторий GitHub и выберите Actions. Убедитесь, что рабочий процесс запущен.
Создание файла конфигурации рабочего процесса
Вы можете создать файл конфигурации рабочего процесса GitHub Actions из шаблонов Azure Functions непосредственно из репозитория GitHub.
В GitHub перейдите в репозиторий.
Выберите действия и новый рабочий процесс.
Поиск функций.
В функциональных рабочих процессах приложения, созданных Microsoft Azure, найдите тот, который соответствует языку вашего кода, и выберите Настроить.
В созданном файле YAML обновите параметр
env.AZURE_FUNCTIONAPP_NAMEс именем ресурса приложения-функции в Azure. При необходимости может потребоваться обновить параметр, который задает языковую версию, используемую приложением, напримерDOTNET_VERSIONдля C#.Убедитесь, что новый файл рабочего процесса сохраняется в
/.github/workflows/, и выберите Зафиксировать изменения....
Обновление конфигурации рабочего процесса
Если по какой-то причине необходимо обновить или изменить существующую конфигурацию рабочего процесса, просто перейдите к /.github/workflows/ расположению в репозитории, откройте конкретный файл YAML, внесите необходимые изменения и зафиксируйте обновления в репозитории.
Пример: файл конфигурации рабочего процесса
В следующем примере шаблона используется версия 1 functions-action и publish profile для проверки подлинности. Шаблон зависит от выбранного языка и операционной системы, в которой развернуто приложение-функцию:
name: Deploy DotNet project to Azure Function App
on:
[push]
env:
AZURE_FUNCTIONAPP_NAME: 'your-app-name' # set this to your function app name on Azure
AZURE_FUNCTIONAPP_PACKAGE_PATH: '.' # set this to the path to your function app project, defaults to the repository root
DOTNET_VERSION: '6.0.x' # set this to the dotnet version to use (e.g. '2.1.x', '3.1.x', '5.0.x')
jobs:
build-and-deploy:
runs-on: windows-latest
environment: dev
steps:
- name: 'Checkout GitHub Action'
uses: actions/checkout@v3
- name: Setup DotNet ${{ env.DOTNET_VERSION }} Environment
uses: actions/setup-dotnet@v3
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: 'Resolve Project Dependencies Using Dotnet'
shell: pwsh
run: |
pushd './${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}'
dotnet build --configuration Release --output ./output
popd
- name: 'Run Azure Functions Action'
uses: Azure/functions-action@v1
id: fa
with:
app-name: ${{ env.AZURE_FUNCTIONAPP_NAME }}
package: '${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}/output'
publish-profile: ${{ secrets.AZURE_FUNCTIONAPP_PUBLISH_PROFILE }}
действие Azure Functions
Действие Azure Functions (Azure/functions-action) определяет способ публикации кода в существующем приложении-функции в Azure или в определенный слот в приложении.
Параметры
Для всех планов приложений-функций требуются следующие параметры:
| Параметр | Описание |
|---|---|
| app-name | Наименование вашего функционального приложения. |
| пакет | Это место в проекте, где будет осуществляться публикация. По умолчанию это значение имеет значение ., что означает, что все файлы и папки в репозитории GitHub будут развернуты. |
Для плана потребления Flex требуются следующие параметры:
| Параметр | Описание |
|---|---|
| sku | Установите это значение flexconsumption при аутентификации с помощью профиля публикации. При использовании учетных данных RBAC или развертывании по плану потребления, отличному от Flex, действие может определить значение, поэтому параметр не нужно включать. |
| удаленная сборка | Установите это значение на true для включения действия сборки из Kudu при развертывании пакета в приложении Flex Consumption. Сборка Oryx всегда выполняется во время удаленной сборки в Flex Consumption; не устанавливайте scm-do-build-during-deployment или enable-oryx-build. По умолчанию этот параметр имеет значение false. |
Следующие параметры относятся к планам: Потребления, Elastic Premium и Выделенной службе приложений.
| Параметр | Описание |
|---|---|
| scm-do-build-during-deployment | (Необязательно) Разрешите сайту Kudu (например, https://<APP_NAME>.scm.azurewebsites.net/выполнять операции перед развертыванием, например удаленные сборки). По умолчанию устанавливается значение false. Задайте для этого значение true, если требуется управлять поведением развертывания с помощью Kudu вместо разрешения зависимостей в рабочем процессе GitHub. Дополнительные сведения см. в параметре SCM_DO_BUILD_DURING_DEPLOYMENT . |
| enable-oryx-build | (По желанию) Позволить сайту Kudu устранить зависимости проекта, используя Oryx. По умолчанию устанавливается значение false. Если вы хотите использовать Oryx для разрешения зависимостей вместо рабочего процесса GitHub, задайте для scm-do-build-during-deployment и enable-oryx-build значение true. |
Необязательные параметры для всех планов приложений-функций:
| Параметр | Описание |
|---|---|
| slot-name | Это имя слота развертывания, в который нужно развернуть. По умолчанию это значение пусто, что означает, что действие GitHub будет развернуто на рабочем сайте. Если этот параметр указывает на непроизводственный слот, убедитесь, что параметр publish-profile содержит учетные данные для слота вместо производственного сайта. В настоящее время не поддерживается в Flex Consumption. |
| профиль публикации | Имя секретного параметра GitHub, содержащего профиль публикации. |
| respect-pom-xml | Используется только для функций Java. Требуется ли, чтобы артефакт развертывания вашего приложения был производным от файла pom.xml? При развертывании приложений-функций Java необходимо задать для этого параметра значение true и задать для параметра package значение .. По умолчанию этот параметр имеет значение false, что означает, что package параметр должен указывать на расположение артефакта приложения, например ./target/azure-functions/ |
| respect-funcignore | Следует ли GitHub Actions учитывать файл funcignore, чтобы исключить файлы и папки, определенные в нем. Задайте для этого значения true, если в репозитории есть файл .funcignore, и вы хотите использовать его, чтобы исключить пути и файлы, такие как конфигурации текстового редактора, .vscode/, или виртуальная среда Python (.venv/). Значение по умолчанию равно false. |
Рекомендации
При использовании действия Azure Functions следует учитывать следующие рекомендации.
При использовании GitHub Actions способ развертывания кода зависит от плана размещения, как показано в этой таблице:
План размещения Метод развертывания Использование Flex Одно развертывание Elastic Premium Zip-развертывание приложений на Consumption-плане Выделенный (Служба приложений) Zip-развертывание приложений на Consumption-плане Потребление Windows: Zip deploy
Linux: URL-адрес внешнего пакета** Возможность запуска приложений в Linux в плане потребления планируется для выхода на пенсию. Дополнительные сведения см. в разделе Azure Functions размещение плана потребления.
Учетные данные, необходимые GitHub для подключения к Azure для развертывания, хранятся в качестве секретов в репозитории GitHub и доступны в развертывании как
secrets.<SECRET_NAME>.Самый простой способ проверки подлинности GitHub Actions с помощью Azure Functions для развертывания — использовать профиль публикации. Вы также можете пройти проверку подлинности с помощью субъекта-службы. Дополнительные сведения см. в разделе этого репозитория GitHub Actions.
Действия по настройке среды и выполнению сборки создаются из шаблонов и зависят от языка.
Шаблоны используют
envэлементы для определения параметров, уникальных для сборки и развертывания.