DockerCompose+Jenkins+Pipeline流水线打包SpringBoot项目(解压安装配置JDK、Maven等)入门

news2024/10/6 16:30:46

场景

DockerCompose中部署Jenkins(Docker Desktop在windows上数据卷映射):

DockerCompose中部署Jenkins(Docker Desktop在windows上数据卷映射)-CSDN博客

Docker+Jenkins+Gitee+Maven项目配置jdk、maven、gitee等拉取代码并自动构建以及遇到的那些坑:

Docker+Jenkins+Gitee+Maven项目配置jdk、maven、gitee等拉取代码并自动构建以及遇到的那些坑_jenkins的安装以及集成jdk+git+maven 提示警告-CSDN博客

上面流程新建jenkins项目为maven项目,这里使用jenkinsfile文件的形式使用流水线语法进行SpringBoot/Maven项目的打包示例。

注:

博客:
霸道流氓气质-CSDN博客

实现

1、Pipeline流水线语法文档

流水线语法

2、环境搭建,首先在windows电脑上(这里使用本机演示,尽量使用linux服务器)

新建目录,并新建如下目录,其中jenkins_home用来映射容器内Jenkins的工作目录;tools用来映射容器内离线解压配置jdk和maven等工具

3、Windows上使用Docker Desktop部署jenkins后运行卡顿现象排查

首先按照上面文章部署jenkins容器时不要使用latest的最新版本,而是使用lts的稳定版本。

其次在启动jenkins容器后不进行安装推荐的插件,会导致很多插件的版本与jenkins的版本不对应,

进而导致大量不兼容报错的提示,所以在启动成功之后按需自行安装插件。

4、docker(Docker Desktop)部署jenkins后如何通过解压配置的方式配置jdk

首先下载jdk的tar.gz包,注意这里要下载linux版本的,因为最终是要给容器内jenkins使用。

比如这里下载的为jdk-8u401-linux-x64.tar.gz

然后以管理员模式运行解压软件,这里是使用winrar,然后将上面的jdk的压缩包进行解压。

windows上一定要以管理员模式解压,否则会有问题。

当然如果是在linux上则直接使用解压命令解压即可。

注意解压之后会有一层最外层的目录,将外层目录去掉,最终实现jdk的目录结构为

即将原来的bin所在的目录直接放在tool目录下的java路径下

同理在linux上可以执行如下类似的指令

rm -rf java & mkdir java & tar xzvf jdk-*.tar.gz --strip-components 1 -C ./java

jenkins中配置jdk的安装

访问jenkins的页面中系统管理-全局工具配置-JDK安装-不要勾选自动安装,注意这里的别名为jdk,

这个名称需要记住,后续需要与jenkinsfile中tool配置时一致。

然后注意这里的JAVA_HOME路径为:/tool/java

5、docker(Docker Desktop)部署jenkins后如何通过解压配置的方式配置maven

同上面解压jdk同样,下载maven的压缩包并解压至tool下maven目录下,使bin目录所在的目录直接就在

tool/maven下。

修改maven的配置文件,修改上面conf下settings.xml中的配置项。

比如修改仓库地址,首先在容器映射路径下tool下新建repo目录,然后修改settings配置文件中localRepository的路径为

/tool/repo

比如修改镜像源为aliyun仓库地址,这里不再赘述,其实就是对maven的配置文件进行修改,比如可以拿本地开发调试用的maven的配置文件进行修改和替换。

访问jenkins的页面中系统管理-全局工具配置-Maven安装-不要勾选自动安装,注意这里的别名为maven

这个名称需要记住,后续需要与jenkinsfile中tool配置时一致。

然后注意这里的MAVEN_HOME路径为:/tool/maven

6、插件安装

配置完以上jdk与maven之后,需要安装必须的插件。

这些需要安装Git plugin、Maven Integration、Pipeline(流水线插件)、Localization:Chinese(Simplified)中文语言包汉化插件、Pipeline:Stage View Plugin插件(流水线图形化插件)、Gitee(这里代码存放在Gitee上)。

以上插件以及其他插件的安装根据个人需求进行安装。

确保拉取代码并打包的必须的插件安装即可。

7、配置流水线项目

新加项目-安装pipeline插件后会有流水线项目选项

然后配置gitee代码地址

接下来配置git以及凭证等

定义流水线为Pipeline script from SCM,然后SCM为Git,配置仓库地址以及拉取代码的凭证,这里使用的是账户密码,当然也可以使用其他

ssh公钥私钥、giteeapi令牌等方式。

添加凭证直接点击添加

 然后继续往下配置Jenkinsfile的路径,这里配置项目根目录下,然后在gitee远端代码仓库根目录下新建Jenkinsfile文件

这样的目的是使流水线的配置文件可以被版本管理起来,方便修改和维护。

修改文件内容如下

pipeline {
    agent any
 tools {
        maven 'maven'
        jdk   'jdk'
    }
    stages {
  stage('编译构建') {
            steps {
                sh 'mvn clean package -DskipTests'
            }
        }
    }
 post {
        always {
            echo '构建结束,结果:'
        }
  success {
            echo '构建成功'
        }
  failure {
            echo '构建失败'
        }
    }
}

流水线的具体语法参考上面,这里这里的tools中与上面配置jdk和maven时配置的别名一致。

8、构建流水线项目

点击立即构建,第一次构建时间较长,因为需要下载依赖,然后构建完成可以查看日志确认

并且到容器内与容器外映射的路径的jenkins_home/workspace/server_test(这里是新建的任务名)下面对应的jar包路径下去确认。

后续拿到jar包之后需要什么其它操作,就是根据需求自行实现了。比如可以实现通过ssh发送jar包并实现更新操作等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1816168.html

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

相关文章

[12] 使用 CUDA 进行图像处理

使用 CUDA 进行图像处理 当下生活在高清摄像头的时代,这种摄像头能捕获高达1920*1920像素的高解析度画幅。想要实施的处理这么多的数据,往往需要几个TFlops地浮点处理性能,这些要求CPU也无法满足通过在代码中使用CUDA,可以利用GP…

【网络安全的神秘世界】磁盘空间告急?如何解决“no space left on device”的困扰

🌝博客主页:泥菩萨 💖专栏:Linux探索之旅 | 网络安全的神秘世界 | 专接本 磁盘空间告急?如何解决“no space left on device”的困扰 🙋‍♂️问题描述 错误信息 "write /var/lib/docker/tmp/GetIma…

计算机组成原理-流水CPU-指令流水

一、指令流水的定义 指令流水线是计算机处理器中的一种设计,用于提高指令执行的效率。考虑到执行指令的每个阶段用到的硬件不同,它将处理指令的各个步骤分解为若干个阶段,并允许多个指令在同一时刻在不同的阶段执行,从而实现指令…

InfiniBand网络内计算架构指南

InfiniBand网络内计算知多少? InfiniBand在高性能计算和人工智能领域占据核心地位,其高速、低延迟的网络通信能力支持大规模数据传输与复杂计算。在网络内计算领域,InfiniBand的应用日益广泛,通过内部计算降低延迟,提升…

【霸王餐系统】搭建部署,可设置二级分销

前言: 霸王餐项目通常是由外卖平台或商家发起的一种营销策略,旨在通过提供低成本甚至免费的外卖来吸引消费者,从而增加销量、优化评价并扩大市场影响力。这种项目往往能够实现平台、商家、推广者和消费者四方共赢的局面。 一、项目优势 市…

GPT-4o更易越狱?北航南洋理工上万次测试详解!

GPT-4o,比上一代更容易遭受越狱攻击? 北航和南洋理工的研究人员通过上万次API查询,对GPT-4o的各种模态安全性进行了详细测试。 结果发现,GPT-4o新引入的语音模态带来了新的攻击面,多模态整体安全性不如GPT-4V。 GPT-4o…

海洋气象期刊 | 个人统计

写在前面 这周末两天闲着无聊,统计了一些zotero中自己常看的期刊数量,少于5篇的未进行统计 Journal of the Atmospheric Sciences - (JAS) https://www.ametsoc.org/index.cfm/ams/publications/journals/journal-of-the-atmospheric-sciences/ 73篇 …

用教育邮箱在官网安装origin2024中文版教程

打开origin官网,点击learning Edition,教育版只能维持六个月,但是过期之后可以在官网更新,能够免费使用六次,也就是三年。 OriginLab - Origin and OriginPro - Data Analysis and Graphing Software 填写学校信息&…

鸿蒙开发文件管理:【@ohos.statfs (statfs)】

statfs 该模块提供文件系统相关存储信息的功能,向应用程序提供获取文件系统总字节数、空闲字节数的JS接口。 说明: 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import stat…

技术干货分享:初识分布式版本控制系统Git

初识Git版本控制 自动化测试代码反复执行,如果借用持续集成工具会提高测试效率,那么需要我们把自动化测试代码发布到正式环境中,这时候用Git版本控制工具高效、稳定、便捷。 分布式版本控制 Git可以把代码仓库完整地镜像下来,有…

每日一练——有效的括号

20. 有效的括号 - 力扣&#xff08;LeetCode&#xff09; 错误记录 #include<stddef.h> #include<stdlib.h> #include<assert.h> #include<stdbool.h>typedef char STDataType;typedef struct Stack {STDataType* a;int capacity;int top; } Stack;vo…

Unity 实现WebSocket 简单通信——客户端

创建连接 ClientWebSocket socket new ClientWebSocket(); string url $"ws://{ip}:{port}"; bool createUri Uri.TryCreate(url, UriKind.RelativeOrAbsolute, out Uri uri); if (createUri) {var task socket.ConnectAsync(uri, CancellationToken.None);task…

Nginx学习笔记(九)location转发后,proxy_pass结尾带 / 和不带 / 的区别

目录 一、知识回顾二、proxy_pass 结尾带 / 和不带 / 的区别2.1 场景假设2.2 实战验证验证1&#xff1a;结尾带/的场景验证2&#xff1a;不带/的场景 2.3 结论 一、知识回顾 之前使用过 Nginx 的小伙伴或许都了解&#xff0c;Nginx 是一款用于请求转发的高性能中间件&#xff…

C++|哈希应用->位图

目录 一、概念 1.1原理分析&#xff1a; 1.2效率分析&#xff1a; 二、模拟实现 2.1位图框架初始化空间 2.2映射 2.3清零 2.4判断 2.5测试代码 三、位图扩展应用 一、概念 位图&#xff0c;本质上也是一个数组&#xff0c;通过哈希思想构造的一种数据结构&#xff0c…

unity开发Hololens编辑器运行 按空格没有手

选择DictationMixedRealityInputSystemProfile 如果自定义配置文件 需要可能需要手动设置 手部模型和材质球

SQL 窗口函数

1.窗口函数之排序函数 RANK, DENSE_RANK, ROW_NUMBER RANK函数 计算排序时,如果存在相同位次的记录,则会跳过之后的位次 有 3 条记录排在第 1 位时: 1 位、1 位、1 位、4 位…DENSE_RANK函数 同样是计算排序,即使存在相同位次的记录,也不会跳过之后的位次 有 3 条记录排在…

Springboot高校实训管理平台-计算机毕业设计源码01557

目 录 摘要 1 绪论 1.1 研究背景 1.2 研究意义 1.3论文结构与章节安排 2 高校实训管理平台系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据增加流程 2.2.2 数据修改流程 2.2.3 数据删除流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系…

delmia中机器人末端固定工具

1 需要在工具上面建立点 在Device Building模式下 2 然后通过 set tool可以设置

247 H指数

法一&#xff1a; 不进行排序&#xff0c;直接依照原数组进行解&#xff0c;先假设h为1&#xff0c;然后找引用超过1篇的论文数量&#xff0c;如果满足&#xff0c;则再假设h为2。这样比较慢&#xff0c;时间复杂度为o(n方)。 int hIndex(vector<int>& citations) {…

天润融通引领AI大模型应用,助力企业客户感知升级

AI大模型&#xff0c;如何进行应用落地&#xff1f; 2024年&#xff0c;大模型的应用落地成为行业发展的一个重要主题&#xff0c;如何将大模型的能力与业务场景相结合&#xff0c;为企业提高效率&#xff0c;创造价值&#xff0c;成为各大企业积极探索的方向。 客户联络也是…