练习 - 部署示例 Spring Boot 应用程序
在本练习中,你将使用自动化工作流来生成和部署 Spring Boot 示例应用程序。
设置一个 GitHub 操作来部署示例应用程序
预配 Azure 资源后,即可部署示例 Spring Boot 应用程序。
若要创建 Maven GitHub 工作流,请使用 Azure 应用服务门户中部署中心提供的内置持续集成和持续交付(CI/CD)向导工具。
Azure 应用服务部署中心自动生成基于应用程序堆栈的 GitHub Actions 工作流文件。 然后,部署中心将文件提交到正确的目录中的 GitHub 存储库。 部署中心还会将 GitHub 操作与 Azure 应用服务的发布配置文件关联起来。
在 Azure 门户中,转到 Azure 应用服务 Web 应用。
在左窗格中,展开 “部署 ”并选择 “部署中心”。
在 “源 ”下拉列表中,在 “持续部署”(CI/CD)下,选择 “GitHub”。
选择 GitHub Actions。 (这应该是默认值,但如果不是,请选择 “更改提供程序 ”以加载提供程序选项。
在 “设置”下的下拉列表中,执行以下作:
a。 选择你的 GitHub 存储库。
b. 对于分支,请选择 main。
c. 对于应用程序堆栈,请选择 JAVA 8。在最后一页上,查看所选内容并预览将提交到存储库的工作流文件。
选择 “保存” 以将工作流文件提交到存储库,然后立即开始生成和部署应用。
注释
还可以通过选择 “作 ”选项卡、选择 生成和部署 工作流,然后选择 “重新运行作业”来触发存储库中的 GitHub Actions 工作流。
确认 GitHub Actions 生成
在 GitHub 存储库中,选择 “作 ”选项卡,然后在左侧的“ 所有工作流”下,选择“生成 JAR 应用并将其部署到 Azure Web 应用”。
接下来,在右侧表中的 “工作流运行”下,选择工作流运行 “添加”或更新应用服务部署工作流配置。
等待工作流运行完成,然后在工作流运行的 “部署 作业”下,复制显示 Azure Webapp URL 的 “部署 作业”中的 URL。
最后,在浏览器中打开 URL,并验证是否已部署 Java 应用程序、连接到 MySQL 数据库并返回数据。
后续步骤
祝贺! 现在有两个 GitHub Actions 工作流:一个是资源预配置操作,一个是构建和部署操作。
每次你输入 git push
命令来提交代码时,都会触发“生成并部署”操作,然后系统就会部署你的应用程序。
重要
如果资源已经存在,则重新运行 GitHub 操作的预配不会重新创建资源。 需要手动删除资源组或资源,然后重新运行 GitHub 操作。
重新运行构建和部署的 GitHub 动作将替换您的应用程序。
如果重新创建应用服务实例,则还需要切换到新的发布配置文件。 只需更改以下行:
publish-profile: ${{ secrets.AzureAppService_PublishProfile_c1ee8d191003493b9c9e13a9b78ad2c3 }}
设置 Azure Pipeline 以部署示例应用程序
与之前一样,需要创建 Azure Pipeline 来生成和部署应用程序。
在 Azure DevOps 中,转到项目,选择“管道”,然后选择“新建管道”(右上角)。
现在,你将获得四个选项卡来设置管道:
- 在“连接”选项卡上,选择“GitHub”(YAML 文件)。
- 在“选择”选项卡上,选择包含模板的 GitHub 存储库。
- 在“配置”选项卡上,选择以使用“现有的 Azure Pipelines YAML 文件”。
- 在路径中,这次选择“/azuredevops/build_deploy.yml”
- 选择“继续”以转到“查看”选项卡,在运行管道前查看管道。
在 “查看管道 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:现有应用服务的名称
- 包:包的文件路径或包含应用服务内容的文件夹
添加生成变量
与预配管道一样,在保存并运行生成和部署管道之前,需要添加管道的变量:
- 选择右上角的 “变量 ”。
- 添加一个名为serviceConnection的变量,并将服务连接的名称作为其值。
- 在右下角选择 “确定 ”以保存变量。
- 添加第二个变量,名称为webAppName,使用您的应用服务名称(与 Terraform 变量“application_name”中定义的值相同)。
- 选择 “确定 ”保存变量。
- 选择右下角的 “保存” 以保存这两个变量。
监视管道运行
- 选择“&&”以保存并运行管道
- 与 预配 管道一样,追踪构建过程的每个阶段和步骤。
- 验证是否已部署 Java 应用程序、连接到 MySQL 数据库并返回数据。
后续步骤
祝贺! 现在有两个 Azure Pipeline 工作流:预配管道和生成和部署管道。
每次输入命令 git push
以将代码提交到 主 分支时,都会触发构建和部署流程,并部署应用程序。
重要
如果资源已存在,则重新运行预配管道不会重新创建资源。 您需要手动删除资源组或资源,然后重新运行流水线。 可以在“摘要”部分中找到有关如何在生产中更好地实现此目的的详细信息。
重新运行“生成并部署”管道会替换你的应用程序。
下一个单元是知识测试,以检查您在本模块中学到的内容。