Java+Jenkins实现自动化打包部署流程

server/2024/10/18 6:02:36/

目录

jenkins%E7%AE%80%E4%BB%8B-toc" style="margin-left:0px;">jenkins简介

前置依赖

1. jdk17+

2.apache maven 3.8.6

3.git

4.docker

jenkins-toc" style="margin-left:40px;">5.下载jenkins

jenkins-toc" style="margin-left:0px;">启动配置jenkins

优缺点对比

Jenkins 的优点:

Jenkins 的缺点:


jenkins%E7%AE%80%E4%BB%8B">jenkins简介

Jenkins 是一个开源的自动化服务器,可以用于自动化各种任务,包括构建、测试和部署软件。Jenkins 支持多种插件,使其能够与几乎所有流行的软件工具集成,如 Git、Subversion、Maven、Ant、Docker 等。

以下是 Jenkins 的一些主要特点:

  1. 自动化构建和测试:Jenkins 可以自动执行构建和测试过程,帮助开发者快速发现代码中的错误。

  2. 持续集成(CI):Jenkins 支持持续集成,即频繁地将代码变更集成到主分支中,确保代码的稳定性。

  3. 持续部署(CD):通过 Jenkins,可以实现持续部署,自动化地将软件部署到生产环境中。

  4. 插件生态系统:Jenkins 拥有一个庞大的插件生态系统,这些插件可以扩展 Jenkins 的功能,使其能够适应不同的开发和部署需求。

  5. 分布式构建:Jenkins 支持分布式构建,可以在多台机器上并行执行任务,提高构建速度。

  6. 易于配置:Jenkins 提供了 Web 界面,使得配置和管理任务变得简单。

  7. 丰富的社区支持:由于 Jenkins 是开源的,它拥有一个活跃的社区,社区成员会贡献新的插件和功能,同时也提供支持和帮助。

  8. 可扩展性:Jenkins 可以通过编写自己的插件或使用现有的插件来扩展其功能。

  9. 多平台支持:Jenkins 可以在多种操作系统上运行,包括 Windows、Linux 和 macOS。

  10. 安全性:Jenkins 提供了多种安全机制,包括用户认证和授权,确保构建过程的安全性。

Jenkins 通常用于软件开发的自动化流程中,帮助团队提高效率,减少人为错误,并加快软件交付的速度

前置依赖

1. jdk17+

oracle jdk 下载地址:  Java Downloads | Oracle

openjdk 下载地址:https://openjdk.org/install/

2.apache maven 3.8.6

下载地址: Maven – Download Apache Maven

3.git

4.docker

安装可参考 windows10 vagrant+VirtualBox安装docker_vagrant 6.0下载-CSDN博客

jenkins">5.下载jenkins

下载地址:https://get.jenkins.io/war/

jenkins">启动配置jenkins

启动命令:java -jar -Dpermissive-script-security.enabled=true -Djava.awt.headless=true -Xmx1024m jenkins.war --httpPort=10000

启动后访问http://127.0.0.1:10000端口,按照默认安装模式,等待安装完成后进入到主页面

进入系统管理

找到全局工具配置

配置maven

配置git,用于拉取代码,配置完成后应用并保存。

编写部署的jenkins.groovy代码,用于构建流水线发布,该文件位置在您实际的项目代码根目录。内容仅仅为演示,流程步骤可自行拓展。

请将文件中的服务目录、应用名称、景象仓库地址等换成您实际地址。

def createVersion() {return new Date().format('yyyyMMddHHmmss') + "_${env.BUILD_ID}"
}def createVersionTime() {return new Date().format('yyyyMMddHHmmss')
}pipeline {agent anyenvironment {_APP_NAME = '你的应用名称'_APP_VERSION = '1.0.0'_VERSION = "${_APP_VERSION}_${createVersion()}"_HARBOR_TAG = "-dev-${createVersionTime()}"}stages {stage('Build') { steps {echo 'Building..'sh "cd ${env.WORKSPACE}"sh 'source ~/.bash_profile'sh 'mvn clean install -am  -Dmaven.test.skip=true'}}stage('Build Docker') {steps {echo 'Build ..'sh "mv ${env.WORKSPACE}/服务目录/target/服务目录-1.0.jar ${env.WORKSPACE}/服务目录/"sh "cd ${env.WORKSPACE}/服务目录/"sh "chmod +x ${env.WORKSPACE}/服务目录/服务目录-1.0.jar"sh "chmod 777 ${env.WORKSPACE}/服务目录/服务目录-1.0.jar"sh "docker build --rm -t ${env._APP_NAME}:${env._VERSION} -f ${env.WORKSPACE}/服务目录/Dockerfile ${env.WORKSPACE}/服务目录/"}}stage('push Docker') {steps {echo 'docker tag ..'sh "docker tag ${env._APP_NAME}:${env._VERSION} 镜像仓库地址/目录/${env._APP_NAME}:${env._VERSION}"sh "docker login harbor镜像仓库地址 -u 用户名 -p 密码"sh "docker push 镜像仓库地址/目录/${env._APP_NAME}:${env._VERSION}"sh "docker tag ${env._APP_NAME}:${env._VERSION} 镜像仓库地址/目录/${env._APP_NAME}:latest"sh "docker push 镜像仓库地址/目录/${env._APP_NAME}:latest"}}}
}

编写Dockerfile文件,并将它放  到服务目录/Dockerfile 的位置。

FROM openjdk:11
EXPOSE 8991
EXPOSE 9999
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/Shanghai" > /etc/timezone
WORKDIR /声明工作目录
COPY ./source-1.0.jar source-1.0.jar
ENTRYPOINT ["sh","-c","服务启动的命令"]

文件目录存放见截图

接下来进行jennkins配置,点击新建任务,输入名称后选择流水线并点击确定按钮。

配置git地址以及登录凭证,并指定代码分支

配置流水线写好的.groovy文件,点击应用保存

点击立即构建开始部署发布,可点击任务Console Outout查看执行的完整流程步骤,至此jenkins的配置安装部署成功。

优缺点对比

Jenkins 的优点:

  1. 功能测试与部署:Jenkins 可以自动完成代码的编译、打包和部署,减轻运维人员的工作负担。
  2. 持续集成:Jenkins 作为一个开源的持续集成引擎,支持自动化构建、测试和部署流程,提高开发效率和代码质量。
  3. 易于安装与配置:Jenkins 易于安装和配置,方便开发人员、运维人员和测试人员使用。
  4. 插件生态系统:Jenkins 拥有丰富的插件生态系统,可以集成各种工具和服务。
  5. 可扩展性与灵活性:Jenkins 的可扩展性和灵活性使其能够适应各种规模和复杂度的项目。
  6. 分布式构建:Jenkins 支持分布式构建,提高了构建效率。
  7. 强大的社区支持:作为开源项目,Jenkins 拥有活跃的社区和广泛的用户基础。

Jenkins 的缺点:

  1. 性能问题:Jenkins 反应可能较慢,特别是在资源消耗较大的情况下,页面跳转切换时可能会感到延迟和卡顿。
  2. 插件系统:虽然插件系统提供了扩展性,但过多的插件可能导致易用性降低,且插件配置可能复杂。
  3. Docker 集成体验:Jenkins 的 Docker 集成体验不够好,插件众多且配置复杂。
  4. 调试困难:Jenkins 的调试过程可能比较麻烦,没有本地或服务器上的命令行调试功能。
  5. 界面老旧:Jenkins 的界面可能显得老旧,尽管新的插件如 BlueOcean 提供了改进的界面。

这些优缺点可以帮助用户更好地理解 Jenkins 是否适合他们的持续集成和持续部署需求。


http://www.ppmy.cn/server/132053.html

相关文章

使用Go语言的gorm框架查询数据库并分页导出到Excel实例

文章目录 基本配置配置文件管理命令行工具: Cobra快速入门基本用法 生成mock数据SQL准备gorm自动生成结构体代码生成mock数据 查询数据导出Excel使用 excelize实现思路完整代码参考 入口文件效果演示分页导出多个Excel文件合并为一个完整的Excel文件 完整代码 基本配置 配置文…

FP7127:降压恒流LED芯片 支持双路调色调光 PWM调光

一、降压恒流LED芯片FP7127 FP7127 是平均电流模式控制的 LED 驱动 IC,具有稳定输出恒流的能力,优秀的负载调整率与高精度的电流控制。不用额外增加外部补偿元件,简化 PCB 板设计。输出的LED电流精度为 2%。 如果你想进行PWM数位调光&#…

记录Android.bp里如何添加jar/aar文件

在项目libs目录下放入需要的jar/aar 文件,并新建Android.bp文件 android_library_import {name: "libaums_aar",aars: ["libaums-0.6.0.aar"],}java_import {name: "gson_jar",jars: ["gson-2.11.0.jar"]} 注意: aar 文件…

【Rust版从头写CAD】 前言

文章目录 前言 前言 Rust是一种系统级编程语言,注重安全性、性能和并发性,适用于开发高效、安全和可靠的应用程序,非常适合于CAD领域开发。 然而,要实现一个完整的CAD(计算机辅助设计)软件是一个复杂且耗时…

prompt learning

prompt learning 对于CLIP(如上图所示)而言,对其prompt构造的更改就是在zero shot应用到下游任务的时候对其输入的label text进行一定的更改,比如将“A photo of a{obj}”改为“[V1][V2]…[Vn][Class]”这样可学习的V1-Vn的token…

2024年网络安全进阶手册:黑客技术自学路线

🤟 基于入门网络安全/黑客打造的:👉黑客&网络安全入门&进阶学习资源包 前言 什么是网络安全 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、…

Ubuntu 上使用 Nginx 实现反向代理并启用 HTTPS(详细教程)

拒绝使用宝塔,虽然宝塔很好用方便,但是他非常占用资源,所以我正在尝试转换我使用服务器的方式,通过命令来才做这些,下面是我的详细步骤。 在这篇教程中,我们将详细介绍如何在 Ubuntu 系统上使用 Nginx 搭建…

从 Reno TCP 到 Scalable TCP,HighSpeed TCP

前文 Scalable TCP 如何优化长肥管道 介绍了 Scalable TCP,但联系另一个类似的算法 HighSpeed TCP(简称 HSTCP),就会看到一个类似从 Reno TCP 经 BIC 到 CUBIC 的路线,但采用了不同的策略。 Reno TCP 经 BIC 到 CUBIC 路线的核心在于 “在长…