Примечание. В 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 сначала нужно выполнить следующие действия по настройке:
-
Создать план Службы приложений Azure.
Например, можно использовать Azure CLI для создания нового плана Службы приложений:
Bash az appservice plan create \ --resource-group MY_RESOURCE_GROUP \ --name MY_APP_SERVICE_PLAN \ --is-linux
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.
-
Создайте веб-приложение.
Например, можно использовать 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"
az webapp create \ --name MY_WEBAPP_NAME \ --plan MY_APP_SERVICE_PLAN \ --resource-group MY_RESOURCE_GROUP \ --runtime "NODE|14-lts"
В приведенной выше команде замените параметры собственными значениями, где
MY_WEBAPP_NAME
— это новое имя для веб-приложения. -
Настройте профиль публикации Azure и создайте секрет
AZURE_WEBAPP_PUBLISH_PROFILE
.Создайте учетные данные развертывания Azure с помощью профиля публикации. Дополнительные сведения см. в разделе Создание учетных данных развертывания в документации по Azure.
В репозитории GitHub создайте секрет
AZURE_WEBAPP_PUBLISH_PROFILE
, содержащий сведения из профиля публикации. Дополнительные сведения о создании секретов см. в разделе "Использование секретов в GitHub Actions". -
При необходимости настройте среду развертывания. Среды используются для описания общего целевого объекта развертывания, такого как
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
.
# Этот рабочий процесс использует действия, которые не сертифицированы 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 }}
# Этот рабочий процесс использует действия, которые не сертифицированы 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 }}
Дополнительные ресурсы
Следующие ресурсы также содержат полезные сведения на эти темы:
- Исходный шаблон рабочего процесса см
azure-webapps-node.yml
. в репозитории GitHub Actions .starter-workflows
- Действие, используемое для развертывания веб-приложения, является официальным действием
Azure/webapps-deploy
Azure. - Дополнительные примеры рабочих процессов GitHub Actions, которые развертываются в Azure, см. в репозитории actions-workflow-samples.
- Краткое руководство Создание веб-приложения Node.js в Azure в документации по веб-приложениям Azure демонстрирует использование Visual Studio Code с расширением Службы приложений Azure.