Java CI/CD 管道:从零开始配置,告别部署恐惧

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

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

开始课程

您还在通过 SSH 手动部署 Java 应用吗?

\n\n

如果您曾经手动配置过生产环境中的 Java 项目——执行 mvn clean install,通过 scp 上传到服务器,终止进程,再重新启动——您一定深有体会:看似一切正常,但每次部署都像在挑战大 Boss。忘记一个标志位,搞错一个 Java 版本,应用就会崩溃,而您会在凌晨 3 点收到“服务器无响应”的消息。

\n\n

今天,我们将一起探讨如何从零构建一个 Java CI/CD 管道。无论您使用的是 Spring Boot、Micronaut 还是经典的 Java EE,这个管道都能节省您的精力和时间。我们将使用 Jenkins、Maven、Docker 和 GitHub。一切都是实战:包含代码、配置和真实示例。

\n\n
\n\n

什么是 CI/CD?为什么 Java 开发者需要它?

\n\n

CI/CD(持续集成/持续交付)不仅仅是一个流行词。它是一个流程,能将您的代码从“临时拼凑”转变为“在服务器上稳定运行”,而无需您手动干预。

\n\n
    \n
  • 持续集成 — 每次提交代码都会自动构建和测试。如果测试失败,您会立即得知,而不是一周后才发现。
  • \n
  • 持续交付 — 构建成功后,代码会自动部署到测试或生产服务器上。
  • \n
\n\n

这对 Java 尤为重要:通过 Maven/Gradle 构建、运行单元测试和集成测试、检查代码风格——所有这些都可以而且应该自动化。否则,您将把时间浪费在重复性工作上,而不是编写新功能。

\n\n
\n\n

步骤 1:环境准备——我们需要什么

\n\n

在编写管道之前,让我们确保拥有所有必要的工具。我们的 Java CI/CD 管道 需要:

\n\n
    \n
  • GitHub(或 GitLab/Bitbucket)——存放代码的仓库。
  • \n
  • Jenkins——自动化服务器。可以在本地或 VPS 上搭建。
  • \n
  • Maven——Java 项目构建工具。
  • \n
  • Docker——用于应用容器化。
  • \n
  • 服务器(或云平台)——部署目标。
  • \n
\n\n

在 Ubuntu 上安装 Jenkins(如果您使用其他操作系统也没关系,原理相同):

\n\n
sudo apt update\nsudo apt install openjdk-11-jdk\nwget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -\nsudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'\nsudo apt update\nsudo apt install jenkins\nsudo systemctl start jenkins\n
\n\n

安装完成后,打开 http://您的服务器:8080 并进行初始配置。别忘了安装插件:Git、Maven Integration、Docker Pipeline、Blue Ocean(用于美观的界面)。

\n\n
\n\n

步骤 2:编写一个简单的 Java 项目(Spring Boot)

\n\n

为了有东西可以练习,我们创建一个最小的 Spring Boot 服务。如果您已有项目,可以跳过此步骤。

\n\n
// Main.java\npackage com.example.demo;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RestController;\n\n@SpringBootApplication\n@RestController\npublic class DemoApplication {\n\n    public static void main(String[] args) {\n        SpringApplication.run(DemoApplication.class, args);\n    }\n\n    @GetMapping("/")\n    public String hello() {\n        return "Hello from CI/CD pipeline!";\n    }\n}\n
\n\n

别忘了包含依赖的 pom.xml 文件。通常使用 Spring Boot starter 和 Maven compiler 插件。这就是我们的测试项目。

\n\n
\n\n

步骤 3:创建 Jenkinsfile——管道的核心

\n\n

Jenkinsfile 是一个声明式

博客

书籍推荐