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


Непрерывная доставка с помощью GitHub Actions

Вы можете использовать рабочий процесс GitHub Actions, чтобы определить порядок действий для автоматического создания и развертывания кода в функциональное приложение в Azure Functions.

Файл YAML (.yml), определяющий конфигурацию рабочего процесса, сохраняется в /.github/workflows/ пути в репозитории. Это определение содержит действия и параметры, составляющие рабочий процесс, который зависит от языка разработки функций. Рабочий процесс GitHub Actions для функций выполняет следующие задачи независимо от языка:

  1. Настроить среду.
  2. Создайте проект кода.
  3. Разверните пакет в функциональном приложении на платформе 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.

Скачайте свой профиль публикации

Чтобы скачать профиль публикации приложения-функции, сделайте следующее:

  1. На портале Azure найдите страницу приложения-функции, разверните Settings>Configuration в левом столбце.

  2. На странице "Конфигурация" выберите вкладку "Общие параметры" и убедитесь, что учетные данные публикации SCM Basic Auth включены. Если этот параметр отключен, вы не можете использовать профили публикации, поэтому нажмите кнопку "Вкл ." и " Применить".

  3. Вернитесь на страницу Обзор функционального приложения, а затем выберите Получить профиль публикации.

    Загрузить профиль публикации

  4. Сохраните и скопируйте содержимое файла.

Добавьте секрет GitHub

  1. В GitHub перейдите в репозиторий.

  2. Перейдите в меню Параметры.

  3. Выберите Secrets и переменные> Actions.

  4. Нажмите Создать секрет репозитория.

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

  6. Выберите Добавить секрет.

GitHub теперь может аутентифицироваться в вашем приложении-функции в Azure.

Создание рабочего процесса из шаблона

Лучший способ вручную создать конфигурацию рабочего процесса — начать с официально поддерживаемого шаблона.

  1. Выберите Windows или Linux, чтобы убедиться, что вы получите шаблон для правильной операционной системы.

    Развертывания для Windows используют runs-on: windows-latest.

  2. Скопируйте шаблон для конкретного языка из репозитория действий Azure Functions с помощью следующей ссылки:

  3. Обновите параметр env.AZURE_FUNCTIONAPP_NAME, указав имя вашего ресурса функции приложения в Azure. При необходимости может потребоваться обновить параметр, который задает языковую версию, используемую приложением, например DOTNET_VERSION для C#.

  4. Добавьте этот новый файл YAML в /.github/workflows/ путь в репозитории.

Создание конфигурации рабочего процесса на портале

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

Портал автоматически получает ваш профиль публикации и добавляет его в секреты GitHub вашего репозитория.

Во время создания приложения-функции

Вы можете быстро приступить к работе с GitHub Actions с помощью вкладки развертывания при создании функции на портале Azure. Чтобы добавить рабочий процесс GitHub Actions при создании нового приложения-функции:

  1. На портале Azure выберите Deployment в потоке Create Function App.

    Снимок экрана: параметр развертывания в меню

  2. Включите Континетное развертывание если требуется, чтобы каждое обновление кода активировало отправку кода на портал Azure.

  3. Введите организацию, репозиторий и ветку GitHub.

    Скриншот сведений учетной записи пользователя на GitHub.

  4. Завершите настройку функционального приложения. Теперь репозиторий GitHub включает новый файл рабочего процесса в /.github/workflows/.

Для существующего функционального приложения

Чтобы добавить рабочий процесс GitHub Actions в существующее функциональное приложение:

  1. Перейдите к приложению-функции на портале Azure и выберите Deployment Center.

  2. Для Source выберите GitHub. Если вы не видите сообщение по умолчанию Building с GitHub Actions, выберите Изменить поставщика услуг, выберите GitHub Actions и нажмите ОК.

  3. Если у вас еще нет авторизованного доступа GitHub, выберите Authorize. Укажите учетные данные GitHub и выберите Sign in. Чтобы авторизовать другую учетную запись GitHub, выберите Change Account и войдите с помощью другой учетной записи.

  4. Выберите GitHub Organization, Repository и Branch. Чтобы развернуть с помощью GitHub Actions, необходимо иметь доступ на запись в этот репозиторий.

  5. В параметрах Проверка подлинности выберите, следует ли GitHub Actions пройти проверку подлинности с использованием удостоверения, назначаемого пользователем или использовать базовые учетные данные аутентификации . Для базовой проверки подлинности используются текущие учетные данные.

  6. Выберите файл Preview, чтобы просмотреть файл рабочего процесса, который добавляется в репозиторий GitHub в github/workflows/.

  7. Нажмите кнопку "Сохранить", чтобы добавить файл рабочего процесса в репозиторий.

Добавление конфигурации рабочего процесса в репозиторий

С помощью az functionapp deployment github-actions add команды можно создать файл конфигурации рабочего процесса из правильного шаблона приложения-функции. Затем новый файл YAML хранится в правильном расположении (/.github/workflows/) в предоставленном репозитории GitHub, а файл профиля публикации для вашего приложения добавляется в секреты GitHub в том же репозитории.

  1. Выполните следующую az functionapp команду, заменив значения githubUser/githubRepoиMyResourceGroupMyFunctionapp:

    az functionapp deployment github-actions add --repo "githubUser/githubRepo" -g MyResourceGroup -n MyFunctionapp --login-with-github
    

    Эта команда использует интерактивный метод для получения персонального токена доступа к вашей учетной записи GitHub.

  2. В окне терминала должно появиться следующее сообщение:

    Please navigate to https://github.com/login/device and enter the user code XXXX-XXXX to activate and retrieve your GitHub personal access token.
    
  3. Скопируйте уникальный код 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
    
  4. Перейдите в репозиторий GitHub и выберите Actions. Убедитесь, что рабочий процесс запущен.

Создание файла конфигурации рабочего процесса

Вы можете создать файл конфигурации рабочего процесса GitHub Actions из шаблонов Azure Functions непосредственно из репозитория GitHub.

  1. В GitHub перейдите в репозиторий.

  2. Выберите действия и новый рабочий процесс.

  3. Поиск функций.

    Скриншот результата поиска шаблонов функций GitHub Actions.

  4. В функциональных рабочих процессах приложения, созданных Microsoft Azure, найдите тот, который соответствует языку вашего кода, и выберите Настроить.

  5. В созданном файле YAML обновите параметр env.AZURE_FUNCTIONAPP_NAME с именем ресурса приложения-функции в Azure. При необходимости может потребоваться обновить параметр, который задает языковую версию, используемую приложением, например DOTNET_VERSION для C#.

  6. Убедитесь, что новый файл рабочего процесса сохраняется в /.github/workflows/, и выберите Зафиксировать изменения....

Обновление конфигурации рабочего процесса

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

Пример: файл конфигурации рабочего процесса

В следующем примере шаблона используется версия 1 functions-action и publish profile для проверки подлинности. Шаблон зависит от выбранного языка и операционной системы, в которой развернуто приложение-функцию:

Если приложение-функция работает в Linux, выберите Linux.

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 следует учитывать следующие рекомендации.

Следующие шаги