注: GitHub 托管的运行器目前在 GitHub Enterprise Server 上不受支持。 您可以在 GitHub 公共路线图 上查看有关未来支持计划的更多信息。
简介
本指南介绍如何使用 Maven 软件项目管理工具为 Java 项目创建执行持续集成 (CI) 的工作流程。 您创建的工作流程将允许您查看拉取请求提交何时会在默认分支上导致构建或测试失败; 这个方法可帮助确保您的代� �始终是健康的。 您可以扩展 CI 工作流程以缓存文件并且从工作流程运行上� 构件。
GitHub 托管的运行器有工具缓存预安装的软件,包括 Java Development Kits (JDKs) 和 Maven。 有关软件以及 JDK 和 Maven 预安装版本的列表,请参阅 GitHub 托管的运行器的规� �。
基本要求
您应该熟悉 YAML 和 GitHub Actions 的语法。 更多信息请参阅:
建议您对 Java 和 Maven 框架有个基本的了解。 更多信息请参阅 Maven 文档中的 Maven 入门指南。
在 GitHub Enterprise Server 上使用自托管的运行器
在包含自托管运行器的 GitHub Enterprise Server 上使用设置操作(例如 actions/setup-LANGUAGE
)时,您可能需要在没有连接互联网的运行器上设置工具缓存。 更多信息请参阅“在没有互联网连接的自托管运行器上设置工具缓存”。
Using the Maven starter workflow
GitHub provides a Maven starter workflow that will work for most Maven-based Java projects. For more information, see the Maven starter workflow.
To get started quickly, you can choose the preconfigured Maven starter workflow when you create a new workflow. 更多信息请参阅“GitHub Actions 快速入门”。
您也可以通过在仓库的 .github/workflow
目录中创建新文件来手动添� 此工作流程。
name: Java CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 11
uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'adopt'
- name: Build with Maven
run: mvn --batch-mode --update-snapshots verify
此工作流程执行以下步骤:
checkout
步骤在运行器上下载仓库的副本。setup-java
步骤配置 Adoptium 的 Java 11 JDK。- “使用 Maven 构建”步骤以非交互模式运行 Maven
package
目� �,以确保创建代� �版本、测试通行证和软件包。
The default starter workflows are excellent starting points when creating your build and test workflow, and you can customize the starter workflow to suit your project’s needs.
在其他操作系统上运行
The starter workflow configures jobs to run on Linux, using the GitHub-hosted ubuntu-latest
runners. 您可以更改 runs-on
键,让您的作业在其他操作系统上运行。 例如,您可以使用 GitHub 托管的 Windows 运行器。
runs-on: windows-latest
或者,您可以在 GitHub 托管的 macOS 运行器上运行。
runs-on: macos-latest
您还可以在 Docker 容器中运行作业,或者提供在自己的基础架构上运行的自托管运行器。 更多信息请参阅“GitHub Actions 的工作流程语法”。
指定 JVM 版本和架构
The starter workflow sets up the PATH
to contain OpenJDK 8 for the x64 platform. 如果要使用不同的 Java 版本或面向不同的架构(x64
或 x86
),您可以使用 setup-java
操作选择不同的 Java 运行时环境。
例如,要使用 Adoptium 提供的用于 x611 平台的 11 版 JDK,您可以使用 setup-java
操作,将 java-version
、distribution
和 architecture
参数配置为 '11'
、'adopt'
和 x64
。
steps:
- uses: actions/checkout@v2
- name: Set up JDK 11 for x64
uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'adopt'
architecture: x64
更多信息请参阅 setup-java
操作。
构建和测试代� �
您可以使用与本地相同的命令来构建和测试代� �。
初学者工作流程默认将运行 package
目� �。 在默认的 Maven 配置中,此命令将下载依赖项、构建类别、运行测试并将类别打包为可分发� �式,如 JAR 文件。
如果使用不同的命令来构建项目,或者想要使用不同的目� �,则可以指定这些命令。 例如,您可能想要运行在 pom-ci.xml 文件中配置的 verify
目� �。
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'adopt'
- name: Run the Maven verify phase
run: mvn --batch-mode --update-snapshots verify
缓存依赖项
使用 GitHub 托管的运行器时,您可以缓存依赖项以� 速工作流程运行。 运行成功后,您的本地 Maven 仓库将存储在 GitHub Actions 基础架构中。 在未来的工作流程运行中,缓存将会恢复,� 此不需要从远程 Maven 仓库下载依赖项。 您可以简单地使用 setup-java
操作缓存依赖项,也可使用 cache
操作进行自定义和更高级的配置。
steps:
- uses: actions/checkout@v2
- name: Set up JDK 11
uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'adopt'
cache: maven
- name: Build with Maven
run: mvn --batch-mode --update-snapshots verify
此工作流程将保存本地 Maven 存储库的内容,位于运行器主目录的 .m2
目录。 缓存密钥是 pom.xml 的哈希内容,� 此更改 pom.xml 将使缓存失效。
将工作流数据打包为构件
构建成功且测试通过后,您可能想要上� 生成的 Java 包作为构件。 这会将构建的包存储为工作流程运行的一部分,并允许您下载它们。 构件可帮助您在拉取请求合并之前在本地环境中测试并调试它们。 更多信息请参阅“使用构件持久化工作流程”。
Maven 通常会在 target
目录中创建 JAR、EAR 或 WAR 等输出文件。 要将这些项目上� 为构件,可以将它们复制到包含要上� 的构件的新目录中。 例如,您可以创建一个名为 staging
的目录。 然后您可以使用 upload-artifact
操作上� 该目录的内容。
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'adopt'
- run: mvn --batch-mode --update-snapshots verify
- run: mkdir staging && cp target/*.jar staging
- uses: actions/upload-artifact@v2
with:
name: Package
path: staging