可以使用管道来自动生成和测试 Java 项目。 生成并测试应用后,可以将应用部署到 Azure 应用服务 Azure Functions Azure Kubernetes 服务 。 如果你正在处理 Android 项目,请参阅 生成、测试和部署 Android 应用

Azure DevOps 中必须具有以下项:

  • 一个项目。 如果没有,请立即 创建一个项目
  • 一个管道。 如果没有,请立即 创建管道
  • 在 GitHub 创建以下存储库分支:

    https://github.com/MicrosoftDocs/pipelines-java
    
  • 登录到你的 Azure DevOps 组织,并转到你的项目。

  • 转到“管道”,然后选择“新建管道”。

  • 首先选择 GitHub 作为源代码的位置,执行向导的步骤。 可能会重定向到 GitHub 进行登录。 如果是这样,请输入 GitHub 凭据。

  • 选择存储库。 你可能会被重定向到 GitHub 来安装 Azure Pipelines 应用。 如果是这样,请选择“批准并安装”。

  • 看到“ 配置 ”选项卡时,请选择 “Maven ”、“ Gradle ”或 “Ant ”,具体取决于代码 的生成方式。

  • 准备就绪后,选择“保存并运行”。

  • 将新的 azure-pipelines.yml 文件提交到存储库。 再次选择“保存并运行” 。

    如果你要观察管道的运行情况,请选择生成作业。

    你刚刚创建并运行了一个管道,因为你的代码似乎与我们自动为你创建的 Maven 模板匹配。

    现在,存储库中有一个可以正常工作的 YAML 管道 (azure-pipelines.yml) ,可供自定义!

  • 准备好更改管道后,请在“管道”页面中选择它,然后选择“编辑”来编辑 azure-pipelines.yml 文件。

  • 在 Azure DevOps Server 2019 中将以下存储库导入 Git 存储库:

    https://github.com/MicrosoftDocs/pipelines-java
    
  • 保存管道并将生成加入队列。 出现 Build #nnnnnnnn.n has been queued 消息时,请选择数字链接以查看管道的运行情况。 现在,你已创建一个随时可自定义的有效管道!

    可以使用 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。

    Maven

    通过 Maven 生成,以下代码片段将添加到 文件中 azure-pipelines.yml 。 可以更改值(例如文件的路径) pom.xml 以匹配项目配置。 有关这些选项的详细信息,请参阅 Maven 任务。

    steps:
    - task: Maven@4
      inputs:
        mavenPomFile: 'pom.xml'
        mavenOptions: '-Xmx3072m'
        javaHomeOption: 'JDKVersion'
        jdkVersionOption: '1.8'
        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 目标

    目标 值设置为以空格分隔的 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: '1.8'
        jdkArchitectureOption: 'x64'
        publishJUnitResults: true
        testResultsFiles: '**/TEST-*.xml'
        tasks: 'build'
    

    选择 Gradle 的版本

    将使用代理计算机上安装的 Gradle 版本,除非存储库的文件 gradle/wrapper/gradle-wrapper.properties 具有属性 distributionUrl ,该属性指定要在生成期间下载和使用的不同 Gradle 版本。

    调整生成路径

    如果 gradlew 文件不在存储库的根目录中,请调整 workingDirectory 值。 目录值应相对于存储库的根,例如 IdentityService$(system.defaultWorkingDirectory)/IdentityService

    如果 gradlew 文件不在存储库的根目录中,请调整 gradleWrapperFile 值。 文件路径值应相对于存储库的根目录,例如 IdentityService/gradlew$(system.defaultWorkingDirectory)/IdentityService/gradlew

    调整 Gradle 任务

    调整 Gradle 应执行的任务 的任务值, 例如 buildcheck

    有关适用于 Gradle 的常见 Java 插件任务的详细信息,请参阅 Gradle 的文档

    使用 Ant 生成时,以下代码片段将添加到 文件中 azure-pipelines.yml 。 更改值,例如文件的路径 build.xml 以匹配项目配置。 有关这些选项的详细信息,请参阅 Ant 任务。

    steps:
    - task: Ant@1
      inputs:
        workingDirectory: ''
        buildFile: 'build.xml'
        javaHomeOption: 'JDKVersion'
        jdkVersionOption: '1.8'
        jdkArchitectureOption: 'x64'
        publishJUnitResults: false
        testResultsFiles: '**/TEST-*.xml'
    

    若要使用命令行或脚本进行生成,请将以下代码片段之一添加到 azure-pipelines.yml 文件中。

    script: 步骤使用 Linux 和 macOS 上的 Bash 以及 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'
    

    生成并测试应用后,可以将生成输出上传到 Azure Pipelines,创建并发布 Maven 包,或将生成输出打包到要部署到 Web 应用程序的 .war/jar 文件中。

    详细了解如何为部署目标创建 CI/CD 管道:

  • 生成并部署到 Java Web 应用
  • 生成 Java 并将其部署到 Azure Functions
  • 生成 Java 并将其部署到 Azure Kubernetes 服务
  •