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

devtools/2024/10/15 5:39:13/

目录

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/devtools/126002.html

相关文章

网络知识点之—EVPN

EVPN(Ethernet Virtual Private Network)是下一代全业务承载的VPN解决方案。EVPN统一了各种VPN业务的控制面,利用BGP扩展协议来传递二层或三层的可达性信息,实现了转发面和控制面的分离。 EVPN解决传统L2VPN的无法实现负载分担、…

【Jackson】实现 Java 中的 JSON 对象映射

哈喽,哈喽,大家好~ 我是你们的老朋友:保护小周ღ 今天给大家带来的是 【Jackson】实现 Java 中的 JSON 对象映射,首先了解, Jackson 库是干啥的, 然后如何进行对象与 JSON 结构之间的序列化和反序列化的使用, 以及 Jackson 常用…

Nginx(Linux):服务器版本升级和新增模块

目录 1、概述2、使用Nginx服务信号完成Nginx升级2.1 备份当前版本的Nginx2.2 向服务器导入新的Nginx2.3 向服务器导入新的Nginx2.4 停止老版本Nginx 3、使用Nginx安装目录的make命令完成升级3.1 备份当前版本的Nginx3.2 向服务器导入新的Nginx3.3 执行更新命令 1、概述 如果想…

Docker 命令替代(ctr和 crictl)

1. ctr ctr 是 containerd 的一个客户端工具。 $ ctr -v ctr containerd.io 1.6.16从输出看到,这是一个 containerd 管理工具,一般是安装完 containerd.io 之后就有的命令。 现在 Containerd 也有 namespaces 的概念,所以很多操作需要加上 -n。默认情况下运行在 default …

vue判断对象数组里是否有重复数据

TOCvue判断对象数组里是否有重复数据 try {//通过产品编码赛选出新的数组 在比较let names this.goodsJson.map(item > item["productCode"]);let nameSet new Set(names)if (nameSet.size ! names.length) {this.$message({message: 警告!产品选项…

layui table 自定义表头

自定义表头-查询 js/css静态文件引用 <!-- 引入 layui.css --> <link href"//unpkg.com/layui2.9.16/dist/css/layui.css" rel"stylesheet"> <!-- 引入 layui.js --> <script src"//unpkg.com/layui2.9.16/dist/layui.js"…

Flask接口通过WSGI服务器部署到后台

1、flask开发服务器警告问题 &#xff08;1&#xff09;flask直接部署警告问题 flask接口直接部署会出现下列警告&#xff1a;WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. 例如&#xff1a; 这条…

基于单片机的教室灯光自动控制系统设计(243)

文章目录 一、前言1.1 项目介绍【1】项目开发背景【2】设计实现的功能【3】项目硬件模块组成1.2 设计思路【1】 系统架构规划【2】 硬件选型与电路设计【3】 软件设计【4】 照明控制策略【5】 显示屏与按键模块设计【6】 系统调试与优化【7】 系统集成与应用1.3 项目开发背景【…