Непрерывная поставка с помощью GitHub Actions
Рабочий процесс GitHub Actions можно использовать для определения рабочего процесса для автоматического создания и развертывания кода в приложении-функции в Функции Azure.
Файл YAML (.yml), определяющий конфигурацию рабочего процесса, сохраняется в /.github/workflows/
пути в репозитории. Это определение содержит действия и параметры, составляющие рабочий процесс, который зависит от языка разработки функций. Рабочий процесс GitHub Actions для функций выполняет следующие задачи независимо от языка:
- Настроить среду.
- Создайте проект кода.
- Разверните пакет в приложении-функции в Azure.
Действие Функции Azure обрабатывает развертывание в существующем приложении-функции в Azure.
Вы можете создать файл конфигурации рабочего процесса для развертывания вручную. Вы также можете создать файл из набора шаблонов, относящихся к языку, одним из следующих способов:
- На портале Azure
- Использование Azure CLI
- Из репозитория GitHub
Если вы не хотите создать файл YAML вручную, выберите другой метод в верхней части статьи.
Необходимые компоненты
Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
Учетная запись GitHub. Если у вас ее нет, зарегистрируйтесь бесплатно.
Рабочее приложение-функция, размещенное в Azure с исходным кодом в репозитории GitHub.
- Azure CLI при локальной разработке. Вы также можете использовать Azure CLI в Azure Cloud Shell.
Создание учетных данных для развертывания.
Так как GitHub Actions использует профиль публикации для доступа к приложению-функции во время развертывания, сначала необходимо получить профиль публикации и безопасно хранить его в виде секрета GitHub.
Внимание
Профиль публикации — это ценные учетные данные, позволяющие получить доступ к ресурсам Azure. Убедитесь, что вы всегда переносите и храните его безопасно. В GitHub профиль публикации должен храниться только в секретах GitHub.
Скачивание профиля публикации
Чтобы скачать профиль публикации приложения-функции, сделайте следующее:
В портал Azure найдите страницу для приложения-функции, разверните раздел "Параметры>конфигурации" в левом столбце.
На странице "Конфигурация" выберите вкладку "Общие параметры" и убедитесь, что учетные данные публикации SCM Basic Auth включены. Если этот параметр отключен, вы не можете использовать профили публикации, поэтому нажмите кнопку "Вкл." и "Сохранить".
Вернитесь на страницу обзора приложения-функции и выберите "Получить профиль публикации".
Сохраните и скопируйте содержимое файла.
Добавление секрета GitHub
В GitHub перейдите в репозиторий.
Перейдите в меню Параметры.
Выберите "Секреты" и "Действия переменных>".
Нажмите Создать секрет репозитория.
Добавьте новый секрет с именем
AZURE_FUNCTIONAPP_PUBLISH_PROFILE
и значением, заданным для содержимого файла профиля публикации.Выберите Добавить секрет.
Теперь GitHub может проходить проверку подлинности в вашем приложении-функции в Azure.
Создание рабочего процесса из шаблона
Лучший способ вручную создать конфигурацию рабочего процесса — начать с официально поддерживаемого шаблона.
Выберите Windows или Linux, чтобы убедиться, что вы получите шаблон для правильной операционной системы.
Скопируйте шаблон для конкретного языка из репозитория действий Функции Azure с помощью следующей ссылки:
env.AZURE_FUNCTIONAPP_NAME
Обновите параметр с именем ресурса приложения-функции в Azure. При необходимости может потребоваться обновить параметр, который задает языковую версию, используемую приложением, напримерDOTNET_VERSION
для C#.Добавьте этот новый файл YAML в
/.github/workflows/
путь в репозитории.
Создание конфигурации рабочего процесса на портале
При использовании портала для включения GitHub Actions функции создают файл рабочего процесса на основе стека приложения и фиксирует его в репозитории GitHub в правильном каталоге.
Портал автоматически получает профиль публикации и добавляет его в секреты GitHub для репозитория.
Во время создания приложения-функции
Вы можете быстро приступить к работе с GitHub Actions с помощью вкладки "Развертывание" при создании функции в портал Azure. Чтобы добавить рабочий процесс GitHub Actions при создании нового приложения-функции:
В портал Azure выберите "Развертывание" в потоке создания приложения-функции.
Включите непрерывное развертывание, если требуется, чтобы каждое обновление кода активировало отправку кода в портал Azure.
Введите организацию, репозиторий и ветвь GitHub.
Завершите настройку приложения-функции. Теперь репозиторий GitHub содержит новый файл
/.github/workflows/
рабочего процесса.
Для существующего приложения-функции
Чтобы добавить рабочий процесс GitHub Actions в существующее приложение-функцию:
Перейдите к приложению-функции в портал Azure и выберите Центр развертывания.
Для источника выберите GitHub. Если вы не видите сборку сообщений по умолчанию с помощью GitHub Actions, нажмите кнопку "Изменить" поставщика GitHub Actions и нажмите кнопку "ОК".
Если у вас еще нет авторизованного доступа к GitHub, выберите "Авторизовать". Укажите учетные данные GitHub и выберите вход. Чтобы авторизовать другую учетную запись GitHub, выберите "Изменить учетную запись " и войдите с другой учетной записью.
Выберите организацию, репозиторий и ветвь GitHub. Чтобы развернуть с помощью GitHub Actions, необходимо иметь доступ на запись в этот репозиторий.
В параметрах проверки подлинности выберите, следует ли проходить проверку подлинности GitHub Actions с помощью удостоверения, назначаемого пользователем, или использовать учетные данные для проверки подлинности "Базовый". Для базовой проверки подлинности используются текущие учетные данные.
Выберите файл предварительной версии, чтобы просмотреть файл рабочего процесса, который добавляется в репозиторий GitHub.
github/workflows/
Нажмите кнопку "Сохранить", чтобы добавить файл рабочего процесса в репозиторий.
Добавление конфигурации рабочего процесса в репозиторий
С помощью az functionapp deployment github-actions add
команды можно создать файл конфигурации рабочего процесса из правильного шаблона приложения-функции. Затем новый файл YAML хранится в правильном расположении (/.github/workflows/
) в предоставленном репозитории GitHub, а файл профиля публикации для приложения добавляется в секреты GitHub в том же репозитории.
Выполните следующую
az functionapp
команду, заменив значенияgithubUser/githubRepo
иMyResourceGroup
MyFunctionapp
: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 и выберите "Действия". Убедитесь, что рабочий процесс запущен.
Создание файла конфигурации рабочего процесса
Вы можете создать файл конфигурации рабочего процесса GitHub Actions из шаблонов Функции Azure непосредственно из репозитория 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
Действие Функции Azure (Azure/azure-functions
) определяет способ публикации кода в существующем приложении-функции в Azure или в определенном слоте в приложении.
Параметры
Для всех планов приложений-функций требуются следующие параметры:
Параметр | Описание |
---|---|
app-name | Имя приложения-функции. |
package | Это расположение в проекте для публикации. По умолчанию это значение имеет значение . , что означает, что все файлы и папки в репозитории GitHub будут развернуты. |
Для плана потребления Flex требуются следующие параметры:
Параметр | Описание |
---|---|
sku | Установите это значение flexconsumption при проверке подлинности с помощью профиля публикации. При использовании учетных данных RBAC или развертывании в плане потребления, отличном от Flex, действие может разрешить значение, поэтому параметр не требуется включать. |
удаленная сборка | Задайте для этого значение, чтобы true включить действие сборки из Kudu при развертывании пакета в приложении Flex Consumption. Сборка Oryx всегда выполняется во время удаленной сборки в Flex Consumption; не устанавливайте scm-do-build-во время развертывания или enable-oryx-build. По умолчанию этот параметр имеет значение false . |
Следующие параметры относятся к планам потребления, elastic Premium и Служба приложений (выделенный).
Параметр | Описание |
---|---|
scm-do-build-во время развертывания | (Необязательно) Разрешите сайту 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-in-deployment и enable-oryx-build значение true . |
Необязательные параметры для всех планов приложений-функций:
Рекомендации
При использовании действия Функции Azure следует учитывать следующие рекомендации.
При использовании GitHub Actions код развертывается с помощью одного развертывания в приложениях плана потребления Flex и ZIP-файла для приложений в планах потребления, Elastic Premium и Выделенных (Служба приложений). Исключением является использование Linux, где используется URL-адрес внешнего пакета.
Учетные данные, необходимые GitHub для подключения к Azure для развертывания, хранятся в качестве секретов в репозитории GitHub и доступны в развертывании как
secrets.<SECRET_NAME>
.Самый простой способ проверки подлинности GitHub Actions с помощью Функции Azure для развертывания — использовать профиль публикации. Вы также можете пройти проверку подлинности с помощью субъекта-службы. Дополнительные сведения см. в этом репозитории GitHub Actions.
Действия по настройке среды и выполнению сборки создаются из шаблонов и зависят от языка.
Шаблоны используют
env
элементы для определения параметров, уникальных для сборки и развертывания.