练习 - 部署示例 Spring Boot 应用程序

已完成

在本练习中,你将使用自动化工作流来生成和部署 Spring Boot 示例应用程序。

设置一个 GitHub 操作来部署示例应用程序

预配 Azure 资源后,即可部署示例 Spring Boot 应用程序。

若要创建 Maven GitHub 工作流,请使用 Azure 应用服务门户中部署中心提供的内置持续集成和持续交付(CI/CD)向导工具。

Azure 应用服务部署中心的屏幕截图。

Azure 应用服务部署中心自动生成基于应用程序堆栈的 GitHub Actions 工作流文件。 然后,部署中心将文件提交到正确的目录中的 GitHub 存储库。 部署中心还会将 GitHub 操作与 Azure 应用服务的发布配置文件关联起来。

  1. 在 Azure 门户中,转到 Azure 应用服务 Web 应用。

  2. 在左窗格中,展开 “部署 ”并选择 “部署中心”。

  3. “源 ”下拉列表中,在 “持续部署”(CI/CD)下,选择 “GitHub”。

  4. 选择 GitHub Actions。 (这应该是默认值,但如果不是,请选择 “更改提供程序 ”以加载提供程序选项。

  5. “设置”下的下拉列表中,执行以下作:

    a。 选择你的 GitHub 存储库。
    b. 对于分支,请选择 main
    c. 对于应用程序堆栈,请选择 JAVA 8

  6. 在最后一页上,查看所选内容并预览将提交到存储库的工作流文件。

  7. 选择 “保存” 以将工作流文件提交到存储库,然后立即开始生成和部署应用。

    注释

    还可以通过选择 “作 ”选项卡、选择 生成和部署 工作流,然后选择 “重新运行作业”来触发存储库中的 GitHub Actions 工作流。

确认 GitHub Actions 生成

  1. 在 GitHub 存储库中,选择 “作 ”选项卡,然后在左侧的“ 所有工作流”下,选择“生成 JAR 应用并将其部署到 Azure Web 应用”。

  2. 接下来,在右侧表中的 “工作流运行”下,选择工作流运行 “添加”或更新应用服务部署工作流配置

  3. 等待工作流运行完成,然后在工作流运行的 “部署 作业”下,复制显示 Azure Webapp URL 的 “部署 作业”中的 URL。

  4. 最后,在浏览器中打开 URL,并验证是否已部署 Java 应用程序、连接到 MySQL 数据库并返回数据。

后续步骤

祝贺! 现在有两个 GitHub Actions 工作流:一个是资源预配置操作,一个是构建和部署操作。

每次你输入 git push 命令来提交代码时,都会触发“生成并部署”操作,然后系统就会部署你的应用程序。

重要

如果资源已经存在,则重新运行 GitHub 操作的预配不会重新创建资源。 需要手动删除资源组或资源,然后重新运行 GitHub 操作。

重新运行构建和部署的 GitHub 动作将替换您的应用程序。

如果重新创建应用服务实例,则还需要切换到新的发布配置文件。 只需更改以下行:

publish-profile: ${{ secrets.AzureAppService_PublishProfile_c1ee8d191003493b9c9e13a9b78ad2c3 }}

设置 Azure Pipeline 以部署示例应用程序

与之前一样,需要创建 Azure Pipeline 来生成和部署应用程序。

在 Azure DevOps 中,转到项目,选择“管道”,然后选择“新建管道”(右上角)。

现在,你将获得四个选项卡来设置管道:

  1. 在“连接”选项卡上,选择“GitHub”(YAML 文件)。
  2. 在“选择”选项卡上,选择包含模板的 GitHub 存储库。
  3. 在“配置”选项卡上,选择以使用“现有的 Azure Pipelines YAML 文件”。
  4. 在路径中,这次选择“/azuredevops/build_deploy.yml”
  5. 选择“继续”以转到“查看”选项卡,在运行管道前查看管道

“查看管道 YAML ”屏幕上,检查用于创建管道的 Yaml 文件:

name: Build and Deploy

trigger:
- main

stages:

# Build your Spring Boot App using Maven
- stage: Build
  displayName: Build stage
  jobs:
  - job: MavenPackageAndPublishArtifacts
    displayName: Maven Package and Publish Artifacts
    pool:
      vmImage: 'ubuntu-latest'

    steps:
    - task: Maven@3
      displayName: 'Maven Package'
      inputs:
        mavenPomFile: 'pom.xml'

    - task: CopyFiles@2
      displayName: 'Copy Files to artifact staging directory'
      inputs:
        SourceFolder: '$(System.DefaultWorkingDirectory)'
        Contents: '**/target/*.?(war|jar)'
        TargetFolder: $(Build.ArtifactStagingDirectory)

    - upload: $(Build.ArtifactStagingDirectory)
      artifact: drop

# Deploy to Azure using the AzureWebApp task using your Service Connection
- stage: Deploy
  displayName: Deploy stage
  dependsOn: Build
  condition: succeeded()
  jobs:
  - deployment: DeployLinuxWebApp
    displayName: Deploy Linux Web App
    environment: 'production'
    pool:
      vmImage: 'ubuntu-latest'
    strategy:
      runOnce:
        deploy:
          steps:
          - task: AzureWebApp@1
            displayName: 'Azure Web App Deploy'
            inputs:
              azureSubscription: $(serviceConnection)
              appType: webAppLinux
              appName: '$(webAppName)'
              package: '$(Pipeline.Workspace)/drop/**/target/*.?(war|jar)'

让我们看看我们在“生成”配置中使用的一些字段:

  • azureSubscription:Azure 订阅
  • appType:Web 应用类型
  • appName:现有应用服务的名称
  • :包的文件路径或包含应用服务内容的文件夹

添加生成变量

与预配管道一样,在保存并运行生成和部署管道之前,需要添加管道的变量:

  1. 选择右上角的 “变量 ”。
  2. 添加一个名为serviceConnection的变量,并将服务连接的名称作为其值。
  3. 在右下角选择 “确定 ”以保存变量。
  4. 添加第二个变量,名称为webAppName,使用您的应用服务名称(与 Terraform 变量“application_name”中定义的值相同)。
  5. 选择 “确定 ”保存变量。
  6. 选择右下角的 “保存” 以保存这两个变量。

显示新变量的屏幕截图。

监视管道运行

  1. 选择“&&”以保存并运行管道
  2. 预配 管道一样,追踪构建过程的每个阶段和步骤。
  3. 验证是否已部署 Java 应用程序、连接到 MySQL 数据库并返回数据。

显示新的 Azure 管道运行的屏幕截图。

后续步骤

祝贺! 现在有两个 Azure Pipeline 工作流:预配管道和生成和部署管道。

每次输入命令 git push 以将代码提交到 分支时,都会触发构建和部署流程,并部署应用程序。

重要

如果资源已存在,则重新运行预配管道不会重新创建资源。 您需要手动删除资源组或资源,然后重新运行流水线。 可以在“摘要”部分中找到有关如何在生产中更好地实现此目的的详细信息。

重新运行“生成并部署”管道会替换你的应用程序。

下一个单元是知识测试,以检查您在本模块中学到的内容。