自动将应用程序部署到 Azure Spring Apps
注意
基本、标准和企业计划将从 2025 年 3 月中旬开始弃用,停用期为 3 年。 建议转换到 Azure 容器应用。 有关详细信息,请参阅 Azure Spring Apps 停用公告。
标准消耗和专用计划将于 2024 年 9 月 30 日开始弃用,并在六个月后完全关闭。 建议转换到 Azure 容器应用。
本文演示如何使用适用于 Azure Pipelines 的 Azure Spring Apps 任务来部署应用程序。
通过持续集成和持续交付工具,你可以快速地将更新部署到现有应用程序,工作量较少且风险较低。 Azure DevOps 可帮助你组织和控制这些关键作业。
设置 Azure Spring Apps 实例和 Azure DevOps 项目
首先,使用以下步骤设置要与 Azure DevOps 配合使用的现有 Azure Spring Apps 实例。
- 转到你的 Azure Spring Apps 实例,然后创建一个新应用。
- 转到 Azure DevOps 门户,然后在选择的组织下创建一个新项目。 如果你没有 Azure DevOps 组织,可以创建一个。
- 选择“存储库”,然后将 Spring Boot 演示代码导入存储库。
创建 Azure 资源管理器服务连接
接下来,创建 Azure 资源管理器服务到 Azure DevOps 项目的连接。 有关说明,请参阅 连接到 Azure。 请务必选择用于 Azure Spring Apps 服务实例的同一订阅。
构建和部署应用
现在可以使用一系列任务来生成和部署项目。 以下部分介绍用于通过 Azure DevOps 部署应用的各种选项。
使用管道进行部署
若要使用管道进行部署,请执行以下步骤:
选择“管道”,然后使用 Maven 模板创建新管道。
编辑 azure-pipelines.yml 文件,将
mavenPomFile
字段设置为“complete/pom.xml” 。选择右侧的“显示助手”,然后选择“Azure Spring Apps”模板。
选择你为 Azure 订阅创建的服务连接,然后选择你的 Azure Spring Apps 实例和应用实例。
禁用“使用过渡部署”。
将“包或文件夹”设置为“complete/target/spring-boot-complete-0.0.1-SNAPSHOT.jar”。
选择“添加”,将此任务添加到管道。
你的管道设置应与下图匹配。
还可以使用以下管道模板生成和部署项目。 此示例首先定义用于生成应用程序的 Maven 任务,接下来定义第二个任务,该任务使用适用于 Azure Pipelines 的 Azure Spring Apps 任务来部署 JAR 文件。
steps: - task: Maven@3 inputs: mavenPomFile: 'complete/pom.xml' - task: AzureSpringCloud@0 inputs: azureSubscription: '<your service connection name>' Action: 'Deploy' AzureSpringCloud: <your Azure Spring Apps service> AppName: <app-name> DeploymentType: 'Artifacts' UseStagingDeployment: false DeploymentName: 'default' Package: ./target/your-result-jar.jar
选择“保存并运行”,然后等待作业完成。
蓝绿部署
在上一部分介绍的部署在部署后会立即接收到应用程序流量。 这样,你便可以在应用程序接收任何客户流量之前,先在生产环境中对其进行测试。
编辑管道文件
若要按照前面所述的相同方式生成应用程序并将其部署到过渡部署,请使用以下模板。 在此示例中,过渡部署必须已经存在。 有关替代方法,请参阅蓝绿部署策略。
steps:
- task: Maven@3
inputs:
mavenPomFile: 'pom.xml'
- task: AzureSpringCloud@0
inputs:
azureSubscription: '<your service connection name>'
Action: 'Deploy'
AzureSpringCloud: <your Azure Spring Apps service>
AppName: <app-name>
DeploymentType: 'Artifacts'
UseStagingDeployment: true
Package: ./target/your-result-jar.jar
- task: AzureSpringCloud@0
inputs:
azureSubscription: '<your service connection name>'
Action: 'Set Production'
AzureSpringCloud: <your Azure Spring Apps service>
AppName: <app-name>
UseStagingDeployment: true
使用“发布”部分
以下步骤说明如何从“发布”部分启用蓝绿部署。
选择“管道”,并为 Maven 生成和发布工件创建新管道。
- 选择“Azure Repos Git”作为代码位置。
- 选择代码所在的存储库。
- 选择“Maven”模板,并修改文件以将
mavenPomFile
字段设置为complete/pom.xml
。 - 选择右侧的“显示助手”,然后选择“发布生成工件”模板 。
- 将“发布路径”设置为“complete/target/spring-boot-complete-0.0.1-SNAPSHOT.jar”。
- 选择“保存并运行”。
依次选择“发布”、“创建发布” 。
添加新管道,然后选择“空作业”以创建作业。
在“阶段”下,选择“1 个作业,0 个任务”行
- 选择“+”以将任务添加到作业。
- 搜索“Azure Spring Apps”模板,然后选择“添加”将任务添加到作业。
- 选择“Azure Spring Apps 部署:”以编辑任务。
- 使用应用信息填充此任务,然后禁用“使用过渡部署”。
- 启用“如果不存在过渡部署,则新建一个”,然后在“部署”中输入名称 。
- 选择“保存”以保存此任务。
- 选择“确定”。
依次选择“管道”、“添加工件” 。
- 在“源(生成管道)”下,选择前面创建的管道。
- 依次选择“添加”和“保存”。
在“阶段”下选择“1 个作业,1 个任务” 。
导航到“阶段 1”中的“Azure Spring Apps 部署”任务,然后选择“包或文件夹”旁边的省略号。
在对话框中选择“spring-boot-complete-0.0.1-SNAPSHOT.jar”,然后选择“确定”。
选择“+”,将另一个“Azure Spring Apps”任务添加到作业。
将操作更改为“设置生产部署”。
选择“保存”,然后选择“创建发布”以自动启动部署 。
若要验证应用的当前发布状态,请选择“查看发布”。 完成此任务后,访问 Azure 门户以验证应用状态。
从源进行部署
若要直接部署到 Azure 而不执行单独的生成步骤,请使用以下管道模板。
- task: AzureSpringCloud@0
inputs:
azureSubscription: '<your service connection name>'
Action: 'Deploy'
AzureSpringCloud: <your Azure Spring Apps service>
AppName: <app-name>
DeploymentType: 'Artifacts'
UseStagingDeployment: false
DeploymentName: 'default'
Package: $(Build.SourcesDirectory)
从自定义映像进行部署
若要直接从现有容器映像进行部署,请使用以下管道模板。
- task: AzureSpringCloud@0
inputs:
azureSubscription: '<your service connection name>'
Action: 'Deploy'
AzureSpringCloud: '<your Azure Spring Apps service>'
AppName: '<app-name>'
DeploymentType: 'CustomContainer'
UseStagingDeployment: false
DeploymentName: 'default'
ContainerRegistry: 'docker.io' # or your Azure Container Registry, e.g: 'contoso.azurecr.io'
RegistryUsername: '$(username)'
RegistryPassword: '$(password)'
ContainerImage: '<your image tag>'