Java 项目的 CI/CD:配置 GitHub Actions

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

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

开始课程

Java项目使用GitHub Actions实现CI/CD入门指南

现代软件开发离不开构建、测试和部署流程的自动化。CI/CD(持续集成/持续部署)是一套实践方法,使团队能够快速、安全地将变更交付到生产环境。对于Java项目,最便捷的工具之一是GitHub Actions——无需额外搭建服务器的内置CI/CD系统。

本文将带您逐步为Java应用搭建流水线:从编译、运行测试到发布制品。您将学习如何使用Maven、JUnit和GitHub Actions创建可靠的交付流程。



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

GitHub Actions基于工作流——存储在.github/workflows文件夹中的YAML格式配置文件。每个工作流包含一个或多个在虚拟机(运行器)上执行的作业。

对于Java项目,典型的工作流包含以下步骤:

  • 代码检出 — 克隆仓库
  • 设置JDK — 安装所需Java版本
  • 缓存 — 缓存Maven/Gradle依赖以加速构建
  • 构建与测试 — 编译并运行测试
  • 部署 — 发布制品(可选)

我们来看一个Java 17搭配Maven的基础配置示例:

name: Java CI with Maven

on: push: branches: [ "main" ] pull_request: branches: [ "main" ]

jobs: build: runs-on: ubuntu-latest

steps: - uses: actions/checkout@v4 - name: Set up JDK 17 uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' cache: maven

- name: Build with Maven run: mvn -B package --file pom.xml

- name: Run tests run: mvn test

- name: Upload JAR artifact uses: actions/upload-artifact@v4 with: name: app-jar path: target/*.jar

该工作流在每次向main分支推送或发起拉取请求时运行。它会构建项目、运行测试并将JAR文件保存为制品。



2. 进阶配置:测试与代码质量

简单构建只是开始。在实际项目中,控制代码质量至关重要。让我们在工作流中添加静态分析和报告生成的步骤。

首先,集成JaCoCo来测量测试代码覆盖率。在pom.xml中添加插件:

<plugin>    <groupId>org.jacoco</groupId>    <artifactId>jacoco-maven-plugin</artifactId>    <version>0.8.11</version>    <executions>        <execution>            <goals><goal>prepare-agent</goal></goals>        </execution>        <execution>            <id>report</id>            <phase>test</phase>            <goals><goal>report</goal></goals>        </execution>    </executions></plugin>

现在,通过添加覆盖率检查并发布报告来更新工作流:

    - name: Run tests with coverage      run: mvn verify

- name: Upload JaCoCo report uses: actions/upload-artifact@v4 with: name: coverage-report path: target/site/jacoco/

您还可以添加诸如Checkstyle或SpotBugs之类的代码检查工具。以下是Checkstyle的示例:

    - name: Checkstyle      run: mvn checkstyle:check

这些步骤将帮助自动识别项目中的问题

博客

书籍推荐