練習 - 部署 Spring Boot 範例應用程式
在此練習中,您將使用自動化工作流程來建置和部署 Spring Boot 範例應用程式。
設定 GitHub 動作以部署範例應用程式
現在您已佈建 Azure 資源,您可以部署範例 Spring Boot 應用程式。
若要建立 Maven GitHub 工作流程,您將使用 Azure App Service 入口網站中部署中心提供的內建持續整合和持續傳遞 (CI/CD) 精靈工具。

Azure App Service 部署中心會自動產生以應用程式堆疊為基礎的 GitHub Actions 工作流程檔案。 部署中心接著會將檔案提交至 GitHub 存放庫中的正確目錄。 部署中心也會將您的 GitHub 動作連結至 Azure App Service 發佈配置檔。
在 Azure 入口網站中,移至您的 Azure App Service Web 應用程式。
在左窗格中,展開 [ 部署 ],然後選取 [部署中心]。
在 [ 來源 ] 下拉式清單中,於 [ 持續部署][CI/CD] 下,選取 [GitHub]。
選取 [GitHub Actions]。 (這應該是預設值,但如果不是,請選取 [變更提供者 ] 以載入提供者選項。
在 [ 設定] 下拉式清單中,執行下列動作:
一。 選取您的 GitHub 存放庫。
b。 針對分支,選取 [主要]。
c. 針對應用程式堆疊,選取 [JAVA 8]。在最後一個頁面上,檢閱您選擇的項目,並預覽將提交至存放庫的流程檔案。
選取 [儲存 ] 將工作流程檔案認可至存放庫,然後立即開始建置和部署您的應用程式。
備註
您也可以選取 [ 動作 ] 索引卷標、選取 建置和部署 工作流程,然後選取 [重新執行作業],以觸發存放庫中的 GitHub Actions 工作流程。
確認 GitHub Actions 組建
在 GitHub 存放庫中,選取 [ 動作] 索引卷標,然後在左側的 [ 所有工作流程] 底下,選取 [建置 JAR 應用程式並將其部署至 Azure Web 應用程式]。
接下來,在右側數據表的 [ 工作流程執行] 下,選取工作流程執行 [新增或更新 App Service 部署工作流程組態]。
等候工作流程執行完成,然後在工作流程執行的 [部署 作業] 下,複製顯示 Azure Webapp URL 的 [ 部署 作業] 中的 URL。
最後,在瀏覽器中開啟 URL,並確認您的 Java 應用程式已部署、連線至 MySQL 資料庫,並傳回數據。
後續步驟
祝賀! 您現在有兩個 GitHub Actions 工作流程:布建動作和建置和部署動作。
每次您輸入 git push 命令來認可程序代碼時,就會觸發建置和部署動作,並部署您的應用程式。
這很重要
重新執行您的 GitHub 動作佈建不會重新建立您的資源 (如果資源已存在)。 您必須手動刪除您的資源群組或資源,然後重新執行 GitHub 動作。
重新執行建置和部署 GitHub 動作將會取代您的應用程式。
如果您重新建立 App Service 實例,則也需要變更為新的發行設定檔。 您只需要變更下列這一行:
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:現有App Service 的名稱
- package:套件的檔案路徑或包含 App Service 內容的資料夾
新增組建變數
如同我們的佈建管線,在儲存並執行建置和部署管線之前,您需要新增管線的變數:
- 選取右上方的 [變數 ]。
- 將名為 serviceConnection 的變數新增為服務連線的名稱。
- 選取右下角的 [確定 ] 以儲存變數。
- 使用您的 App Service 名稱新增名為 webAppName 的第二個變數(Terraform 變數 “application_name” 中定義的相同值)。
- 選取 [確定 ] 以儲存變數。
- 選取右下角的 [儲存 ] 以儲存這兩個變數。

監看管線執行
- 選取 && 以儲存並執行管線
- 如同您針對佈建管線所做的一樣,您可以透過每個階段和步驟追蹤組建流程。
- 確認已部署 Java 應用程式、連線至 MySQL 資料庫,以及傳回數據。

後續步驟
祝賀! 您現在有兩個 Azure Pipeline 工作流程:布建管線和建置和部署管線。
每次您輸入 git push 命令以將程式代碼認可至 main 分支時,都會觸發建置和部署管線,並部署您的應用程式。
這很重要
重新執行佈建管線不會重新建立您的資源 (如果資源已存在)。 您必須手動刪除您的資源群組或資源,然後重新執行管線。 您可以在 [摘要] 區段中找到有關如何在生產環境中達成此目標的詳細資訊。
重新執行您的建置和部署流程將會替換您的應用程式。
下一個單元是一個知識檢定,以查看您在本課程模組中學到的內容。