Compartilhar via

自动执行 Azure Spring Apps 的应用程序部署

注意

基本计划和标准计划于 2025 年 3 月 17 日进入退休期。 有关详细信息,请参阅 Azure Spring Apps 停用公告

本文适用于:✅ 基本/标准

本文介绍如何使用适用于 Azure Pipelines 的 Azure Spring Apps 任务来部署应用程序。

通过持续集成和持续交付工具,你可以快速地将更新部署到现有应用程序,工作量较少且风险较低。 Azure DevOps 可帮助你组织和控制这些关键作业。

设置 Azure Spring Apps 实例和 Azure DevOps 项目

首先,使用以下步骤设置用于 Azure DevOps 的现有 Azure Spring Apps 实例。

  1. 转到 Azure Spring Apps 实例,然后创建新应用。
  2. 转到 Azure DevOps 门户,然后在所选组织下创建新的project。 如果没有 Azure DevOps 组织,可以免费创建一个。
  3. 选择 Repos,然后将 Spring Boot 演示代码导入存储库。

创建Azure Resource Manager服务连接

接下来,创建一个与 Azure DevOps 项目的 Azure Resource Manager 服务连接。 有关说明,请参阅 Connect 到 Azure。 请务必选择用于 Azure Spring Apps 服务实例的同一订阅。

构建和部署应用

现在可以使用一系列任务来生成和部署项目。 以下部分介绍了使用 Azure DevOps 部署应用的各种选项。

使用管道进行部署

若要使用管道进行部署,请执行以下步骤:

  1. 选择 Pipelines,然后使用 Maven 模板创建新管道。

  2. 编辑 azure-pipelines.yml 文件,将 mavenPomFile 字段设置为 complete/pom.xml

  3. 选择右侧的 Show assistant,然后选择 Azure Spring Apps 模板。

  4. 选择为 Azure 订阅创建的服务连接,然后选择Azure Spring Apps 实例和应用实例。

  5. 禁用“使用过渡部署”。

  6. 将“包或文件夹”设置为“complete/target/spring-boot-complete-0.0.1-SNAPSHOT.jar”。

  7. 选择“添加”,将此任务添加到管道。

    你的管道设置应与下图匹配。

    展示 Azure DevOps 新管道设置的截图。

    还可以使用以下管道模板生成和部署项目。 此示例首先定义一个 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
    
  8. 选择“保存并运行”,然后等待作业完成。

蓝绿部署

在上一部分介绍的部署在部署后会立即接收到应用程序流量。 这样,你便可以在应用程序接收任何客户流量之前,先在生产环境中对其进行测试。

编辑管道文件

若要按照前面所述的相同方式生成应用程序并将其部署到过渡部署,请使用以下模板。 在此示例中,过渡部署必须已经存在。 有关替代方法,请参阅蓝绿部署策略

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

使用“发布”部分

以下步骤说明如何从“发布”部分启用蓝绿部署

  1. 选择 Pipelines并为 Maven 生成和发布项目创建新管道。

    1. 为代码位置选择 Azure Repos Git
    2. 选择代码所在的存储库。
    3. 选择 Maven 模板并修改文件,将 mavenPomFile 字段设置为 complete/pom.xml
    4. 选择右侧的 Show assistant,然后选择 Publish build artifacts 模板。
    5. 将“发布路径”设置为“complete/target/spring-boot-complete-0.0.1-SNAPSHOT.jar”。
    6. 选择“保存并运行”。
  2. 选择发布,然后创建发布

  3. 添加新管道,然后选择“空作业”以创建作业。

  4. 在“阶段”下,选择“1 个作业,0 个任务”行

    Azure DevOps 的屏幕截图,显示了“Pipelines”标签页,其中的“1 个作业、0 个任务”链接被突出显示。

    1. 选择“+”,将任务添加到作业。
    2. 搜索 Azure Spring Apps 模板,然后选择 Add 以将任务添加到作业。
    3. 选择 Azure Spring Apps Deploy: 编辑任务。
    4. 使用应用信息填充此任务,然后禁用“使用过渡部署”。
    5. 启用“如果不存在过渡部署,则新建一个”,然后在“部署”中输入名称 。
    6. 选择“保存”以保存此任务。
    7. 选择“确定”。
  5. 依次选择“管道”、“添加工件”

    1. 在“源(生成管道)”下,选择前面创建的管道。
    2. 依次选择“添加”和“保存”。
  6. 在“阶段”下选择“1 个作业,1 个任务”

  7. 导航到 Stage 11 中的 Azure Spring Apps Deploy 任务,然后选择 Package 或 folder 旁边的省略号。

  8. 在对话框中选择“spring-boot-complete-0.0.1-SNAPSHOT.jar”,然后选择“确定”。

    Azure DevOps的截图,显示了“选择文件或文件夹”对话框。

  9. 选择 +,将另一个 Azure Spring Apps 任务添加到作业。

  10. 将动作更改为设置生产部署

  11. 选择“保存”,然后选择“创建发布”以自动启动部署 。

若要验证应用的当前发布状态,请选择“查看发布”。 完成此任务后,请访问Azure portal来验证应用状态。

从源进行部署

若要在没有单独的生成步骤的情况下直接部署到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>'

后续步骤