生成 Java 应用
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
可以使用管道自动执行以下操作:
- 使用 Maven、Gradle 或 Ant 生成项目。
- 运行测试和代码分析工具。
- 将应用发布到管道和 Azure Artifacts。
- 将应用部署到 Azure 应用服务、Azure Functions 或 Azure Kubernetes 服务。
如果你正在处理 Android 项目,请参阅生成、测试和部署 Android 应用。
先决条件
若要运行以下示例,必须具有:
创建 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
后,选择“保存并运行”。若要将
azure-pipelines.yml
文件提交到存储库,请再次选择“保存并运行”。
选择“作业”可观察管道的运行情况。
转到集合,并选择项目。
如果在项目中创建第一个管道,请选择“管道”,然后选择“新建管道”或“创建管道”。
完成向导中的各个步骤。首先选择 GitHub Enterprise Server 作为源代码位置。
使用现有的 GitHub 服务连接或创建新的 GitHub 服务连接。
若要创建服务连接:
- 选择连接到 GitHub Enterprise Server。
- 输入 GitHub Enterprise Server URL。
- 输入 GitHub Enterprise Server 个人访问令牌。 如果没有个人访问令牌,可以在 GitHub Enterprise Server 帐户中创建一个。 有关详细信息,请参阅创建个人访问令牌。
选择存储库。 你可能会被重定向到 GitHub 来安装 Azure Pipelines 应用。 如果是,请选择批准并安装。
看到“配置管道”选项卡时,请选择“Maven”、“Gradle”或“Ant”,具体取决于你要如何生成代码。
在存储库中创建包含管道定义的
azure-pipelines-yml
文件,并在 YAML 编辑器中打开。 可以通过添加更多任务或修改现有任务来自定义管道。 有关生成任务的详细信息,请参阅生成代码。编辑完
azure-pipelines.yml
后,选择“保存并运行”。若要将
azure-pipelines.yml
文件提交到存储库,请再次选择“保存并运行”。
选择“作业”可观察管道的运行情况。
现在你的存储库中有一个可用的 YAML 管道 (azure-pipelines.yml
),你可以对其进行自定义! 要更改管道,请在“管道”页面中选择它,然后选择“编辑”来编辑 azure-pipelines.yml
文件。
生成环境
可以使用 Azure Pipelines 生成 Java 应用,而无需设置自己的任何基础结构。 可以在 Windows、Linux 或 macOS 映像上生成。 Azure Pipelines 中的 Microsoft 托管代理预装了适用于 Java 的新式 JDK 和其他工具。 若要了解安装了哪些 Java 版本,请参阅 Microsoft 托管的代理。
要选择适当的映像,请更新 azure-pipelines.yml
文件中的以下代码片段。
pool:
vmImage: 'ubuntu-latest' # other options: 'macOS-latest', 'windows-latest'
有关映像的完整列表,请参阅 Microsoft 托管的代理。
除了使用 Microsoft 托管的代理之外,还可以设置装有 Java 的自托管代理。 如果你有大型存储库或者可以运行增量生成,则也可以使用自托管代理来节省时间。
生成将在自托管代理上运行。 确保在代理的主机上安装了 Java 和使用所选方法进行构建所需的工具。
可以在管道编辑器的“选项”选项卡的“代理池”和“代理规范”部分中选择代理池和代理功能。
例如,若要指定代理池和具有 Maven 功能的代理,请将以下代码片段添加到 azure-pipelines.yml
文件中。
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
。
自定义生成路径
如果 pom.xml
文件不在存储库的根目录中,请调整 mavenPomFile
值。 文件路径值应相对于存储库的根目录,例如 IdentityService/pom.xml
或 $(system.defaultWorkingDirectory)/IdentityService/pom.xml
。
自定义 Maven 目标
将 goals 值设置为 Maven 要执行的目标的空格分隔列表,例如 clean package
。 有关常见 Java 阶段和目标的详细信息,请参阅 Apache 的 Maven 文档。
Gradle
对于 Gradle 生成,会将以下任务添加到 azure-pipelines.yml
文件中。 有关这些选项的详细信息,请参阅 Gradle 任务。
steps:
- task: Gradle@2
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
文件包含一个指定了要在生成期间下载并使用的其他 Gradle 版本的 distributionUrl
属性,否则将使用代理计算机上安装的 Gradle 版本。
调整生成路径
如果 gradlew
文件不在存储库的根目录中,请调整 workingDirectory
值。
目录值应相对于存储库的根目录,例如 IdentityService
或 $(system.defaultWorkingDirectory)/IdentityService
。
如果 gradlew
文件不在存储库的根目录中,请调整 gradleWrapperFile
值。 文件路径值应相对于存储库的根目录,例如 IdentityService/gradlew
或 $(system.defaultWorkingDirectory)/IdentityService/gradlew
。
调整 Gradle 任务
调整 Gradle 应执行的任务的 tasks 值,例如 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:
步骤使用 Bash(在 Linux 和 macOS 上)或命令提示符(在 Windows 上)运行内联脚本。 有关详细信息,请参阅 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 包或要部署到 Web 应用程序的 .war/jar 文件中打包和发布应用。
详细了解如何为部署目标创建 CI/CD 管道: