GKLBB

当你经历了暴风雨,你也就成为了暴风雨

导航

软件开发 --- Jenkins 之初体验

开源的支持插件的定时任务工具升级版

 可以简单理解为一键打包程序。一键发布程序。

1. 在 Windows 上安装 Jenkins

1.1. 使用 Windows 安装程序(推荐)

  1. 下载 Jenkins 安装包

    • 前往 Jenkins 官网 下载 Windows 安装程序(.msi 文件)。
  2. 运行安装程序

    • 双击下载的 .msi 文件,启动安装程序。
  3. 选择安装选项

    • 默认情况下,安装程序会自动选择安装路径(例如 C:\Program Files (x86)\Jenkins)。你可以选择自定义安装路径。
    • 默认端口是 8080,你可以选择更改端口号。
  4. 启动 Jenkins

    • 安装完成后,Jenkins 会自动启动并作为 Windows 服务运行。你可以通过浏览器访问 http://localhost:8080 来使用 Jenkins。
  5. 解锁 Jenkins

    • 打开浏览器并访问 http://localhost:8080,你将看到一个解锁页面。按提示找到解锁密钥:
      • 在安装过程中,Jenkins 会在 C:\Program Files (x86)\Jenkins\secrets\initialAdminPassword 中生成一个初始密码。
      • 打开该文件并复制密码,然后在浏览器中粘贴密码。
  6. 安装插件

    • 输入密码后,你可以选择安装推荐插件
  7. 创建管理员用户

    • 安装插件后,系统将要求你创建管理员用户。输入用户名、密码等信息,然后完成设置。

 

Jenkins 最常用的功能之一是 自动化构建。这个功能是 Jenkins 作为持续集成(CI)工具的核心之一,能够自动化从源代码到构建产物(如 .jar.war 文件)的生成。以下是如何一步一步地配置 Jenkins 进行自动化构建的详细步骤。

自动构建jar

  1. 准备 Jenkins 环境

    • 安装并配置 Jenkins。如果尚未安装 Jenkins,可以参考 Jenkins 官方安装文档
    • 安装必要的插件,例如 Maven 插件和 Git 插件。
  2. 创建 Jenkins Job

    • 在 Jenkins UI 中,点击 新建任务(New Item)。
    • 输入任务名称(如 Build-JAR),选择 自由风格的软件项目(Freestyle project),然后点击 OK
  3. 配置 Git 仓库

    • 在 源码管理(Source Code Management)部分选择 Git
    • 输入你的 Git 仓库 URL 和凭证(如果需要)。
    • 确保设置了正确的分支(例如 master 或 main)。
  4. 配置构建工具

    • 在 构建触发器(Build Triggers)部分,你可以选择定时构建或者触发器(例如 Git push 或手动触发)。通常使用 Poll SCM 或 GitHub Webhook 来定期或自动构建。

    • 在 构建环境(Build Environment)部分,可以选择设置一些构建环境变量等。

  5. 添加构建步骤

    • 在 构建(Build)部分,点击 添加构建步骤,选择 Invoke top-level Maven targets(调用顶级 Maven 目标)。

    • 在 Goals 字段中输入构建目标。对于构建 JAR 文件,通常使用 clean package

      clean package
      • clean:删除上次构建的临时文件。
      • package:使用 Maven 构建 JAR 文件。
    • 如果需要,指定 Maven 的 POM 文件位置(默认情况下,Jenkins 会自动查找项目根目录下的 pom.xml 文件)。

  6. 构建后操作

    • 在 构建后操作(Post-build Actions)部分,选择合适的构建后操作。如果需要将 JAR 文件存储为构建成果物,可以选择 Archive the artifacts

    • 在 Files to archive 字段中,指定 JAR 文件的路径(通常是 target/*.jar)。例如:

      target/*.jar

      这将存档所有在 target 文件夹下的 JAR 文件。

  7. 保存并构建

    • 点击 保存,然后可以手动触发构建(点击 立即构建)来测试 Jenkins 是否能够成功地构建你的项目。
    • 构建完成后,可以在 构建历史 中查看构建结果。

 

 

如何通过 Jenkins 自动化打包 JAR 文件并部署到 Linux 服务器上。

假设前提

  • 你已经有一个 Java 项目,使用 Maven 或 Gradle 作为构建工具。
  • 你已经安装并配置好了 Jenkins,并且有一个正在运行的 Jenkins 实例。
  • 你有一个 Linux 服务器,可以用来部署应用。并开启了ssh
  • 你的 Linux 服务器上已经安装了 Java 环境。

我们直接修改第一个打包jar的任务

 安装和配置 "Publish Over SSH" 插件

  1. Manage Jenkins > Manage Plugins 中,搜索并安装 Publish Over SSH 插件。
  2. 安装完成后,进入 Manage Jenkins > Configure System
  3. 找到 Publish over SSH 部分,配置 SSH 连接:
    • Name:为连接起个名字(如 my-linux-server)。
    • Hostname:输入你的 Linux 服务器 IP 地址(如 192.168.1.100)。
    • Username:输入服务器上的 SSH 用户名(如 youruser)。
    • Password or Private Key:输入用户的密码,或者使用私钥来进行 SSH 认证。

 配置 SSH 传输和命令执行

  1. 上传 JAR 文件

    • 在 Jenkins 项目中,选择 Add post-build action,然后选择 Send build artifacts over SSH
    • 选择你之前配置的 SSH 连接(如 my-linux-server)。
    • Source files 中,输入构建后的 JAR 文件路径(例如 target/your-app.jar)。
    • Remote directory 中,输入 Linux 服务器上存放 JAR 文件的路径(如 /home/youruser/apps/)。
  2. 在远程服务器上执行部署命令

    • Exec command 中输入以下命令,用于在 Linux 服务器上启动或重启你的 Java 应用:
      cd /home/youruser/apps/
      nohup /usr/local/jdk/jdk-17.0.10/bin/java -jar /root/target/untitled1-1.0-SNAPSHOT-release.jar  > app.log 2>&1 &
    • 注意一定要使用绝对路径执行代码

    这会启动应用,并将日志输出到 app.log 文件中,使用 nohup& 后台运行应用。


4. 执行构建和部署

  1. 配置完毕后,点击 Save

  2. 点击 Build Now,Jenkins 将会:

    • 从 Git 仓库拉取代码。
    • 执行构建步骤,打包生成 JAR 文件。
    • 将生成的 JAR 文件上传到远程 Linux 服务器。
    • 执行命令启动应用。
  3. 你可以在 Jenkins 的 Build History 中查看构建日志,确认部署是否成功。


5. 定期触发构建

你可以通过配置 GitHub Webhook定时任务,让 Jenkins 自动触发构建和部署。

  • 如果你选择 GitHub Webhook,在 GitHub 仓库设置中,添加一个 Webhook,指向 Jenkins 服务器的 URL(如 http://<jenkins-server>/github-webhook/),这样每次代码提交后,GitHub 会通知 Jenkins 触发构建。
  • 你也可以设置定时触发构建,定期检查代码更新。

总结

通过 Jenkins 自动化构建和部署 JAR 文件的过程如下:

  1. 构建步骤
    • Jenkins 拉取代码并构建 JAR 文件。
  2. 部署步骤
    • Jenkins 将构建好的 JAR 文件上传到远程 Linux 服务器。
    • 通过 SSH 在远程服务器上执行命令,启动应用。
  3. 自动化
    • 配置触发器使构建和部署流程自动化,例如 Git 提交或定时构建。

这种方法可以极大提高开发和部署效率,确保代码更新后自动构建和部署,而不需要手动操作。

 

1. 持续集成 (Continuous Integration, CI)

Jenkins 最常见的用途之一是持续集成。它可以自动化以下任务:

  • 自动化构建:Jenkins 能够从源代码管理(如 Git)获取最新代码,并自动触发构建过程。
  • 单元测试:在每次构建之后,Jenkins 会运行单元测试,帮助检测代码中的潜在问题。
  • 静态代码分析:Jenkins 可以集成工具(如 SonarQube、Checkstyle、PMD)来执行代码质量检查。
  • 集成测试:执行集成测试以确保代码和系统的整体协作性。

2. 持续交付和部署 (Continuous Delivery and Deployment, CD)

Jenkins 可以帮助实现持续交付和自动化部署:

  • 自动化部署到开发环境:Jenkins 可以将构建后的代码自动部署到开发或测试环境。
  • 自动化部署到生产环境:在经过严格的测试和验证后,Jenkins 可以将应用程序自动部署到生产环境。通过设置流水线,Jenkins 可以执行整个部署过程,包括数据库迁移、配置文件更新等。
  • 蓝绿部署、滚动更新:支持复杂的生产环境部署策略,如蓝绿部署或滚动更新。

3. 自动化测试

Jenkins 可以帮助自动化不同类型的测试:

  • 单元测试:执行单元测试(如 JUnit、TestNG),并报告测试结果。
  • 集成测试:执行系统集成测试,确保各个模块之间能够无缝协作。
  • UI 自动化测试:集成 Selenium 等工具,自动化 Web 应用的 UI 测试。
  • 性能测试:集成 JMeter 或其他性能测试工具,执行负载测试和性能分析。
  • 安全性测试:集成安全扫描工具,检查应用程序的安全漏洞。

4. 自动化发布和版本管理

Jenkins 可以通过集成发布工具(如 Maven、Gradle)来管理应用程序版本:

  • 版本号管理:Jenkins 可以在每次构建时自动生成版本号,帮助管理多个版本的发布。
  • 构建产物管理:自动存档构建产物,并推送到制品库(如 Nexus、Artifactory)。

5. 容器化和云部署

Jenkins 可以与 Docker、Kubernetes、AWS 等技术集成,实现容器化部署和云端管理:

  • Docker 构建:使用 Jenkins 构建和推送 Docker 镜像,可以自动化容器化应用程序的构建。
  • Kubernetes 集群管理:通过 Jenkins 实现与 Kubernetes 的集成,自动管理和部署容器到 Kubernetes 集群。
  • 云服务集成:通过插件,Jenkins 能够与云平台(如 AWS、Azure、Google Cloud)进行集成,支持自动化部署和扩展。

6. 工作流和管道管理 (Pipeline)

Jenkins Pipelines 提供了强大的工作流管理能力,可以定义和执行一系列自动化操作:

  • Jenkinsfile:使用 Groovy 编写的 Jenkinsfile 可以定义构建、测试、部署等一系列步骤,形成完整的自动化流水线。
  • 多阶段流水线:可以设置多阶段流水线,如构建阶段、测试阶段、部署阶段等,确保不同任务按照特定的顺序进行。

7. 自动化监控和报告

Jenkins 可以生成关于构建、测试、部署的详细报告,并通过集成各种监控工具,帮助团队更好地了解项目状态:

  • 构建和测试报告:Jenkins 可以生成详细的构建和测试结果报告,帮助开发人员快速发现问题。
  • 代码质量报告:与 SonarQube 等工具集成,自动分析代码质量,生成报告。
  • 健康检查和通知:Jenkins 能够根据构建和测试结果,发送邮件或 Slack 通知,实时跟踪项目的健康状态。

8. 集成第三方工具

Jenkins 可以与很多其他开发工具、服务和平台集成,以便实现更全面的自动化:

  • 与 Git、SVN 集成:Jenkins 可以与版本控制系统(如 Git、SVN)集成,自动拉取最新代码并进行构建。
  • 与 Jira、Trello 等项目管理工具集成:Jenkins 可以将构建结果和开发进度直接同步到项目管理工具,保持团队协作的一致性。
  • 与 Slack、Microsoft Teams 集成:Jenkins 可以将构建、测试和部署状态通知到团队的沟通平台。

9. 自动化定时任务

Jenkins 可以定期执行任务,比如:

  • 定期执行构建:在特定时间或频率下自动执行构建(如每天、每周构建)。
  • 自动化备份任务:定期备份数据库或应用程序文件。
  • 自动化清理任务:定期清理旧的构建产物、日志文件等。

10. 自定义插件扩展

Jenkins 支持大量的插件,用户可以根据需求自定义扩展 Jenkins 功能:

  • 插件市场:Jenkins 提供了广泛的插件支持,可以实现集成不同的工具(如 SonarQube、Docker、Kubernetes、Slack、AWS 等)。
  • 自定义插件开发:如果有特殊需求,还可以开发自己的 Jenkins 插件来实现更个性化的功能。

 

posted on 2024-12-09 07:53  GKLBB  阅读(7)  评论(0编辑  收藏  举报