Skip to main content

Развертывание Node.js в Службе приложений Azure

Проект Node.js можно развернуть для Службы приложений Azure в рамках рабочих процессов непрерывного развертывания (CD).

Примечание. В GitHub Enterprise Server в настоящее время не поддерживаются средства выполнения тестов, размещенные в GitHub. Дополнительные сведения о планируемой поддержке в будущем см. в GitHub public roadmap.

Введение

Это руководство объясняет, как использовать GitHub Actions для создания, тестирования и развертывания проекта Node.js в Службе приложений Azure.

Note

Если рабочим процессам GitHub Actions требуется доступ к ресурсам от поставщика облачных служб, поддерживающего OpenID Connect (OIDC), можно настроить рабочие процессы для проверки подлинности непосредственно в поставщике облачных служб. Это позволит прекратить хранение таких учетных данных в виде долгоживущих секретов и обеспечить другие преимущества безопасности. Дополнительные сведения см. в разделе "Сведения об усилении защиты с помощью OpenID Connect" иНастройка OpenID Connect в Azure.

Необходимые компоненты

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

  1. Создать план Службы приложений Azure.

    Например, можно использовать Azure CLI для создания нового плана Службы приложений:

    Bash
    az appservice plan create \
       --resource-group MY_RESOURCE_GROUP \
       --name MY_APP_SERVICE_PLAN \
       --is-linux
    

    В приведенной выше команде замените MY_RESOURCE_GROUP на существующую группу ресурсов Azure, а MY_APP_SERVICE_PLAN — на новое имя плана Службы приложений.

    Дополнительные сведения об использовании Azure CLI см. в документации по Azure:

    • Сведения о проверке подлинности см. в разделе Вход с помощью Azure CLI.
    • Сведения о создании группы ресурсов см. в разделе, посвященном команде az group.
  2. Создайте веб-приложение.

    Например, можно использовать Azure CLI для создания веб-приложения Службы приложений Azure с помощью среды выполнения Node.js:

    Bash
    az webapp create \
        --name MY_WEBAPP_NAME \
        --plan MY_APP_SERVICE_PLAN \
        --resource-group MY_RESOURCE_GROUP \
        --runtime "NODE|14-lts"
    

    В приведенной выше команде замените параметры собственными значениями, где MY_WEBAPP_NAME — это новое имя для веб-приложения.

  3. Настройте профиль публикации Azure и создайте секрет AZURE_WEBAPP_PUBLISH_PROFILE.

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

    В репозитории GitHub создайте секрет AZURE_WEBAPP_PUBLISH_PROFILE, содержащий сведения из профиля публикации. Дополнительные сведения о создании секретов см. в разделе "Использование секретов в GitHub Actions".

  4. При необходимости настройте среду развертывания. Среды используются для описания общего целевого объекта развертывания, такого как production, staging или development. Когда рабочий процесс GitHub Actions выполняет развертывание в среде, эта среда отображается на главной странице репозитория. Вы можете использовать среды, чтобы требовать утверждения для продолжения задания, ограничить, какие ветви могут активировать рабочий процесс, шлюзовые развертывания с настраиваемыми правилами защиты развертывания, или ограничить доступ к секретам. Дополнительные сведения о создании сред см. в разделе "Управление средами для развертывания".

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

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

В следующем примере рабочего процесса показано, как создать, протестировать и развернуть проект Node.js в Службе приложений Azure при отправке в ветвь main.

Убедитесь, что в ключе env рабочего процесса в качестве имени созданного веб-приложения задано значение AZURE_WEBAPP_NAME. Если путь к проекту не является корнем репозитория, замените AZURE_WEBAPP_PACKAGE_PATH на путь к вашему проекту. Если вы используете версию Node.js, отличную от версии 10.x, замените NODE_VERSION на используемую версию.

Если вы настроили среду развертывания, измените значение environment на имя среды. Если вы не настроили среду , удалите ключ environment.

YAML
# Этот рабочий процесс использует действия, которые не сертифицированы GitHub.
# Они предоставляются сторонним поставщиком, и на них распространяются
# отдельные условия обслуживания, политика конфиденциальности и поддержка
# документации.

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

on:
  push:
    branches:
      - main

env:
  AZURE_WEBAPP_NAME: MY_WEBAPP_NAME   # set this to your application's name
  AZURE_WEBAPP_PACKAGE_PATH: '.'      # set this to the path to your web app project, defaults to the repository root
  NODE_VERSION: '14.x'                # set this to the node version to use

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4

    - name: Set up Node.js
      uses: actions/setup-node@v4
      with:
        node-version: ${{ env.NODE_VERSION }}
        cache: 'npm'

    - name: npm install, build, and test
      run: |
        npm install
        npm run build --if-present
        npm run test --if-present
    - name: Upload artifact for deployment job
      uses: actions/upload-artifact@v3
      with:
        name: node-app
        path: .

  deploy:
    runs-on: ubuntu-latest
    needs: build
    environment:
      name: 'production'
      url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}

    steps:
    - name: Download artifact from build job
      uses: actions/download-artifact@v3
      with:
        name: node-app

    - name: 'Deploy to Azure WebApp'
      id: deploy-to-webapp
      uses: azure/webapps-deploy@85270a1854658d167ab239bce43949edb336fa7c
      with:
        app-name: ${{ env.AZURE_WEBAPP_NAME }}
        publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
        package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}

Дополнительные ресурсы

Следующие ресурсы также содержат полезные сведения на эти темы: