{"meta":{"title":"将Java部署到Azure App Service","intro":"了解如何将Java项目部署到Azure App Service作为持续部署（CD）工作流的一部分。","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/java-to-azure-app-service","title":"将 Java 部署到 Azure 应用服务"}],"documentType":"article"},"body":"# 将Java部署到Azure App Service\n\n了解如何将Java项目部署到Azure App Service作为持续部署（CD）工作流的一部分。\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通过Java运行时创建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 \"JAVA|11-java11\"\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/security-guides/using-secrets-in-github-actions#creating-secrets-for-a-repository)”。\n\n4. （可选）配置部署环境。 环境用于描述常规部署目标，例如 `production`、`staging` 或 `development`。 当 GitHub Actions 工作流部署到某个环境时，该环境将显示在存储库的主页上。 可以使用环境来要求审批作业以继续，限制可以触发工作流的分支，使用自定义部署保护规则控制部署，或限制对机密的访问权限。 有关创建环境的详细信息，请参阅“[管理部署环境](/zh/actions/deployment/targeting-different-environments/managing-environments-for-deployment)”。\n\n## 创建工作流程\n\n完成先决条件后，可以继续创建工作流程。\n\n以下示例工作流演示如何在推送到 `main` 分支时生成Java项目并将其部署到Azure App Service。\n\n确保在工作流 `AZURE_WEBAPP_NAME` 中将 `env` 密钥设置为创建的 Web 应用的名称。 如果要使用 `11` 以外的Java版本，请更改 `JAVA_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\nname: Build and deploy JAR app to Azure Web App\n\nenv:\n  AZURE_WEBAPP_NAME: MY_WEBAPP_NAME   # set this to your application's name\n  JAVA_VERSION: '11'                  # set this to the Java version to use\n\non:\n  push:\n    branches:\n      - main\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v6\n\n      - name: Set up Java version\n        uses: actions/setup-java@v4\n        with:\n          java-version: ${{ env.JAVA_VERSION }}\n          cache: 'maven'\n\n      - name: Build with Maven\n        run: mvn clean install\n\n      - name: Upload artifact for deployment job\n        uses: actions/upload-artifact@v4\n        with:\n          name: java-app\n          path: '${{ github.workspace }}/target/*.jar'\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: java-app\n\n      - name: Deploy to Azure Web App\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: '*.jar'\n```\n\n## 其他阅读材料\n\n* 对于原始工作流模板，请参阅 GitHub Actions `azure-webapps-java-jar.yml` 存储库中的 [](https://github.com/actions/starter-workflows/blob/main/deployments/azure-webapps-java-jar.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) 存储库。"}