docker安装低版本的jenkins-2.346.3,在线安装对应版本插件失败的解决方法


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、网上最多的默认解决方法
    • 1、jenkins界面配置清华源
    • 2、替换default.json文件
  • 二、解决低版本Jenkins在线安装插件问题
    • 1.手动下载插件并导入
    • 2.低版本jenkins在线安装对应版本的插件
      • 2.1.安装nginx
      • 2.2.添加插件转发配置文件
    • 2.3.jenkins界面配置Update Site
    • 2.4.报错解决
    • 2.5.认证失败报错解决方法
    • 2.6.插件下载验证
  • 总结


前言

这几天在强化jenkins知识过程中,自己基于docker搭建了2.346.3版本的Jenkins,但是在jenkins启动后,却发现不论是选择自定义插件安装还是默认插件安装都会下载失败。网上找了很多办法说是将原来的updates.jenkins.io源替换为国内的清华源,但是尝试后发现,替换为清华源之后,加载的插件都是最近版本的jenkins插件,而不是我指定的2.346.3jenkins版本的插件。所以为了不使用手动下载插件在导入这种笨办法(最开始使用这种方法,要下载各种依赖插件,太痛苦了~~~~),才有了这篇文章。


提示:以下是本篇文章正文内容,下面案例可供参考

一、网上最多的默认解决方法

1、jenkins界面配置清华源

配置方法如下所示,配置后不需要重启jenkins
清华源地址: https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

注意事项:该方法配置后,jenkins加载的可安装插件是最新版本的jenkins插件,而不是低版本的jenkins插件。仍然导致低版本的jenkins不能正常安装对应的插件。如果你的jenkins是最新版本,则直接配置这个源即可使用

在这里插入图片描述在这里插入图片描述

2、替换default.json文件

网上还有一种常见的解决方法就是手动替换default.json文件并重启Jenkins,同样该方法也只适用于最新版本的jenkins,而不适用于低版本jenkins

[root@jenkins updates]#  sed -i 's#updates.jenkins.io/download/plugins#mirrors.tuna.tsinghua.edu.cn/jenkins/plugins#g' /export/jenkins/updates/default.json
[root@jenkins updates]#  sed -i 's#www.google.com#www.baidu.com#g' /export/jenkins/updates/default.json

因此,网上这两种方法都是基于最新版本jenkins 的解决方案,那么低版本的jenkins安装插件怎么解决呢?难不成就只能采用手动下载导入的笨方法了吗?

二、解决低版本Jenkins在线安装插件问题

卖个关子,在此前,先给大家看一下手动下载导入插件的痛点

1.手动下载插件并导入

jenkins插件下载地址:https://plugins.jenkins.io/

在这里插入图片描述
此处以blueocean插件为例,展示手动下载的通点,太痛辣
在这里插入图片描述
看下面这个图,你就下载吧宝贝,这一个插件就依赖这么多其他插件,而且其他插件还可能依赖别的插件,你要是手动下载安装,估计心里疯狂mmp
在这里插入图片描述
再看jenkins手动导入hpi结尾插件,它T*M还只能一次导入一个,还不能多个导入,如果导入一个A插件进行安装,这个A插件还依赖别的B插件的话,那么sorry,你只能去先下载安装B插件,如果B插件依赖C插件,不好意思,俄罗斯套娃已开始,你就花10几分钟找插件下插件吧
在这里插入图片描述

2.低版本jenkins在线安装对应版本的插件

终于解决啦

2.1.安装nginx

在jenikins机器或者别的机器进行安装nginx,确保和jenkins机器网络通即可。此处为了节省资源,我在jenkins机器上进行了安装

[root@jenkins ~]# yum -y install nginx

2.2.添加插件转发配置文件

为了省事直接修改nginx.conf主配置文件,对server块部分添加一些代码

    server {listen       80;#       listen       [::]:80;server_name  192.168.56.120;root         /usr/share/nginx/html;# Load configuration files for the default server block.include /etc/nginx/default.d/*.conf;location / {sub_filter_once off; #关闭对页面中每个匹配项只替换一次的限制,使得所有匹配项都可以被替换。sub_filter_types *; #设置 sub_filter 替换的内容类型,这里使用 * 表示所有类型的内容都会被替换。sub_filter 'https://updates.jenkins.io' 'http://192.168.56.120';#在页面内容中,将 https://updates.jenkins.io 替换成 http://192.168.56.120。#这是为了将 Jenkins 的更新地址改为本地 IP 地址,避免直接访问外部地址。proxy_pass https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/;}location /download/plugins {proxy_pass http://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins; #清华源插件地址}
上述 Nginx 配置主要用于反向代理和处理 Jenkins 更新和插件的请求:1、将 / 路径下的 Jenkins 更新 URL 替换为本地服务器的 IP 地址,并转发到清华镜像。2、将 /download/plugins 路径下的插件下载请求代理到清华镜像站点。3、因为Jenkins源站点是https协议的,jenkins 会校验SSL证书有效性,因此使用sub_filter模块将update-center.json返回的内容修改为http协议的

在这里插入图片描述

2.3.jenkins界面配置Update Site

在这里插入图片描述
为什么配置这个地址http://192.168.56.120/dynamic-2.346/update-center.json?

1、https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/ 
这是清华源更新插件地址,这个目录下包含多个版本的插件,如下图1所示2、在对应的插件版本目录下,有一个update-center.json文件,这个文件包含了对应插件的下载地址,如下图2所示
补充:1、dynamic-2.346代表安装的Jenkins是非LTS版本 2.346代表jenkins版本号2、dynamic-stable-2.346代表安装的是jenkins的LTS版本因此,在选择时注意这两个区分。如上述,我配置的是dynamic-2.346。

在这里插入图片描述
在这里插入图片描述

2.4.报错解决

配置了上述地址并提交后,点击Jenkins插件管理-->可用插件会报如下错误
在这里插入图片描述
查看jenkins日志,有如下报错,认证校验失败的错误
这是因为修改了默认的updater-center.json的内容.Jenkins会对其进行校验,校验逻辑在源码core/src/main/java/hudson/PluginManager.java中checkUpdateServer方法中可以看到
EVERE hudson.PluginManager#doCheckUpdatesServer: 尝试检查更新中心1次后失败。最后的异常是:Signature verification failed in update site ‘default’ (显示详情)

java.security.cert.CertificateExpiredException: NotAfter: Thu May 02 22:40:15 CST 2024
at sun.security.x509.CertificateValidity.valid(CertificateValidity.java:277)
at sun.security.x509.X509CertImpl.checkValidity(X509CertImpl.java:677)
at sun.security.provider.certpath.BasicChecker.verifyValidity(BasicChecker.java:190)
at sun.security.provider.certpath.BasicChecker.check(BasicChecker.java:144)
at sun.security.provider.certpath.PKIXMasterCertPathValidator.validate(PKIXMasterCertPathValidator
`

2.5.认证失败报错解决方法

	解决方法:在jenkins启动中添加hudson.model.DownloadService.noSignatureCheck=true启动参数即可该参数对应的源码位置在core/src/main/java/hudson/model/DownloadService.java signatureCheck方法

dockers启动的Jenkins添加这个启动参数

[root@jenkins ~]# docker run -itd --restart=always --name jenkins -p 18080:8080 -p 18090:50000 \
-v /export/jenkins:/export/jenkins \
-v /var/run/docker.sock:/var/run/docker.sock  \
-v /usr/bin/docker:/usr/bin/docker \
-e JAVA_OPTS=-Dhudson.model.DownloadService.noSignatureCheck=true \ #指定参数
--memory 4G \
jenkins20241103:latest

非容器化启动的jenkins
在 vim /etc/sysconfig/jenkins中添加以下配置,然后重启Jenkins
在这里插入图片描述

2.6.插件下载验证

在此之前,已经安装了role-stragy插件,如下所示
在这里插入图片描述
验证: 在线安装ansible插件、pipeline插件
在这里插入图片描述
在线安装过程
在这里插入图片描述
在这里插入图片描述


总结

终于在几次试验后,解决了低版本Jenkins在线下载插件的问题。终于不用再因手动下插件而烦恼了~~~,同时希望这篇文章能帮助到有类似问题的求助者们!!!

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

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

相关文章

spark-on-k8s 介绍

spark-on-k8s 介绍 摘要 最近一段时间都在做与spark相关的项目,主要是与最近今年比较火的隐私计算相结合,主要是在机密计算领域使用spark做大数据分析、SQL等业务,从中也了解到了一些spark的知识,现在做一个简单的总结&#xff…

React教程(详细版)

React教程(详细版) 1,简介 1.1 概念 react是一个渲染html界面的一个js库,类似于vue,但是更加灵活,写法也比较像原生js,之前我们写出一个完成的是分为html,js,css&…

鸿蒙开发:自定义一个车牌省份简称键盘

前言 之前针对车牌省份简称键盘,在Android系统中搞过一个,当时使用的是组合View的形式,考虑到最后一个删除按钮单独占两个格子,做了特殊处理,单独设置了权重weight和单独设置了宽度width,既然鸿蒙系统的应…

电脑蓝屏不要慌,一分钟教你如何解决蓝屏问题

目录 一、检查硬件连接 二、更新驱动程序 三、修复操作系统错误 四、使用系统还原 电脑蓝屏是许多计算机用户经常遇到的问题之一。它可能由硬件故障、驱动程序问题、操作系统错误等多种原因引起。当电脑出现蓝屏时,很多人会感到困惑和焦虑。本文将向您介绍一些常见的解决方…

推荐!一些好用的VSCode插件

那些好用的VSCode插件 前言1、Auto Close Tag(自动补全标签)⭐2、Auto Rename Tag(自动更新标签)⭐3、Chinese(简体中文)⭐4、Git History (查看 Git 提交历史)⭐5、GitLens (增强 Git )6、open in browser (快速预览 )⭐7、Vetur ( Vue相关 )⭐8、Beautify ( 美化代码 )9、bac…

任务调度实现

我的后端学习大纲 XXL-JOB大纲 1、什么是任务调度 1.以下面业务场景就需要任务调度来解决问题: 某电商平台需要每天上午10点,下午3点,晚上8点发放一批优惠券某银行系统需要在信用卡到期还款日的前三天进行短信提醒某财务系统需要在每天凌晨0:10分结算前…

【SQL50】day 1

目录 1.可回收且低脂的产品 2.寻找用户推荐人 3.使用唯一标识码替换员工ID 4.产品销售分析 I 5.有趣的电影 6.平均售价 7.每位教师所教授的科目种类的数量 8.平均售价 1.可回收且低脂的产品 # Write your MySQL query statement below select product_id from Products w…

【数据结构与算法】第9课—数据结构之二叉树(链式结构)

文章目录 1. 二叉树的性质2. 链式结构二叉树3. 二叉树链式结构的4种遍历方式4. 二叉树节点个数5. 二叉树的叶子节点个数6. 二叉树第k层节点个数7. 二叉树的高度/深度8. 二叉树查找值为x的节点9. 二叉树的销毁10. 判断是否为完全二叉树11. 二叉树练习题11.1 单值二叉树11.2 相同…

ONLYOFFICE 8.2深度体验:高效协作与卓越性能的完美融合

📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀ONLYOFFICE 8.2 🔍引言📒1. ONLYOFFICE 产品简介📚2. 功能与特点🍁协作编辑 PDF🍂…

一文带你了解,全国职业院校技能大赛老年护理与保健赛项如何备赛

老年护理与保健,作为2023年全国职业院校技能大赛的新增赛项,紧密贴合党的二十大精神,致力于加速健康与养老产业的蓬勃发展,并深化医养康养结合的服务模式。此赛项不仅承载着立德树人的教育使命,更通过竞赛的引领作用&a…

HT71778 实时音频信号跟踪的18V,15A全集成同步升压转换器

1、特点 实时音频信号跟踪的电源供电 SN 短接地,VIN2.7~4.5V, VouT5V~12V RsN(to GND) 100k, ViN 2.7~8.5V, VouT 9V~15V SN 悬空,VIN 2.7~8.5V, VouT9V~18V 可编程峰值电流:15A 高转换效率: 93%(VIN7.4V, VoUT15.5V, IouT 1.5A) 低关断功耗,关断电流1uA 可调节的开…

二叉树 最大深度(递归)

给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3示例 2: 输入:root [1,null,2] 输出…

【Spring IoCDI】路径扫描,DI依赖注入

【路径扫描】 Spring注重路径,约定大于配置 例如,这个路径下,Spring默认会去扫描下【com.baiye.ioc】下面所有类中加了五大注解的路径,不在这个路径下是默认不会去扫描的 即:Spring默认的扫描路径是——启动类所在的目录及其子目…

JavaScript中变量的基础知识(超详细)

1.变量 1.1目标 理解变量是计算机存储数据的容器 变量:变量是计算机用来存储数据的容器(盒子)作用:记录计算机数据的不同状态注意:变量不是数据本身,它们仅仅是一个用于存储数值的容器。可以理解为一个用…

iPhone 17 :全系 120HZ,等等党终于等到了

苹果首次在 iPhone 13 Pro 上采用120 HZ 自适应高刷,通过屏幕体验,来拉开 Pro 和标准版的定位差距,这个策略持续到 iPhone 16。 不过从 iPhone 17 开始,情况要开始转变了。 根据外媒ETNews 的透露,苹果明年推出的四款…

【系统配置】信创终端操作系统如何彻底禁用ssh _ 统信 _ 麒麟 _ 方德

原文链接:【系统配置】信创终端操作系统如何彻底禁用ssh | 统信 | 麒麟 | 方德 Hello,大家好啊!今天带来一篇关于如何在信创终端操作系统中彻底禁用SSH的文章。在某些安全性要求较高的环境中,禁用SSH服务可以防止未经授权的远程访…

Ubuntu 18在线安装Docker 实战 2024年11月

Ubuntu 18在线安装Docker 实战 厂商:华为云 系统:Ubuntu 18.04 安装前原本以为国内直接安装会有魔法失效的问题,没有考虑直接用Docker 官方指引,找了各种帖子,各种国内源,结果一堆错,还把系统…

C语言-fseek函数

🌏个人博客:尹蓝锐的博客 希望文章能够给到初学的你一些启发~ 如果觉得文章对你有帮助的话,点赞 关注 收藏支持一下笔者吧~ fseek函数 int fseek ( FILE * stream, long int offset, int origin ); 重新定位流位置指示…

排序算法之插排希尔

算法时间复杂度(最好)时间复杂度(平均)时间复杂度(最差)空间复杂度插入排序O(n)O(n^2)O(n^2)1希尔排序O(n)O(n^1.3)O(n^2) 1 1.插入排序 玩牌时,每得到一张,就要把它插入…

babylonjs shader学习之shadertoy案例四

代码 const onSceneReady (scene: Scene) > {(scene.activeCamera as ArcRotateCamera).beta 1.185793134378305;const light new HemisphericLight(light, Vector3.Down(), scene);light.intensity 1;const plane MeshBuilder.CreatePlane(ground, { width: 10, heig…