DockerCompose+Jenkins+Pipeline流水线打包SpringBoot项目(解压安装配置JDK、Maven等)入门
场景
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 anytools {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包并实现更新操作等。
相关文章:
DockerCompose+Jenkins+Pipeline流水线打包SpringBoot项目(解压安装配置JDK、Maven等)入门
场景 DockerCompose中部署Jenkins(Docker Desktop在windows上数据卷映射): DockerCompose中部署Jenkins(Docker Desktop在windows上数据卷映射)-CSDN博客 DockerJenkinsGiteeMaven项目配置jdk、maven、gitee等拉取代…...
Web前端开发个人技能全面剖析:四维度深度理解,五能力实战展现,六要素构建优势,七步骤持续精进
Web前端开发个人技能全面剖析:四维度深度理解,五能力实战展现,六要素构建优势,七步骤持续精进 在数字化浪潮的推动下,Web前端开发成为了互联网行业中的热门岗位,对个人的技能要求也越来越高。本文将从四个…...
如何让 uboot启动时自动执行指令?(执行“mtdparts default”命令)
让uboot启动时自动设置分区(执行“mtdparts default”命令),在uboot进入main_loop()死循环之前添加执行命令代码 run_command("mtdparts default", 0); #define MTDIDS_DEFAULT "nand0mini2440-nand" #define MTD…...
Java的集合框架总结
Map接口和Collection接口是所有集合框架的父接口: Collection接口的子接口包括:Set接口和List接口 Map接口的实现类主要有:HashMap、TreeMap、Hashtable、ConcurrentHashMap以及Properties等 Set接口的实现类主要有:HashSet、Tr…...
基于DenseNet网络实现Cifar-10数据集分类
目录 1.作者介绍2.Cifar-10数据集介绍3.Densenet网络模型3.1网络背景3.2网络结构3.2.1Dense Block3.2.2Bottleneck层3.2.3Transition层3.2.4压缩 4.代码实现4.1数据加载4.2建立 DenseNet 网络模型4.3模型训练4.4训练代码4.5测试代码 参考链接 1.作者介绍 吴思雨,女…...
我的“工具”库
#使用到的工具# { 网页版的VScode: www.vscode.dev} {网页版JSON文件编辑器: JSON Editor Online: edit JSON, format JSON, query JSON } {网页版XML文件编辑器: Best Online XML Viewer, XML Formatter, XML Editor, Analyser, Be…...
Pytorch常用函数用法归纳:Tensor张量之间的计算
1.torch.add() (1)函数原型: torch.add(input, other, alpha, out) (2)参数说明: 参数名称参数类型参数说明inputtorch.Tensor表示参与运算的第一个输入Tensor张量othertorch.Tensor或者Number表示参与运算的第二个输入Tensor张量或标量alphaNumber, optional一个可选的缩放…...
小公司要求真高
大家好,我是白露啊。 最近看到一个爽文帖,标题就是——“小公司要求真高”。 事情是这样的,一家的小公司在拿到简历之后,HR直接对楼主说:“你不合适,简历不行。” 言外之意就是嫌弃简历单薄,看…...
进阶篇02——索引
概述 结构 B树索引 在这里推荐一个可以将个各种数据结构可视化的网站:数据结构可视化 哈希索引 相关的一个面试题 分类 聚集索引和二级索引(非聚集索引) 思考题:索引思考题 创建索引语法 如果一个索引关联多个字段ÿ…...
三:SpringBoot的helloworld和使用Springboot的优点以及快速创建Springboot应用
三:SpringBoot的helloworld和使用Springboot的优点以及快速创建Springboot应用 一:HelloWorld [我们创建的是maven项目或者直接创建一个Spring] 1.1:创建一个maven 项目(1】:需要自己手动写一个SpringBoot 的启动类同…...
网络仿真方法综述
目录 1. 引言 2.仿真器介绍 2.1 NS-2 2.2 NS-3 2.3 OPNET 2.4 GNS3 3.仿真对比 4.结论 参考文献 1. 引言 网络仿真是指使用计算机模拟网络系统的行为和性能的过程。在网络仿真中,可以建立一个虚拟的网络环境,并通过模拟各种网络设备、协议和应用程…...
Android-Q升级-Camera记录
目录 代码环境 建立Android Q使用的camera仓 Camera底层适配 camx 原生接口变化 其他编译问题 chi-cdk 数据类型不匹配 case未加break的报错 libalRnBRT_GL_GBWRAPPER链接问题 vidhance编译错误 libarcsat链接问题 vendor/qcom/proprietary prebuilt_HY11 调试cam…...
Android studio如何导入项目
打开解压好的安装包 找到build.gradle文件 打开查看gradle版本 下载对应的gradle版本Index of /gradle/(镜像网站) 下载all的对应压缩包 配置gradle的环境变量 新建GRADLE_HOME 将GRADLE_HOME加入到path中 将项目在Android studio中打开进行配置 将gr…...
PHP实现一个简单的接口签名方法以及思路分析
文章目录 签名生成说明签名生成示例代码签名校验示例代码 签名生成说明 B项目需要调用A项目的接口,由A项目为B项目分配 AccessKey 和 SecretKey,用于接口加密,确保不易被穷举,生成算法不易被猜测。 最终需要确保包含签名的参数只…...
StartAI”梦想合伙人 ”招募计划
我们正火热招募AI设计师产品合伙人!如果你对AI技术充满好奇,对设计有着独特的见解和热情,亦或者你想在日常的设计工作中提高效率,无论你是电商设计师、UI设计师、建筑师、插画师等其他各类设计领域的人才。那么这就是你不容错过的…...
记录:podman安装redis
Linux系统上安装redis: podman pull redis # 拉取最新的redis版本 podman images # 查看所有本地的镜像,包括刚拉取的redis镜像mkdir -p /etc/redis/conf /etc/redis/data # 创建2个目录文件,保存redis的数据和配置文件 tou…...
TrinityCore启动报错: MySQL library version (8.0.37 id 80037) does not match
TrinityCore启动的时候报错: TrinityCore/src/server/database/Database/DatabaseWorkerPool.cpp:73 in DatabaseWorkerPool FATAL ERROR: Used MySQL library version (8.0.37 id 80037) does not match the version id used to compile TrinityCore (id 80036). S…...
代码随想三刷字符串篇
代码随想三刷字符串篇 344. 反转字符串题目代码541. 反转字符串 II题目代码54. 替换数字(第八期模拟笔试)题目代码151. 反转字符串中的单词题目代码55. 右旋字符串(第八期模拟笔试题目代码28. 实现 strStr()题目代码459.重复的子字符串题目代码344. 反转字符串 题目 链接 …...
华为支持手指关节手势的原理
华为的指关节手势有指关节截屏、指关节录屏、指关节区域截屏、指关节分屏等。该技术的实现是靠触控结合了其他一些传感器实现的。 华为的专利: 一种手势控制方法、装置、终端设备和存储介质——华为技术有限公司 专利中提到以往终端设备对于手势的识别都是基于位置和…...
Flink的简单学习五
一 动态表与连续查询 1.1 动态表 1.是flink的支持流数据Table API 和SQL的核心概念。动态表随时间的变化而变化 2.在流上面定义的表在内部是没有数据的 1.2 连续查询 1.永远不会停止,结果是一张动态表 二 Flink SQL 2.1 sql行 1.先启动启动flink集群 yarn-see…...
C++|哈希应用->位图
目录 一、概念 1.1原理分析: 1.2效率分析: 二、模拟实现 2.1位图框架初始化空间 2.2映射 2.3清零 2.4判断 2.5测试代码 三、位图扩展应用 一、概念 位图,本质上也是一个数组,通过哈希思想构造的一种数据结构,…...
Rust 实战丨SSE(Server-Sent Events)
📌 SSE(Server-Sent Events)是一种允许服务器向客户端浏览器推送信息的技术。它是 HTML5 的一部分,专门用于建立一个单向的从服务器到客户端的通信连接。SSE的使用场景非常广泛,包括实时消息推送、实时通知更新等。 S…...
Django API开发实战:前后端分离、Restful风格与DRF序列化器详解
系列文章目录 Django入门全攻略:从零搭建你的第一个Web项目Django ORM入门指南:从概念到实践,掌握模型创建、迁移与视图操作Django ORM实战:模型字段与元选项配置,以及链式过滤与QF查询详解Django ORM深度游ÿ…...
React基础教程:TodoList案例
todoList案例——增加 定义状态 // 定义状态state {list: ["kevin", "book", "paul"]}利用ul遍历list数组 <ul>{this.state.list.map(item ><li style{{fontWeight: "bold", fontSize: "20px"}} key{item.i…...
PHP超详细安装及应用
目录 所需安装包如下 一、PHP安装 依赖包安装 安装扩展工具(先将PHP所需的软件包全部拖进centos根目录下) 安装libmcrypt 安装mhash 安装mcrypt 安装PHP 二、设置LAMP组件环境(要保证mysql、http都安装完成了) Php.ini的建…...
【算法篇】大数加法JavaScript版
题目描述 以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。 数据范围:s.length,t.length≤100000,字符串仅由’0’~‘9’构成 要求:时间复杂度 𝑂(𝑛) 示例1 输入&…...
【LeetCode 128】 最长连续子序列
判断前一位数在不在字典中是这道题的关键之处,这样就可以避免重复查找,从而达到O(n) 的时间复杂度。如果没有这个判断,那么时间复杂度最坏也得是O(N^2)级别的。 1. 题目 2. 分析 合理利用数据结构。本题中使用了set来保存数组的元素&#x…...
SpringCloud-面试篇(二十六)
(1)Sentinel核心API-ProcessorslotChain...
使用__try...__except和try...catch捕获异常实例分享(附源码)
在C/C++的代码中,为了防止代码块执行的过程中产生异常导致软件崩溃,我们会给代码块添加__try...__except或try...catch保护,防止软件因为操作内部触发的异常产生崩溃。本文简单地介绍一下这两种异常捕获的使用示例。 1、概述 当软件运行过程中代码抛出异常,如果异常没有处…...
基于51单片机的简易温控水杯恒温杯仿真设计( proteus仿真+程序+设计报告+讲解视频)
基于51单片机的简易温控水杯恒温杯仿真设计( proteus仿真程序设计报告讲解视频) 仿真图proteus7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0099 1. 主要功能: 基于51单片机的简易温控水杯恒温…...
新闻cms静态网站模板下载/网络营销师官网
#禁用gpu版本TensorFlow,因为CUDA号码从0开始,这里直接让CUDA使用-1的GPU,自然就无法使用gpu了。 代码前面加入: import os os.environ["CUDA_VISIBLE_DEVICES"]"-1" import tensorflow as tf Environm…...
网站建设中什么意思/网页设计代做
函数式接口(FunctionalInterface) 只声明了一个抽象方法的接口称为函数式接口可以在接口上添加注解(FunctionalInterface)来判断此接口是否为函数式接口 /*** Java内置的4大核心函数式接口* 消费型接口:Consumer<…...
产品的seo是什么意思/seo外链发布软件
1.当自变量的数值确定后,因变量的数值也随之完全确定,这种关系属于()。 A.相关关系 B.函数关系 C.回归关系 D.无关 2.对某地区工业企业职工情况进行研究,统计总体是() A.每个工业企业 B.该地…...
中国建设教育网站/百度权重3的网站值多少
前几天群里有人问我为什么直接操作数据库发布文章,插入成功了,却显示不出来。当时在外面玩儿,没法帮他,今天还没解决这个问题,抽点时间帮他一把。 WordPress的文章存在与wp_posts数据表中,里面有很多字段&…...
wordpress调用指定id目录/百度新站关键词排名
一名程序员员在求职过程中,碰到一位薪资谈不拢就恼羞成怒的HR,并说出“估计你一辈子就是个程序员”这样的话。 从这位测试员和HR的聊天内容中,我们可以看到二者的谈薪过程。 首先,HR开出15k的薪资,测试员表示太低了&a…...
建设银行网站 个人客户/影视站seo教程
本题要求实现一个函数,找到并返回链式表的第K个元素。 函数接口定义: ElementType FindKth( List L, int K );其中List结构定义如下: typedef struct LNode *PtrToLNode; struct LNode {ElementType Data;PtrToLNode Next; }; typedef Ptr…...