分享方式:


將應用程式部署自動化至 Azure Spring Apps

注意

基本標準和企業方案將從 2025 年 3 月中旬開始淘汰,並停用 3 年。 建議您轉換至 Azure Container Apps。 如需詳細資訊,請參閱 Azure Spring Apps 淘汰公告

標準 耗用量和專用 方案將從 2024 年 9 月 30 日起淘汰,並在六個月後完成關閉。 建議您轉換至 Azure Container Apps。 如需詳細資訊,請參閱 將 Azure Spring Apps 標準取用和專用方案遷移至 Azure Container Apps

本文適用於: ✔️ 基本/標準 ✔️ 企業

本文說明如何使用適用於 Azure PipelinesAzure Spring Apps 工作來部署應用程式。

持續整合和持續傳遞工具可讓您以最少的努力和風險,快速將更新部署到現有的應用程式。 Azure DevOps 可協助您組織及控制這些重要作業。

下列影片說明使用您選擇的工具進行端對端自動化,包括 Azure Pipelines。


建立 Azure Resource Manager 服務連線

首先,建立 Azure DevOps 專案的 Azure Resource Manager 服務連線。 如需指示,請參閱 連線至 azure Microsoft。 請務必選取您用於 Azure Spring Apps 服務實例的相同訂用帳戶。

建置和部署應用程式

您現在可以使用一系列工作來建置和部署專案。 下列 Azure Pipelines 樣本會定義變數、用來建置應用程式的 .NET Core 工作,以及部署應用程式的 Azure Spring Apps 工作。

variables:
  workingDirectory: './steeltoe-sample'
  planetMainEntry: 'Microsoft.Azure.SpringCloud.Sample.PlanetWeatherProvider.dll'
  solarMainEntry: 'Microsoft.Azure.SpringCloud.Sample.SolarSystemWeather.dll'
  planetAppName: 'planet-weather-provider'
  solarAppName: 'solar-system-weather'
  serviceName: '<your service name>'

steps:
# Restore, build, publish and package the zipped planet app
- task: DotNetCoreCLI@2
  inputs:
    command: 'publish'
    publishWebProjects: false
    arguments: '--configuration Release'
    zipAfterPublish: false
    modifyOutputPath: false
    workingDirectory: $(workingDirectory)

# Deploy the planet app
- task: AzureSpringCloud@0
  inputs:
    azureSubscription: '<Service Connection Name>'
    Action: 'Deploy'
    AzureSpringCloud: $(serviceName)
    AppName: 'testapp'
    DeploymentType: 'Artifacts'
    UseStagingDeployment: false
    DeploymentName: 'default'
    Package: $(workingDirectory)/src/$(planetAppName)/publish-deploy-planet.zip
    RuntimeVersion: 'NetCore_31'
    DotNetCoreMainEntryPath: $(planetMainEntry)

# Deploy the solar app
- task: AzureSpringCloud@0
  inputs:
    azureSubscription: '<Service Connection Name>'
    Action: 'Deploy'
    AzureSpringCloud: $(serviceName)
    AppName: 'testapp'
    DeploymentType: 'Artifacts'
    UseStagingDeployment: false
    DeploymentName: 'default'
    Package: $(workingDirectory)/src/$(solarAppName)/publish-deploy-solar.zip
    RuntimeVersion: 'NetCore_31'
    DotNetCoreMainEntryPath: $(solarMainEntry)

設定 Azure Spring Apps 實例和 Azure DevOps 專案

首先,使用下列步驟來設定現有的 Azure Spring Apps 實例,以搭配 Azure DevOps 使用。

  1. 移至您的 Azure Spring Apps 實例,然後建立新的應用程式。
  2. 移至 Azure DevOps 入口網站,然後在您選擇的組織下建立新專案。 如果您沒有 Azure DevOps 組織,可以免費建立一個組織。
  3. 選取 [存放庫],然後將 Spring Boot 示範程式代碼入存放庫。

建立 Azure Resource Manager 服務連線

接下來,建立 Azure DevOps 專案的 Azure Resource Manager 服務連線。 如需指示,請參閱 連線至 azure Microsoft。 請務必選取您用於 Azure Spring Apps 服務實例的相同訂用帳戶。

建置和部署應用程式

您現在可以使用一系列工作來建置和部署專案。 下列各節說明使用 Azure DevOps 部署應用程式的各種選項。

使用管線部署

若要使用管線進行部署,請遵循下列步驟:

  1. 選取 [ 管線],然後使用 Maven 範本建立新的管線。

  2. 編輯azure-pipelines.yml檔案,將字段設定mavenPomFile'complete/pom.xml'

  3. 選取 右側的 [顯示小幫手 ],然後選取 [Azure Spring Apps ] 範本。

  4. 選取您為 Azure 訂用帳戶建立的服務連線,然後選取您的 Azure Spring Apps 實例和應用程式實例。

  5. 停用 使用預備部署

  6. 將 [套件] 或 [資料夾] 設定完成/目標/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

使用 Releases 區段

下列步驟說明如何從 [發行 ] 區段啟用藍色-綠色部署。

  1. 選取 [管線] ,然後為您的 Maven 組建和發佈成品建立新的管線。

    1. 為您的程式代碼位置選取 [Azure Repos Git ]。
    2. 選取程式代碼所在的存放庫。
    3. 選取 Maven 樣本並修改檔案,將欄位設定mavenPomFilecomplete/pom.xml
    4. 選取 右側的 [顯示小幫手 ],然後選取 [發佈組建成品 ] 範本。
    5. 將 [路徑] 設定 為 [發佈 ] 以 完成/目標/spring-boot-complete-0.0.1-SNAPSHOT.jar
    6. 選取儲存並執行
  2. 選取 [發行],然後選取 [建立發行]。

  3. 新增管線,然後選取 [空白作業 ] 以建立作業。

  4. 在 [階段] 下,選取第 1 行工作,0 個工作

    Azure DevOps 的螢幕快照,其中顯示 [管線] 索引標籤,其中已醒目提示 1 個工作、0 個工作連結。

    1. 選取將 + 工作新增至作業的 。
    2. 搜尋 Azure Spring Apps 範本,然後選取 [新增] 以將工作新增至作業。
    3. 選取 [Azure Spring Apps 部署: ] 以編輯工作。
    4. 使用應用程式的資訊填入此工作,然後停用 [使用預備部署]。
    5. 如果不存在,請啟用 [建立新的預備部署],然後在 [部署] 中輸入名稱。
    6. 選取 [ 儲存] 以儲存此工作。
    7. 選取 [確定]。
  5. 選取 [ 管線],然後選取 [ 新增成品]。

    1. 在 [來源][建置管線] 下 選取先前建立的管線。
    2. 選取 [新增],然後選取 [儲存]。
  6. 選取 [階段] 底下的 [1 個作業]、[1 個工作]。

  7. 流覽至 [階段 1] 中的 [Azure Spring Apps 部署] 工作,然後選取 [套件] 或 [資料夾] 旁的省略號。

  8. 選取 對話框中spring-boot-complete-0.0.1-SNAPSHOT.jar ,然後選取 [ 確定]。

    顯示 [選取檔案或資料夾] 對話框的 Azure DevOps 螢幕快照。

  9. 選取 將 + 另一個 Azure Spring Apps 工作新增至作業的 。

  10. 將動作變更為 [ 設定生產部署]。

  11. 選取 [儲存],然後選取 [建立版本] 來自動啟動部署。

若要確認應用程式的目前發行狀態,請選取 [ 檢視版本]。 完成這項工作之後,請流覽 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>'

部署並指定產生器(僅限企業方案)

如果您使用 Azure Spring Apps 企業版方案,您也可以使用 選項指定要用於部署動作 builder 的建立器,如下列範例所示。 如需詳細資訊,請參閱使用 Tanzu Build Service

- task: AzureSpringCloud@0
  inputs:
    azureSubscription: '<your-service-connection-name>'
    Action: 'Deploy'
    AzureSpringCloud: '<your-Azure-Spring-Apps-service-instance-name>'
    AppName: '<app-name>'
    UseStagingDeployment: false
    DeploymentName: 'default'
    Package: './target/your-result-jar.jar'
    Builder: '<your-Tanzu-Build-Service-Builder-resource>'

下一步