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

目录

jenkins简介

前置依赖

1. jdk17+

2.apache maven 3.8.6

3.git

4.docker

5.下载jenkins

启动配置jenkins

优缺点对比

Jenkins 的优点:

Jenkins 的缺点:


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博客

5.下载jenkins

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

启动配置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.mzph.cn/diannao/56197.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mistral AI 开源 Pixtral 12B 多模态 LLM,多场景能力理解,支持中文指令遵循!

Mistral AI 开源了 Pixtral 12B 多模态 LLM。具有自然场景理解,代码生成,图像转代码,图像理解,多图指令跟随,图表理解与分析以及复杂图形推理等多项能力。从效果演示来看模型的能力很强,其中对中文能力的理…

利用C++封装鼠标轨迹算法为DLL:游戏行为检测的利器

在现代软件开发中,鼠标轨迹模拟技术因其在自动化测试、游戏脚本编写等领域的广泛应用而备受青睐。本文将介绍如何使用C语言将鼠标轨迹算法封装为DLL(动态链接库),以便在多种编程环境中实现高效调用,同时探讨其在游戏行…

pymobiledevice3使用介绍(安装、常用命令、访问iOS沙盒目录)

项目地址:https://github.com/doronz88/pymobiledevice3 首先先介绍一下pymobiledevice3, pymobiledevice3是用Python3 实现的,用于处理 iDevices(iPhone 等)。它可以跨平台使用,支持:windows…

Python | Leetcode Python题解之第479题最大回文数乘积

题目: 题解: class Solution:def largestPalindrome(self, n: int) -> int:if n 1:return 9upper 10 ** n - 1for left in range(upper, upper // 10, -1): # 枚举回文数的左半部分p, x left, leftwhile x:p p * 10 x % 10 # 翻转左半部分到其…

ORACLE 批量插入更新删除sql

<?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace"com.nari.devices.mapper.KeySchedu…

【论文笔记】Fine-tuned CLIP Models are Efficient Video Learners

&#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&#xff0c;为生民立命&#xff0c;为往圣继绝学&#xff0c;为万世开太平。 基本信息 标题: Fine-tuned CLIP Models a…

aws(学习笔记第五课) AWS的firewall SecurityGroup,代理转发技术

aws(学习笔记第五课) AWS的firewall– SecurityGroup&#xff0c;代理转发技术 学习内容&#xff1a; AWS的firewall– SecurityGroup代理转发技术 1. AWS的filewall– SecurityGroup 控制进入虚拟服务器的网络流量 通常的firewall(防火墙)配置 AWS上使用安全组进行网络流量…

contact form 7设置方法与详细步骤

Contact Form 7(CF7)是WordPress中非常流行的表单插件&#xff0c;用于创建和管理网站上的联系表单。以下是Contact Form 7的设置方法与详细步骤&#xff1a; 一、安装Contact Form 7插件 从WordPress后台安装&#xff1a; 登录WordPress后台&#xff0c;进入“插件”菜单下…

SpringCloud-OpenFeign-服务接口调用

是什么 把需要暴露的api使用接口来暴露&#xff0c;客户端需要调用的时候&#xff0c;直接查看这个接口中有没有就可以了 通用步骤 架构说明 common模块 common 引入 openfeign 新建服务接口类 FeignClient(value "cloud-payment-service") // 服务名 public i…

大数据学习整理资料

基础&#xff1a; 1&#xff0c;HDFS&#xff08;懂原理就行&#xff0c;会基础命令&#xff09; https://www.bilibili.com/video/BV1gt411q7qw?spm_id_from333.788.videopod.episodes&vd_sourcea7b3a19b19885546976b75c802e7a3f8&p27 2&#xff0c;MapReduce&#x…

C语言的预处理指令

文章目录 宏定义简单的宏带参数的宏宏的通用属性实际编程中&#xff0c;遵守的一些规范预定义宏参数个数可变的宏#运算符与##运算符(了解即可&#xff0c;用的不多) 条件编译#if指令和#endif指令defined运算符#ifdef指令和#ifndef指令#elif指令和#else指令 C语言中&#xff0c;…

SwiftUI 6.0(iOS 18)自定义容器值(Container Values)让容器布局渐入佳境(上)

概述 我们在之前多篇博文中已经介绍过 SwiftUI 6.0&#xff08;iOS 18&#xff09;新增的自定义容器布局机制。现在&#xff0c;如何利用它们对容器内容进行“探囊取物”和“聚沙成塔”&#xff0c;我们已然胸有成竹了。 然而&#xff0c;除了上述鬼工雷斧般的新技巧之外&…

finereport 数据下钻

目标&#xff1a;点击某块汇总的单元格&#xff0c;然后直接在原表的位置下钻到明细表&#xff0c;且不会影响整个大屏的结构&#xff0c;同时又支持明细表再回退到汇总表的功能 1、新建tab组件 1、新建决策报表 将 body 的布局方式改为「绝对布局」 2、将 Tab 块拖入 body…

@Id、@GeneratedValue的作用,以及@GeneratedValue的使用

在Java持久化API&#xff08;JPA&#xff09;中&#xff0c;Id和GeneratedValue注解是用于定义实体类的主键字段和主键生成策略的。这两个注解在构建基于JPA的ORM&#xff08;对象关系映射&#xff09;框架&#xff08;如Hibernate&#xff09;的应用时非常关键。 Id Id注解用…

小白都来用这款AI绘画神器,IDEOGRAM2.0,轻松画出高质量图片

大家好&#xff01;我是宇航&#xff0c;一位喜欢AI绘画的10年技术专家&#xff0c;专注于输出AI绘画与视频内容 今天给大家介绍一款绝对的生图神器——Ideogram2.0! 不论你是AI小白&#xff0c;手残党还是资深玩家&#xff0c;无论你是做网页设计&#xff0c;电商&#xff0c…

【Python爬虫实战】正则:从基础字符匹配到复杂文本处理的全面指南

&#x1f308;个人主页&#xff1a;https://blog.csdn.net/2401_86688088?typeblog &#x1f525; 系列专栏&#xff1a;https://blog.csdn.net/2401_86688088/category_12797772.html 目录 前言 一、正则表达式 &#xff08;一&#xff09;正则表达式的基本作用 &#xf…

The Android SDK location cannot be at the filesystem root

win11&#xff0c; 安装启动完Android Studio后&#xff0c;一直显示 The Android SDK location cannot be at the filesystem root因此需要下载SDK包&#xff0c;必须开启代理。 开启代理后&#xff0c;在System下开启自动检测代理&#xff0c;如图 重启Android Studio&a…

尚硅谷rabbitmq 2024 消息可靠性答疑二 第22节

returnedMessage()只有失败才调用&#xff0c;confirm()成功失败了都会调用&#xff0c;为什么&#xff1f; 在RabbitMQ中&#xff0c;消息的确认和返回机制是为了确保消息的可靠传递和处理。confirm和returnedMessage方法的调用时机和目的不同&#xff0c;因此它们的行为也有…

Java微信支付接入(8) - API V3 Native 用户取消订单API

官方文档&#xff1a;https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_4_3.shtml 实现用户主动取消订单的功能 定义取消订单接口 /*** 用户取消订单* param orderNo* return* throws Exception*/ ApiOperation("用户取消订单") PostMapping("/cance…

swoole框架有哪些呢

基于 Swoole 的 PHP 框架有很多&#xff0c;以下是一些比较流行和常用的框架&#xff1a; Hyperf&#xff1a;高性能企业级协程框架&#xff0c;基于 Swoole 4.4 实现。提供丰富的组件&#xff0c;如协程版的 MySQL 客户端、Redis 客户端、WebSocket 服务端及客户端等1。 Swof…