jenkins 安装插件失败_Jenkins 自动化安装插件

b8c1b2b326301086b0f3ab0348d6c651.png

手工安装 Jenkins 插件的方法

通常,我们有两种方法安装 Jenkins 插件。第一种方法是到 Jenkins 插件管理页面搜索插件,然后安装。第二种方法是上传 Jenkins 插件的 hpi 文件安装。这两种方法能满足大多数人的需求。

第一种方法,如下图所示: 9b057f967c1ce67e4b291714e0b2a125.png

第二种方法,如下图所示: 0009dd8460e1842dc66aa216f13e3323.png

但是对于需要保证 Jenkins 稳定或在 Jenkins 上进行二次开发的同学来说,以上方法是无法满足需求的。

第一种方法是无法指定插件的版本。第二种方式必须自己找到该插件的依赖树,然后根据依赖关系一个个地安装。是的,手工上传插件的这种方法,Jenkins 是不会自动下载依赖的。

还有,就是这两种方式都无法实现批量安装。

自动安装插件的方法

那么,有什么方法能指定插件的版本,又能自动下载它的依赖,还能批量下载呢?

幸运的是,Jenkins 的 Docker 镜像的代码仓库里的 install-plugins.sh 脚本已经实现。只不过需要我们拿过来小小修改才能使用。笔者修改后创建了相应的代码仓库:jenkins-install-plugins-shell 。链接在文章末尾。

以下是 jenkins-install-plugins-shell 的使用方法:

  1. 将代码 clone 到 JENKINS_HOME 目录中。

cd $JENKINS_HOME
git clone https://github.com/zacker330/jenkins-install-plugins-shell.git
cd jenkins-install-plugins-shell
  1. 在 plugins.txt 中加入希望安装的插件 在 jenkins-install-plugins-shell 目录中,有一个 plugins.txt 文件,在文件中写入希望安装的插件及版本号。例如:

ansible:1.0
powershell:1.3
  1. 执行安装

 # Jenkins War 的路径,用于分析export JENKINS_WAR_PATH=<Jenkins war文件的路径>
chmod +x install-plugins.sh jenkins-support
./install-plugins.sh < plugins.txt
  1. 重启 Jenkins install-plugins 本质上做的事情就只是将插件从云端下载到 JENKINS_HOME 下的 plugins 目录中。要使安装的插件生效,还需要重启 Jenkins。

关于 Jenkins 插件的名称

Jenkins 插件有两个名称。一个叫 display name,一个叫 short name。比如 Ansible 插件的 disply name 为 Ansible plugin,short name 为 ansible。

如何知道一个插件的 short name 呢?可以在 Jenkins 插件官网上找到,比如 Ansible 的:

5e1ecb1394e8f0cfadbf4271aa64e936.png

在 plugins.txt 中使用的是 short name。

总结

笔者为什么一定要确定 Jenkins 插件的版本?是因为插件的版本会影响 Jenkins 流水线的可靠性。所以,笔者才会这么在意 Jenkins 插件的版本。

附录

  • Jenkins 官方 Docker 镜像中的自动化插件安装脚本:https://github.com/jenkinsci/docker/blob/master/install-plugins.sh

  • 笔者修改后的自动化插件安装脚本: 

    https://github.com/zacker330/jenkins-install-plugins-shell


相关阅读(点击查看原文,与我们互动):

蓝绿部署和金丝雀部署

使用 Jenkins X 渐进式交付

什么是 CI/CD?

Jenkins 插件开发之旅~上

Jenkins 插件开发之旅~下

ff7cf8e67d8c354b118d4fd6be7228ab.png

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

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

相关文章

anaconda下python中matplotlib画图无法显示中文

第一步&#xff1a;在自己电脑里选择喜欢的字体&#xff0c;搜索位置为C:\Windows\Fonts&#xff0c;我选择的是SimSun 第二步 查找Matplotlib默认字体目录 打开anaconda prompt,输入python&#xff0c;接下来进入查找过程 查找代码如下 import matplotlib print(matplotlib.…

云服务器怎么安装声音驱动_Windows服务器怎么装虚拟声卡驱动呢

小秋哟大佬&#xff1a;搞了个腾讯云的Windows学生鸡小秋哟大佬&#xff1a;[img]%5Burl[/img]图片上这几个装了好像没啥用…….小秋哟大佬&#xff1a;搞了个腾讯云的Windows学生鸡小秋哟大佬&#xff1a;搞了个腾讯云的Windows学生鸡小秋哟大佬&#xff1a;想挂着刷刷酷狗听歌…

Python编程及高级数据分析

一、介绍&#xff08;11月22日&#xff09; 小问题找函数 大问题找包 python数据分析常用的包 数据库实现的功能的在panda包里面找 其中M\S\P是数据可视化工具 深度学习使用的包是pytorch(facebook支持) 中文的nlp&#xff1a;Jieba、pynlpir 英文的nlp:NLTK 学python前的准…

helm安装_Helm部署和体验jenkins

运行在Kubernetes上的Jenkins下图来自rancher官方博客&#xff0c;在kubernetes环境下&#xff0c;jenkins任务被交给各个pod执行&#xff0c;这些pod在需要时被创建&#xff0c;任务结束后被销毁&#xff0c;这样既能合理利用资源&#xff0c;又能给每个任务提供一致的干净的初…

【无标题】【一周安全资讯1223】一图读懂《工业和信息化部办公厅关于组织开展网络安全保险服务试点工作的通知》;15亿条纽约房产记录泄露

要闻速览 1、一图读懂《工业和信息化部办公厅关于组织开展网络安全保险服务试点工作的通知》 2、国家数据局《“数据要素”三年行动计划 (2024—2026年)》公开征求意见 3、中国信息通信研究院发布《公共数据授权运营发展洞察 (2023年)》 4、15亿条纽约房产记录泄露&#xff0c…

自定义键盘码_无线+矮轴≤299?ikbc S200 2.4G 机械键盘测评

早在18年初&#xff0c;Cherry就发布了适用于笔记本及超薄键盘的全新轴体MX Low Profile&#xff0c;也就是为人所熟知的“矮轴”。之后Ducky、酷冷至尊、FILCO、ikbc等一众厂商也先后推出了搭载Cherry矮轴的超薄机械键盘&#xff0c;不过市场表现一直有些不温不火。在码呆看来…

simpledateformat格式_如何使用SimpleDateFormat?

SimpleDateFormat是一种比较常用的时间类&#xff0c;可以实现对时间按照一定的字符串格式进行处理。DateFormat类的作用把时间对象转化成指定格式的字符串。反之&#xff0c;把指定格式的字符串转化成时间对象。DateFormat是一个抽象类&#xff0c;一般使用它的的子类SimpleDa…

Java接口的定义和实现

定义接口 Java 接口的定义方式与类基本相同&#xff0c;不过接口定义使用的关键字是 interface&#xff0c;接口定义的语法格式如下&#xff1a; [public] interface interface_name [extends interface1_name[, interface2_name,…]] {// 接口体&#xff0c;其中可以包含定义…

李沐老师的《动手学深度学习PyTorch》中的d2lzh_python包的安装

关于RNN章节 以及模型章节等会使用到d2l的python包 cmd下载地址&#xff1a;pip install d2l -i https://pypi.doubanio.com/simple/

人体轮廓_人体艺术:赏世界著名的女人体油画:身体轮廓

阅读本文前&#xff0c;请您先点击上面的“十点姐姐”&#xff0c;再点击“关注”&#xff0c;这样您就可以继续免费收到文章了。每天都有分享&#xff0c;完全是免费订阅&#xff0c;请放心关注。 …

c语言未声明的标识符什么意思_C语言中%d和%f是什么意思啊?

%d表示输入或输出十进制有符号数&#xff1b;%f表示输入或输出浮点数&#xff08;float&#xff0c;四字节表示&#xff09;&#xff1b;在C语言中输出不同数据时需要用到不同的格式字符&#xff0c;%d是用来输出十进制整型数据的实际长度输出&#xff0c;%f是以小数形式输出单…

李沐老师《动手学深度学习》课程总结1

数据操作 1、 创建数组&#xff1a;形状、数据类型、数据值 2、 访问元素&#xff1a;[1, 2] 访问第二行第三列 [1, :] 访问第二行 [1:3, 1:] 子区域&#xff1a;第二行至第四行前一行到第二列之后所有 [::3, ::2] 子区域&#xff1a;每三行一跳 第零、三…行拿出; 第零、二…列…

Java中抽象类和接口的区别?

抽象类和接口的概念 抽象类 抽象类必须用 abstract 修饰&#xff0c;子类必须实现抽象类中的抽象方法&#xff0c;如果有未实现的&#xff0c;那么子类也必须用 abstract 修饰。抽象类默认的权限修饰符为 public&#xff0c;可以定义为 public 或 procted&#xff0c;如果定义…

gimp 抠图_gimp抠图教程:gimp快速实现抠图效果

摘要&#xff1a;将图像中需要的部分从画面中精确地提取出来&#xff0c;我们就称为抠图&#xff0c;抠图是后续图像处理的重要基础&#xff0c;关于gimp的快速抠图技巧你们知道吗?将图像中需要的部分从画面中精确地提取出来&#xff0c;我们就称为抠图&#xff0c;抠图是后续…

docker build -t_在Docker环境构建、打包和运行Spring Boot应用

为何考虑采用Docker&#xff1f;Docker是提供用户构建镜像的一种容器化技术&#xff0c;所构建的镜像包含了主要的应用程序和运行应用所需的所有依赖项。该镜像可在任何虚拟机或物理机器上的Docker容器上运行。它的强大之处在于允许用户在开发、测试、预生产和生产中运行同样的…

Java内部类是什么?

在类内部可定义成员变量和方法&#xff0c;且在类内部也可以定义另一个类。如果在类 Outer 的内部再定义一个类 Inner&#xff0c;此时类 Inner 就称为内部类&#xff08;或称为嵌套类&#xff09;&#xff0c;而类 Outer 则称为外部类&#xff08;或称为宿主类&#xff09;。 …

mysql 删除表记录的 存储过程命令_用SQL语句删除一个数据库的所有表和所有存储过程...

如果数据库里有很多表和存储过程&#xff0c;要用手动鼠标右键一个个删除是很麻烦的&#xff0c;用SQL语句来删除就方便很多了删除所有的表&#xff1a;如果由于外键约束删除table失败&#xff0c;则先删除所有约束&#xff1a;--/第1步**********删除所有表的外键约束********…

有意思的编程面试问题

第一&#xff1a;有12个外观完全一样的球&#xff1b;   第二&#xff1a;11个是好球&#xff0c;重量相同&#xff1b;   第三&#xff1a;有一个球是“坏球”&#xff0c;重量与其他11个球异常&#xff0c;但不知偏轻偏重&#xff01;   第四&#xff1a;有一架天平&am…

MOOC-人工智能实践:Tensorflow笔记4.2自制数据集txt文件和数据集不匹配解决办法(读取文件名并提取内容并合并原始内容与提取内容)

1、读取文件名称生成txt文件 # P01 批量读取文件名&#xff0c;并将读取的文件名保存到指定路径下的txt中&#xff08;带.*** 后缀&#xff09;import os def ListFilesToTxt(dir, file, wildcard, recursion):exts wildcard.split(" ")files os.listdir(dir)for …

file数组 删除文件_java编程IO基础之一:File类

在整个java.io包中&#xff0c;File类是唯一的一个与文件本身操作有关的类&#xff0c;既可以执行文件的创建、删除、重命名&#xff0c;取得文件大小和修改日期。File的构造函数&#xff1a;public File(String pathname) 给定一个要操作文件的完整路径。public File(File par…