Azure DevOps 服務 |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020
使用 Azure Pipelines 將 Java 應用程式的建置、測試和部署自動化。 本文說明如何使用 Maven、Gradle 或 Ant 等工具來設定 Java 專案的管線。 您也會瞭解如何將應用程式部署至 Azure 服務,例如 App Service、Functions 或 Kubernetes。
使用管線來達成目的:
- 使用 Maven、 Gradle 或 Ant 建置您的專案。
- 執行測試和程式代碼分析工具。
- 使用管線和 Azure Artifacts 發佈您的應用程式。
- 將您的應用程式部署至 Azure App 服務、Azure Functions 或 Azure Kubernetes Service。
如果您在 Android 專案上工作,請參閱建置 、測試及部署 Android 應用程式。
必要條件
| 產品 | 需求 |
|---|---|
| Azure DevOps | - Azure DevOps 專案。 - 能夠在由 Microsoft 託管的代理上運行管線。 您可以購買平行作業,也可以申請免費方案。 - YAML 和 Azure Pipelines 的基本知識。 如需詳細資訊,請參閱 建立您的第一個管線。 - 許可權: - 若要建立管線:您必須位於 參與者 群組中,且群組必須將 [建立組建管線 ] 許可權設定為 [允許]。 Project Administrators 群組的成員可以管理管線。 - 若要建立服務連線:您必須具有 管理員 或 建立者 角色以進行 服務連線。 |
| GitHub | - GitHub 帳戶。 - 一個用於授權 Azure Pipelines 的 GitHub 服務連線。 |
| 天藍色 | Azure 訂用帳戶。 |
| 產品 | 需求 |
|---|---|
| Azure DevOps | - Azure DevOps 專案。 - 自託管代理程式。 若要建立一個代理程式,請參閱 自我裝載代理程式。 - YAML 和 Azure Pipelines 的基本知識。 如需詳細資訊,請參閱 建立您的第一個管線。 - 許可權: - 若要建立管線:您必須位於 參與者 群組中,且群組必須將 [建立組建管線 ] 許可權設定為 [允許]。 Project Administrators 群組的成員可以管理管線。 - 若要建立服務連線:您必須具有 管理員 或 建立者 角色以進行 服務連線。 |
| GitHub | - GitHub 帳戶。 - 一個用於授權 Azure Pipelines 的 GitHub 服務連線。 |
| 天藍色 | Azure 訂用帳戶。 |
建立 GitHub 存放庫
將下列存放庫複製到你的 GitHub 帳號:
https://github.com/MicrosoftDocs/pipelines-java
建立管線
登入您的 Azure DevOps 組織,然後移至您的專案。
移至 [管線],然後在專案中建立第一個管線時選取 [ 新增管線 ] 或 [建立管線 ]。
遵循精靈步驟,從選取 GitHub 作為原始程式碼的位置開始。 系統可能會將您重新導向至 GitHub 以進行登入。 若是如此,請輸入 GitHub 認證。
選取您的存放庫。 系統可能會將您重新導向至 GitHub,以安裝 Azure Pipelines 應用程式。 如果是,請選取 [ 核准並安裝 ] 繼續進行。
當您看到 [設定管線] 索引卷標時,請根據您想要建置程序代碼的方式,選取 [Maven]、[Gradle] 或 [Ant]。
azure-pipelines.yml包含管線定義的檔案會在存放庫中建立,並在 YAML 編輯器中開啟。 您可以藉由新增更多工作或修改現有的工作來自定義管道。 如需建置工作的詳細資訊,請參閱 建置程序代碼。當您完成編輯時,
azure-pipelines.yml請選取[儲存並執行]。若要將
檔案提交至存放庫,請再次選取 [儲存並執行 ]。
選取 [作業 ] 以監看管線的運作情形。
移至您的集合,然後選取您的專案。
選取管線,然後在專案中建立第一個管線時,選取新增管線或建立管線。
先選取 GitHub Enterprise Server 作為原始程式碼的位置,以執行精靈的步驟。
使用現有的 GitHub 服務連線或建立新的連線。
若要建立服務連線:
- 選取 [ 連線到 GitHub Enterprise Server]。
- 輸入您的 GitHub Enterprise 伺服器 URL。
- 輸入您的 GitHub Enterprise Server 個人存取令牌。 如果您沒有個人存取令牌,您可以在 GitHub Enterprise Server 帳戶中建立一個令牌。 如需詳細資訊,請參閱 建立個人存取令牌。
選取您的存放庫。 系統可能會將您重新導向至 GitHub,以安裝 Azure Pipelines 應用程式。 如果發生此情況,請選取 [核准並安裝]。
當您看到 [設定管線] 索引卷標時,請根據您想要建置程序代碼的方式,選取 [Maven]、[Gradle] 或 [Ant]。
azure-pipelines.yml包含管線定義的檔案會在存放庫中建立,並在 YAML 編輯器中開啟。 您可以藉由新增更多工作或修改現有的工作來自定義管道。 如需建置工作的詳細資訊,請參閱 建置程序代碼。當您完成編輯時,
azure-pipelines.yml請選取[儲存並執行]。若要將
檔案提交至存放庫,請再次選取 [儲存並執行 ]。
您可以選取 工作 以觀察管線的運行。
您現在已在存放庫中有一個可運作的 YAML 管線 (azure-pipelines.yml),可供您自定義! 若要變更管線,請在 [管線] 頁面中選取它,然後編輯azure-pipelines.yml檔案。
建置環境
使用 Azure Pipelines 來建置 Java 應用程式,而不需設定基礎結構。 建置在 Windows、Linux 或 macOS 映射上。 Azure Pipelines 中由 Microsoft 託管的代理程式已預先安裝了新式 JDK 和其他適用於 Java 的工具。 若要檢查已安裝的 Java 版本,請參閱 Microsoft裝載的代理程式。
更新檔案 azure-pipelines.yml 中的下列代碼段,以選取適當的映像。
pool:
vmImage: 'ubuntu-latest' # other options: 'macOS-latest', 'windows-latest'
如需映像的完整清單,請查看 由 Microsoft 裝載的代理程式。
作為 Microsoft 提供的代理程式的替代方案,請設定已安裝 Java 的 自行裝載代理程式 。 如果您有大型存放庫或執行累加組建,請使用自我裝載代理程式來節省時間。
組建會在 自我裝載的代理程式上執行。 請確定您所選建置方法所需的 Java 和工具會安裝在代理程式的主機上。
您可以在管線編輯器的 [選項] 索引標籤的 [代理程式集區] 和 [代理程式規格] 區段中選取代理程式集區和代理程式功能。
例如,在您的 azure-pipelines.yml 檔案中新增以下代碼段,以指定具有 Maven 功能的代理集區和代理程式。
pool:
name: MyPool
demands: maven
建置您的程式碼
您可以使用 Maven、Gradle、Ant 或腳本來建置 Java 應用程式。 下列各節說明如何將建置步驟新增至每種方法的管線。
Maven
針對 Maven 組建,將下列工作新增至 azure-pipelines.yml 檔案。 請替換這些數值以符合您的專案。 如需工作選項的詳細資訊,請參閱 Maven 工作。
steps:
- task: Maven@4
inputs:
mavenPomFile: 'pom.xml'
mavenOptions: '-Xmx3072m'
javaHomeOption: 'JDKVersion'
jdkVersionOption: 'default'
jdkArchitectureOption: 'x64'
publishJUnitResults: true
testResultsFiles: '**/TEST-*.xml'
goals: 'package'
針對 Spring Boot,您也可以使用 Maven 工作。 請確定您的 mavenPomFile 值反映檔案 pom.xml 的路徑。 例如,如果您使用 Spring Boot 範例存放庫,則路徑為 complete/pom.xml。
自定義建置路徑
mavenPomFile如果pom.xml檔案不在存放庫的根目錄中,請設定值。 檔案路徑值必須相對於存放庫的根目錄,例如 IdentityService/pom.xml 或 $(system.defaultWorkingDirectory)/IdentityService/pom.xml。
自訂 Maven 目標
將 目標 值設定為空間分隔的目標清單,讓 Maven 執行,例如 clean package。 如需常見 Java 階段和目標的詳細資訊,請參閱 Apache 的 Maven 檔。
Gradle
針對 Gradle 組建,將下列工作新增至 azure-pipelines.yml 檔案。 如需這些選項的詳細資訊,請參閱 Gradle 工作。
steps:
- task: Gradle@3
inputs:
workingDirectory: ''
gradleWrapperFile: 'gradlew'
gradleOptions: '-Xmx3072m'
javaHomeOption: 'JDKVersion'
jdkVersionOption: 'default'
jdkArchitectureOption: 'x64'
publishJUnitResults: true
testResultsFiles: '**/TEST-*.xml'
tasks: 'build'
Gradle 包裝器
確定檔案 gradlew 位於存放庫中。 如果不是,請在專案的根目錄中執行 gradle wrapper 來產生它。 如需建立 Gradle 包裝函式的詳細資訊,請參閱 Gradle。
選擇 Gradle 的版本
除非儲存庫的 gradle/wrapper/gradle-wrapper.properties 檔案中包含 distributionUrl 屬性,以指定要在建置期間下載及使用的不同 Gradle 版本,否則會使用安裝在代理機器上的 Gradle 版本。
調整建置路徑
workingDirectory如果gradlew檔案不在存放庫的根目錄中,請設定值。
目錄值應該相對於存放庫的根目錄,例如 IdentityService 或 $(system.defaultWorkingDirectory)/IdentityService。
gradleWrapperFile如果您的gradlew檔案不在存放庫的根目錄中,請調整值。 檔案路徑值應該相對於存放庫的根目錄,例如 IdentityService/gradlew 或 $(system.defaultWorkingDirectory)/IdentityService/gradlew。
調整 Gradle 工作
調整 Gradle 應該執行的工作的 工作值,例如 build 或 check。 如需 Gradle 常見 Java 外掛程式工作的詳細資訊,請參閱 Gradle 的檔。
Ant
使用 Ant 組建,將下列工作新增至您的 azure-pipelines.yml 檔案。 變更值,例如檔案 build.xml 的路徑,以符合專案組態。 如需這些選項的詳細資訊,請參閱 Ant 工作。 如果使用範例存放庫,您必須在存放庫中提供 build.xml 檔案。
steps:
- task: Ant@1
inputs:
workingDirectory: ''
buildFile: 'build.xml'
javaHomeOption: 'JDKVersion'
jdkVersionOption: 'default'
jdkArchitectureOption: 'x64'
publishJUnitResults: false
testResultsFiles: '**/TEST-*.xml'
腳本
若要使用命令行或腳本進行建置,請將其中一個代碼段新增至 azure-pipelines.yml 檔案。
內嵌指令碼
此步驟 script: 會在Linux和macOS上使用Bash執行內嵌腳本,而在Windows上則使用Command Prompt。 如需詳細資訊,請參閱 Bash 或 命令行 工作。
steps:
- script: |
echo Starting the build
mvn package
displayName: 'Build with Maven'
腳本檔案
此工作會執行存放庫中的腳本檔案。 如需詳細資訊,請參閱 Shell 腳本、 Batch 腳本或 PowerShell 工作。
steps:
- task: ShellScript@2
inputs:
scriptPath: 'build.sh'
下一步
將組建輸出發佈至管線。 在 Maven 套件或 .war/jar 檔案中封裝和發布您的應用程式,以將其部署至 Web 應用程式。
深入瞭解如何為您的部署目標建立 CI/CD 管線: