DevOps周边
文章平均质量分 57
工作学习中,涉及DevOps的文章
Victor刘
过好生活,再写一点代码
展开
-
【Jenkins插件开发7】自定义任务功能——终止僵尸任务
文章目录添加功能菜单到每个任务前后台通信啥是僵尸任务Tips: 先说个感想,要开发Jenkins插件,真的要多看其他插件的源码。添加功能菜单到每个任务先看效果,如下图。一个普通的任务,我们想在侧边栏加上自己的功能。官方给的Demo里,讲的是如何在build,也就是每次构建的侧边栏加功能菜单。其实差不多,先需要一个Action。build里加action是在perform方法中addAction,而我们需要继承一个扩展点类,在其createFor方法中返回action,具体如下:添加扩展点,注意原创 2021-11-16 10:56:39 · 1173 阅读 · 0 评论 -
【Jenkins插件开发6】调试技巧
文章目录远程Debug在window上执行shell远程Debugjava提供了远程调试的方法,网上大把教程,很简单看看就行,就两步。首先,在jenkins启动的地方,加上参数,如:java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war其次,从idea上配置remote运行,打上断原创 2021-11-12 16:26:43 · 1890 阅读 · 0 评论 -
【Jenkins插件开发5】在Slave上执行任务(获取从节点文件内容)
背景:要知道Jenkins是主从的,集群部署的时候,任务都是在从节点执行的。需求:前边我们的插件都是在Master上执行的,怎么获取从节点Worksapce中的文件呢?或者如何在从节点执行任务呢?文章目录获取从节点的VirtualChannelBuilder实现Serializable接口实例:获取从节点Workspace下文件的内容获取从节点的VirtualChannelVirtualChannel是Jenkins的类,其中有V call(Callable<V,T> callable)原创 2021-11-12 08:30:00 · 1036 阅读 · 0 评论 -
【Jenkins插件开发4】自定义后台接口
知道怎么改网页了,那ajax想调用后端接口,接口怎么写?步骤如下:继承Plugin类package io.jenkins.plugins.rest;import hudson.Plugin;import hudson.model.Api;public class HelloPlugin extends Plugin { public Api getApi() { return new HelloApi(this); }}实现Api类public cl原创 2021-11-11 14:40:50 · 695 阅读 · 0 评论 -
【Jenkins插件开发3】配置全局参数
文章目录1. 扩展点类2. 前端页面3. 配置入口4. 配置页的部分5. 使用方法背景:插件功能写好了,我们肯定回想把url name password之类的东西,独立于代码之外,可配置。就像Spring的application.yml一样,这么做:1. 扩展点类写一个类继承GlobalConfiguration,使用扩展点注解@Extension@Extensionpublic class HelloConfig extends GlobalConfiguration { public原创 2021-10-29 08:00:00 · 451 阅读 · 0 评论 -
【Jenkins插件开发2】前后台数据传输基础
文章目录如何保存配置如何显示后台数据如何在页面执行js如何提示错误,并中断build如何保存配置上一篇HelloWorld生成的项目中默认包含了一个Build的扩展,Jenkins任务的配置页可以看到如下图。我们复制一下url,修改configure为``````config.xml。我们按提示输入名字"Victor刘",然后保存,再打开刚才复制修改的xml地址。如下图:这些都是基本的,过往的文章都说了,我就不多说了,我说说原理:这样的扩展包括一个jelly页面和后台类,后台类的变量对应一个原创 2021-10-27 03:00:00 · 388 阅读 · 0 评论 -
【Jenkins插件开发1】HelloWorld
文章目录第一部分:照葫芦画瓢1. 首先使用命令在本地创建项目骨架2. 用idea打开并启动项目第二部分:遇到的问题1. mvn命令创建archetype失败2. maven依赖下不下来3. 启动报错4. 怎么修改Jenkins版本第一部分:照葫芦画瓢1. 首先使用命令在本地创建项目骨架交互方式mvn archetype:generate -Dfilter=io.jenkins.archetypes:或非交互方式(可以修改-DartifactId后的项目名)# mvn archetype:g原创 2021-10-25 16:55:53 · 514 阅读 · 0 评论 -
cnpm和sonar让我的Jenkins内存泄漏(OOM)了
错误信息:FATAL: Remote call on slave-10-133-13-51 failedjava.lang.OutOfMemoryError: GC overhead limit exceeded问题如下图:描述:今天换了台机器跑jenkins,nodejs项目,用yarn安装依赖包,结果死活下不下来,于是我换成了cnpm,可以。但是再用sonar扫描后,最后提示成功了,sonar上也看到质检结果了,但是却提示OOM了。解决过程:去虚拟机jps jstat命令查看jenk原创 2021-09-23 17:28:48 · 572 阅读 · 0 评论 -
[Jenkins备份]-集团使用Jenkins后,如何备份?
背景:在集团统一使用一个Jenkins后,数据变得重要,不得不需要备份。问题:Jenkins的数据都在Jenkins_home下,但是此文件下还会存放构建记录,和maven构建的jar包,如果直接备份Jenkins_home,体积太大。解决方案:rsyn同步文件 + crontab定时器首先利用rsyn同步功能替代cp,来复制一份jenkins_home,rsyn可以通过eclude参数来排除不想要的文件夹。选一个夜深人静的时间,半夜2点,crontab是linux上的定时装置,来执行我的备份原创 2021-09-16 15:39:57 · 452 阅读 · 0 评论 -
[Jenkins租户隔离]-多团队如何使用一个jenkins(2/2)——凭证
问题:多团队使用一个Jenkins时,必然有团队隐私的凭证,怎么做呢?答案是:使用文件夹创建团队自己的上下文。解析:了解一个Jenkins的概念,即上下文。下面引用凭证插件的说明文档:Jenkins 中的上下文Jenkins 实现了一个分层的上下文模型。Jenkins 中的每个上下文都有一个父上下文链,最终通向根上下文。根上下文是 Jenkins 本身。插件可以定义额外的子上下文,例如Folders plugin添加文件夹上下文,但默认情况下 Jenkins 从根上下文提供以下子上下文:原创 2021-08-11 09:39:58 · 311 阅读 · 0 评论 -
[质量检查jekins+sonar+jacoco]一次搞定所有Java项目的覆盖率扫描
须知:编写java代码后,通过单元测试可以了解代码覆盖率等指标maven可以配置jacoco对项目进行扫描,生成报告文件jacoco.xmlsonar可以识别jacoco.xml文件,对报告进行更好的UI展示,跟踪质量晋升曲线等。起因:使用jacoco插件来生成mvn test报告,需要在每个项目代码中增加配置。其中的配置是有共性的,不需要每个项目的开发者都掌握配置方法,这个重复工作可以交给项目管理来做,Jenkins单任务,流水线之类都可以。计划:我们主要通过jenkins的Sh原创 2021-07-19 17:05:08 · 1589 阅读 · 1 评论 -
jmockdata——java单元测试利器
单元测试时,总需要生成一些测试数据,String、Int、float等,甚至是复杂对象。<dependency> <groupId>com.github.jsonzou</groupId> <artifactId>jmockdata</artifactId> <version>4.2.0</version></dependency>jmockdata是一个第三方的jar包,我最近使原创 2021-04-19 17:49:01 · 1452 阅读 · 0 评论 -
[如何验证Git密码]你的Git密码输错了吗
在做DevOps项目时,有从其他git地址导入项目的需求。如果是非public的项目需要用户名和密码,然而gitlab并未提供相关验证方法。其实Git本身就提供了验证的方法,这隐含在了Git的http协议中。git clone时,client端需要先获取服务器的一个静态文件,然后再进行具体操作。也就是说,我们通过一个GET请求,根据返回状态码即可区分是否有权限且用户名密码正确。HTTP GET请求如下:// name为用户名,pwd为密码// @后面是git地址// 静态文件的地址实际为 /原创 2021-05-08 09:43:43 · 1664 阅读 · 1 评论 -
Git识别项目的语言类型,及文件占比。
最近在做代码分析,想知道一个git仓库的语言类型,相信大家都见过这个:图中列出了不同的文件类型在代码仓中的占比,那如何实现这个功能呢?结果研究,我写了一个脚本如下:# git查询文件后缀的数量,用以区分项目使用的语言。# 列出git的pack文件索引# git rev-list --objects --all \# 只输出第二列文件名# |awk '{print $2}' \# 排序去重# |sort|uniq \# 按照‘/’分割并取出最后一个,即文件名# |awk -F/ '{原创 2021-07-05 15:50:39 · 1650 阅读 · 2 评论 -
Jenkins执行Shell时隐藏密码docker登录密码
在CI、CD过程中,有时需要将Jenkins的构建日志展现给用户,此时涉及到docker login等命令时,会用到密码。如果想要隐藏个人用户的密码,那改怎么办呢?介绍一个Jenkins插件:MaskPasswords使用方法如果时全局账号,密码,设置比较方便,看文档即可。还有一个更通用、强大的功能,那就是正则表达式:以docker login为例docker login -u username --password 123如上命令,123密码会在日志中暴露,经过处理,我们理想的结.原创 2021-05-31 18:18:07 · 1820 阅读 · 0 评论 -
[Jenkins租户隔离]-多团队如何使用一个jenkins(1/2)——权限策略
一、背景需求是Job/Item隔离。即各个团队可以创建自己的job/item,别人无法看到。ps:我全文用了Job一词,在Jenkins中其实是Itemps:自己研究了几天,从一开始以为Jenkins权限支持的不好,到 Role-based Authorization Strategy插件,再到LDAP、组权限等,其实发现最简单的就在眼皮下。二、步骤安装插件 Matrix Authorization Strategy Plugin进入 Configure Global Security原创 2021-08-05 11:16:27 · 866 阅读 · 0 评论