Java 项目的 CI/CD:从 A 到 Z 的 GitHub Actions 指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

引言:为什么 CI/CD 是现代 Java 开发的标准

\n

在 Java 开发世界中,代码交付的速度和质量至关重要。每天团队都会提交数百次更改,如果没有自动化,集成过程将陷入混乱。CI/CD(持续集成/持续部署)解决了这个问题:代码会自动构建、测试并部署到服务器上。

\n

GitHub Actions 工具是仓库中内置的 CI/CD 解决方案。它允许您使用 YAML 创建工作流(workflows),这些工作流会响应 push、pull request 或其他事件。在本文中,我们将介绍为 Java 项目配置 CI/CD 的完整流程:从基本构建到云端部署。

\n

您将了解如何加速开发、避免错误并实现日常任务自动化。让我们开始吧!

\n\n

1. GitHub Actions 基础:工作流结构

\n

什么是 GitHub Actions?

\n

GitHub Actions 是一个用于自动化工作流程的平台。工作流(Workflow)是一组在事件发生时(例如,推送到 main 分支)执行的步骤。每个工作流由以下部分组成:

\n
    \n
  • Event — 触发器(push、pull_request、schedule)。
  • \n
  • Jobs — 在虚拟机(runner)上执行的任务。
  • \n
  • Steps — 具体操作(运行脚本、安装依赖项)。
  • \n
\n

对于 Java 项目,典型的工作流包括:检出代码、安装 JDK、使用 Maven/Gradle 构建、运行测试和发布工件。

\n\n

为 Java 创建第一个工作流

\n

在仓库根目录下创建文件夹 .github/workflows/ 和文件 ci.yml。以下是 Maven 项目的最小示例:

\n
name: Java CI with Maven\n\non:\n  push:\n    branches: [ main ]\n  pull_request:\n    branches: [ main ]\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n\n    steps:\n    - uses: actions/checkout@v4\n    - name: Set up JDK 17\n      uses: actions/setup-java@v4\n      with:\n        java-version: '17'\n        distribution: 'temurin'\n    - name: Build with Maven\n      run: mvn clean compile\n    - name: Run tests\n      run: mvn test
\n

此工作流在推送到 main 或向 main 发起 pull request 时触发。它会检查代码是否可以编译以及测试是否通过。如果测试失败,工作流将以错误结束,您将收到通知。

\n\n

2. 高级配置:缓存、矩阵和工件

\n

依赖项缓存

\n

Maven 和 Gradle 每次都会重新下载依赖项——这很慢。GitHub Actions 支持缓存。添加一个使用 actions/cache 的步骤:

\n
- name: Cache Maven packages\n  uses: actions/cache@v4\n  with:\n    path: ~/.m2/repository\n    key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}\n    restore-keys: |\n      ${{ runner.os }}-maven-
\n

缓存键基于 pom.xml 的哈希值。如果文件未更改,则从缓存恢复依赖项,构建时间可缩短 2-3 倍。

\n\n

矩阵构建(Matrix Build)

\n

Java 项目通常需要在多个 JDK 版本和操作系统上进行测试。使用 matrix 策略:

\n
jobs:\n  test:\n    runs-on: ubuntu-latest\n    strategy:\n      matrix:\n        java: [11, 17, 21]\n    steps:\n    - uses: actions/checkout@v4\n    - name: Set up JDK ${{ matrix.java }}\n      uses: actions/setup-java@v4\n      with:\n        java-version: ${{ matrix.java }}\n        distribution: 'temurin'\n    - name: Test with Maven\n      run: mvn test
\n

GitHub 将创建 3 个并行任务——分别针对 Java 11、17 和 21。这确保了代码与不同 JDK 版本的兼容性。

\n\n

保存工件

\n

构建后,JAR 文件可以作为工件保存,以便手动下载或在下一个任务中使用:

\n
- name: Upload JAR artifact\n  uses: actions/upload-artifact@v4\n  with                

博客

书籍推荐