{"meta":{"title":"将 Node.js 部署到Azure App Service","intro":"了解如何在持续部署（CD）工作流中将 Node.js 项目部署到 Azure App Service。","product":"GitHub Actions","breadcrumbs":[{"href":"/zh/actions","title":"GitHub Actions"},{"href":"/zh/actions/how-tos","title":"操作方法"},{"href":"/zh/actions/how-tos/deploy","title":"部署"},{"href":"/zh/actions/how-tos/deploy/deploy-to-third-party-platforms","title":"部署到第三方平台"},{"href":"/zh/actions/how-tos/deploy/deploy-to-third-party-platforms/nodejs-to-azure-app-service","title":"Node.js 到 Azure App Service"}],"documentType":"article"},"body":"# 将 Node.js 部署到Azure App Service\n\n了解如何在持续部署（CD）工作流中将 Node.js 项目部署到 Azure App Service。\n\n## 先决条件\n\n在创建 GitHub Actions 工作流程之前，首先需要完成以下设置步骤：\n\n1. 创建 Azure 应用服务计划。\n\n   例如，可以使用 Azure CLI 创建新的应用服务计划：\n\n   ```bash copy\n   az appservice plan create \\\n      --resource-group MY_RESOURCE_GROUP \\\n      --name MY_APP_SERVICE_PLAN \\\n      --is-linux\n   ```\n\n   在上述命令中，将 `MY_RESOURCE_GROUP` 替换为你原有的 Azure 资源组，将 `MY_APP_SERVICE_PLAN` 替换为应用服务计划的新名称。\n\n   有关使用 [Azure CLI](https://docs.microsoft.com/cli/azure/) 的详细信息，请参阅 Azure 文档：\n\n   * 有关身份验证，请参阅“[使用 Azure CLI 登录](https://docs.microsoft.com/cli/azure/authenticate-azure-cli)”。\n   * 如果需要创建新的资源组，请参阅“[az group](https://docs.microsoft.com/cli/azure/group?view=azure-cli-latest#az_group_create)”。\n\n2. 创建 Web 应用。\n\n   例如，可以使用Azure CLI通过 Node.js 运行时创建Azure App Service Web 应用：\n\n   ```bash copy\n   az webapp create \\\n       --name MY_WEBAPP_NAME \\\n       --plan MY_APP_SERVICE_PLAN \\\n       --resource-group MY_RESOURCE_GROUP \\\n       --runtime \"NODE|14-lts\"\n   ```\n\n   在上面的命令中，将参数替换为你自己的值，其中 `MY_WEBAPP_NAME` 是 Web 应用的新名称。\n\n3. 配置 Azure 的发布配置文件并创建一个 `AZURE_WEBAPP_PUBLISH_PROFILE` 机密。\n\n   使用发布配置文件生成 Azure 部署凭据。 有关详细信息，请参阅 Azure 文档中的“[生成部署凭据](https://docs.microsoft.com/azure/app-service/deploy-github-actions?tabs=applevel#generate-deployment-credentials)”。\n\n   在你的 GitHub 存储库中，创建一个名为 `AZURE_WEBAPP_PUBLISH_PROFILE` 的机密，其中包含发布配置文件的内容。 有关创建机密的详细信息，请参阅“[在 GitHub Actions 中使用机密](/zh/actions/how-tos/write-workflows/choose-what-workflows-do/use-secrets#creating-secrets-for-a-repository)”。\n\n4. （可选）配置部署环境。 环境用于描述常规部署目标，例如 `production`、`staging` 或 `development`。\n   GitHub Actions当工作流部署到环境时，环境将显示在存储库的主页上。 可以使用环境来要求审批作业以继续，限制可以触发工作流的分支，使用自定义部署保护规则控制部署，或限制对机密的访问权限。 有关创建环境的详细信息，请参阅“[管理部署环境](/zh/actions/how-tos/deploy/configure-and-manage-deployments/manage-environments)”。\n\n## 创建工作流程\n\n完成先决条件后，可以继续创建工作流程。\n\n以下示例工作流演程示在推送到 `main` 分支时，如何构建、测试 Node.js 项目并将其部署到 Azure 应用服务。\n\n确保在工作流 `AZURE_WEBAPP_NAME` 中将 `env` 密钥设置为创建的 Web 应用的名称。 如果项目的路径不是仓库根路径，请将 `AZURE_WEBAPP_PACKAGE_PATH` 更改为你的项目路径。 如果使用的 Node.js 版本不是 `10.x`，请将 `NODE_VERSION` 更改为你使用的版本。\n\n如果配置了部署环境，请将 `environment` 的值更改为环境的名称。 如果未配置环境 ，或者如果工作流位于专用存储库中并且你未使用 GitHub Enterprise Cloud，请删除 `environment` 密钥。\n\n```yaml copy\n# 此工作流使用未经 GitHub 认证的操作。\n# 它们由第三方提供，并受\n# 单独的服务条款、隐私政策和支持\n# 文档。\n\n# GitHub 建议将操作固定到提交 SHA。\n# 若要获取较新版本，需要更新 SHA。\n# 还可以引用标记或分支，但该操作可能会更改而不发出警告。\n\non:\n  push:\n    branches:\n      - main\n\nenv:\n  AZURE_WEBAPP_NAME: MY_WEBAPP_NAME   # set this to your application's name\n  AZURE_WEBAPP_PACKAGE_PATH: '.'      # set this to the path to your web app project, defaults to the repository root\n  NODE_VERSION: '14.x'                # set this to the node version to use\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n    - uses: actions/checkout@v6\n\n    - name: Set up Node.js\n      uses: actions/setup-node@v7\n      with:\n        node-version: ${{ env.NODE_VERSION }}\n        cache: 'npm'\n\n    - name: npm install, build, and test\n      run: |\n        npm install\n        npm run build --if-present\n        npm run test --if-present\n    - name: Upload artifact for deployment job\n      uses: actions/upload-artifact@v4\n      with:\n        name: node-app\n        path: .\n\n  deploy:\n    runs-on: ubuntu-latest\n    needs: build\n    environment:\n      name: 'production'\n      url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}\n\n    steps:\n    - name: Download artifact from build job\n      uses: actions/download-artifact@v5\n      with:\n        name: node-app\n\n    - name: 'Deploy to Azure WebApp'\n      id: deploy-to-webapp\n      uses: azure/webapps-deploy@85270a1854658d167ab239bce43949edb336fa7c\n      with:\n        app-name: ${{ env.AZURE_WEBAPP_NAME }}\n        publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}\n        package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}\n```\n\n## 其他阅读材料\n\n* 对于原始工作流模板，请参阅 GitHub Actions `starter-workflows` 存储库中的 [`azure-webapps-node.yml`](https://github.com/actions/starter-workflows/blob/main/deployments/azure-webapps-node.yml)。\n* 用于部署 Web 应用程序的是官方的 Azure [`Azure/webapps-deploy`](https://github.com/Azure/webapps-deploy) 操作。\n* 有关部署到 Azure 的 GitHub 操作工作流的更多示例，请参阅 [actions-workflow-samples](https://github.com/Azure/actions-workflow-samples) 存储库。\n* Azure Web 应用文档中的 [在 Azure 中创建 Node.js Web 应用的快速入门](https://docs.microsoft.com/azure/app-service/quickstart-nodejs) 演示了如何将 Visual Studio Code 与 [Azure App Service 扩展](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azureappservice) 配合使用。"}