自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 收藏
  • 关注

原创 Jenkins设置定时任务

勾选Build periodically, 在Schedule 中填写触发时间。配置定时任务之后,run 一下job,几秒后将job 停掉,使定时配置生效。填写完Schedule 可查看下方的提示确认触发时间。在jenkinsfile 中添加trigger的配置。方法一:(推荐)Pipeline中配置定时。H 3 * * * (每天凌晨三点触发)H 0 * * 7 (每周日0点触发)注: 第一位必须要是 H。点击Configure。方法二:页面配置定时。

2025-02-14 12:23:21 548

原创 Gerrit CICD template

根据分支名判断需要调用哪个子流程编译,如果提交是master分支就会到dev/目录下运行master.jenkinsfile。在子流程中配置key 初始化repo 和下载代码 获取patch 命令都已封装成函数写在脚本中,只需传递参数使用。例如:master.jenkinsfile、develop.jenkinsfile。dev目录下 ${Branch_name}.jenkinsfile。Gerrit-code-review 多分支流水线。主流程:Jenkinsfile。Jenkinsfile 模板。

2025-02-14 12:22:57 448

原创 git用法

git log --color --no-decorate --decorate 是否显示tag, branch。git log --oneline --left-right --cherry-mark A…git merge --ff (允许fastfoward合并,默认,自动) --no-ff(不允许)git log --merges --no-merges 只显示/不显示 合并节点。git blame -C -C -C 追踪所有commit中从其它文件拷贝过来的行。

2025-02-13 08:34:56 916

原创 repo forall用法

配置完成后到仓库下 git remote -v 验证, push地址要指向target 仓库。url 是 target 仓库,pushInsteadOf 是原始 仓库。在~/.gitconfig中添加如下配置。git checkout 推代码到target。

2025-02-13 08:34:43 296

原创 Coverity全量扫描Jenkins template

使用下列的Coverity 模板,可完成在 Jenkins 上的Coverity 全量扫描、上传全量报告到服务器端。修改模板Jenkinsfile。

2025-02-13 08:34:30 332

原创 webhook post-build template

需要在代码仓库配置webhook,需要maintianer权限。webhook配置可以参考Mr 触发的pre build。模板功能用于发版本到gallery上面。

2025-02-13 08:34:15 682

原创 多分支流水线的pre build

如果配置Scan时间为1min,那么每1min会扫描所配置的代码仓库的分支,如果在该分支上搜索到了配置的Jenkinsfile,就会在Jenkins 创建一个以分支命名的Job并编译,如下图dev,当分支上有新的提交也会触发编译。配置Jenkins job ,调用代码仓库中的Jump Jenkinsfile Jenkins job调用代码仓库中的Jenkinsfile。因多分支流水线 job 以分支为命名,ph rule不能直接触发,所以会创建一个中转的jump job来根据分支下发编译需求。

2025-02-13 08:33:54 664

原创 Webhook 触发CICD job

使用Webhook在推送代码或创建Issue时触发一个事前配置好的URL,GitLab会向设定的Webhook的URL发送一个POST请求。Jenkinsfile 名:Jenkinsfile_Pre_build_MR。https://:@ci.hobot.cc/project/配置Jenkins job ,调用代码仓库中的Jenkinsfile。配置完webhookurl后,勾选Trigger选项,如下图中的2.语句的作用参考 // 后的注释,标黄部分必须根据项目实际情况修改。

2025-02-13 08:33:36 283

原创 gitlab将MR设置为draft

添加crontab定时任务:*/5 * * * * python3 send_gitlab_mr_note.py。这个脚本是判断一个MR如果2周不更新,会每两条添加一个note,两周后自动将这个MR设置成draft状态。config.cfg格式。

2025-02-13 08:33:15 376

原创 Jenkins git credential configure

包含 -----BEGIN OPENSSH PRIVATE KEY----- 和 -----END OPENSSH PRIVATE KEY-----Jenkinsfile通常在Jenkins project的配置里面可以找到,通过project里面的 configure 按钮可以找到对应的配置。从 -----BEGIN OPENSSH PRIVATE KEY-----到 -----END OPENSSH PRIVATE KEY-----Jenkins Job内的配置 替换红框内的配置信息。

2025-02-13 08:32:58 761

原创 抓取jenkins数据入库

抓取jenkins数据入库。

2025-02-13 08:32:47 348

原创 检查C++函数是否超过400行

【代码】检查C++函数是否超过400行。

2025-02-13 08:32:36 183

原创 代码风格检查

【代码】代码风格检查。

2025-02-13 08:32:26 299

原创 Gerrit 接入门禁

脚本文件:/data/gerrit/gerrit_application/script/check_commit_msg.py。hooks文件: /data/gerrit/gerrit_application/hooks/commit-received。目前gerrit没有接入门禁检查,希望能通过门禁自动检查commit message 合规性。2.1 添加hooks(根据需要调整)2.2 添加脚本(根据需要调整)二、操作步骤(不需要重启系统)

2025-02-13 08:32:11 304

原创 Gerrit 提交关联jira

可以针对每个项目配置是否启用 Jira 集成。下载链接:https://archive-ci.gerritforge.com/job/plugin-its-jira-bazel-master-stable-3.6/模板文件:/data/gerrit/gerrit_application/etc/its/templates/link.soy。配置文件:/data/gerrit/gerrit_application/etc/its/actions.config。2.4 添加插件配置。2.5 添加插件模板。

2025-02-13 08:31:58 358

原创 Gitlab kill rebase or merged jenkins job

这个脚本是遍历MR,如果发现这个MR是需要rebase的或者已经merge了,会自动kill相应的jenkins job。添加crontab定时任务:*/5 * * * * python3 kill_gitlab_job.py。开启 kill rebase任务可能影响jenkins调试,谨慎开启。

2025-02-13 08:31:29 427

原创 Jenkins kill重复任务

脚本的功能是查看当前所有task,如果发现同一个url触发的task,就会abort之前的task,只保留最新的。

2025-02-13 08:31:14 184

原创 jenkinsfile common template

此模板可用于下载代码、编译。

2025-02-12 18:36:18 203

原创 pod内部docker时间和外部node时间不一致

可以将外部的/etc/localtime文件在pod启动的时候挂载到docker内部即可。

2025-02-12 18:35:55 144

原创 Jenkins lockable-resources插件用法

用来阻止多个构建在同一时间试图使用同一个资源。这里的资源可能是一个节点、一个代理节点、一组节点或代理节点的集合,或者仅仅是一个用于上锁的名字。如果指定的资源没有在全局配置中定义,那么它将会被自动地添加到系统中。quantity:允许运行数量。Jenkinsfile配置。

2025-02-12 18:35:41 246

原创 allure用法

allure在流水线中的语法可以点击Jenkins job configure最后的Pipline Syntax 查看。在pytest运行函数或命令行中添加: --aullure 后面加上一个路径,用来存放生成的allure 配置信息。Allure-pytest 用来在pytest执行结束后生成allure所需的配置信息。如需在CICD流程中使用,要在docker images中安装allure。这里说的本地环境是指本地开发机或 需要编译生成报告的环境。安装allure-pytest。

2025-02-12 18:35:20 280

原创 设置编译pod docker资源保护

prepare docker是参考容器,请根据实际需要设置资源保护的编译docker name去设置,例如:build,ubuntu-build等等编译容器,prepare只是拉代码的容器不用设置保护。最小占用资源和最大占用资源设置成一样值的话,就是docker在启动时会占用固定的资源。最小占用资源和最大占用资源设置成一样值的话,就是docker在启动时会占用固定的资源。设置了资源保护之后,可以最大限度的防止由于资源不足导致的docker 退出的问题。资源设置针对的是pod内的docker容器。

2025-02-12 18:35:03 229

原创 Jenkins工程挂载外部存储/缓存

在确认k8s环境的CI集群已经有对应的存储目录之后,需要该目录映射到jenkins job的pod中。cache和gradle缓存目录需要在k8s环境的CI集群的node节点中先创建。当前jenkins 环境已经挂载了一个测试的gpfs目录作为各种缓存目录使用。以下内容针对把k8s pod作为agent的jenkins job场景。这个目录可以是gpfs存储也可以是k8s 集群的node的本地目录。Job 的pod是每次运行的时候会自动挂载。需要设置ccache缓存目录。需要设置gradle缓存目录。

2025-02-12 18:34:46 233

原创 http方式触发jenkins job

关键字:buildWithParameters。test_param2 pipeline参考。test_param pipeline参考。拥有可运行job权限的用户token。可运行的jenkins job。调用不带参数的job。

2025-02-12 18:34:27 149

原创 Jenkins agent

如果不用label,直接用node name 也可以调度,写法一摸一样的,就是将label对应的值配置成node name。当前的CI集群配置的策略是 job运行的时候会启动一个pod,等job运行结束会销毁这个pod。Jenkins 通过插件和k8s集群关联,可以通过声明pod的模板,在k8s集群中创建pod。Jenkins 工作模式是master/slave模式,slave端可以是多平台多环境的。程序在运行的时候就会调度到这个demo_node这个标签对应的node节点上面。

2025-02-12 18:34:00 414

原创 BlackDuck upgrade & backup

复制/mnt/ 目录数据到/blackduck/KB_2024_02目录。以下以2月份的升级操作做参考,创建的目录是KB_2024_02。KB每个月都会更新数据,所以数据目录可以根据月份来进行区分。数据解压之后 可以根据目录中的文件提示校验大小。查看备份相关内容即可,其他步骤无需操作。解压KB_2024_02的数据。内网BD服务的 KB服务更新。内网BD服务数据定时备份。挂载数据盘到操作系统。创建新的KB数据目录。每次更新需要修改脚本。

2025-02-12 18:32:58 265

原创 Coverity本地扫描

方案一: 获取到新增文件列表后,如果本地已有缓存,可以直接进行cov-build,cov-analyze等,因为缓存机制,只会对改动文件相关的代码进行编译,扫描出来的结果也只会是参与编译的文件相关的问题。方案二:由于需要一次全量扫描并上传到coverity后台,利用缓存机制会造成非全量代码参与编译扫描,从而影响coverity后台数据的准确性,所以在做第一次全量扫描上传时候不太适合缓存机制。增量扫描是针对于单次改动的代码,根据改动后的代码,Coverity扫描得到与增量代码相关的一系列问题。

2025-02-12 18:32:28 617

原创 python脚本(一)

获取coverity projects和streams。检查第一个文件夹中的文件是否也在第二个文件夹里。按空行将文件内容划分为多个文件。比较两个文件的相似度。

2025-02-12 18:31:59 203

原创 python脚本(二)

【代码】python脚本(二)

2025-02-12 18:31:04 159

原创 python脚本(三)

查询gitlab信息。

2025-02-12 18:30:53 169

原创 python脚本(Phabricator)

自动的创建ph的仓库,并配置导入gitlab仓库数据。查询仓库并写入文件input.txt给上面脚本使用。Phabricator修改build状态。Phabricator自动accept。

2025-02-12 18:30:34 268 1

原创 Gerrit CICD

manifest仓库存放不同分支对应的jenkinsfile,master.jenkinsfile、develop。根据分支获取对应manifest.xml下载代码。每个仓库的提交触发对应的多分支流水线,多分支流水线会创建以 change_name 命名的Pre build Job。编译时将判断本次提交patch 的仓库是否在manifest.xml内,不在则退出编译,在则开始更新代码并开始编译。MANIFEST_XML:manifest的命名,例如:manifest.xml 、default.xml。

2025-02-11 22:20:37 1023

原创 Java类加载机制

比如A类的加载器是AppClassLoader(其实我们自己写的类的加载器都是AppClassLoader),AppClassLoader不会自己去加载类,而会委ExtClassLoader进行加载,那么到了ExtClassLoader类加载器的时候,它也不会自己去加载,而是委托BootStrap类加载器进行加载,就这样一层一层往上委托,如果Bootstrap类加载器无法进行加载的话,再一层层往下走。从上面贴出的Class类的构造方法源码中,我们知道这个构造器是私有的,并且只有虚拟机才能创建这个类的对象。

2025-02-11 22:19:23 1047

原创 微服务设计原则

它的出现促进了优先对象模型的服务方法,定义了服务责任和绑定的数据模型。正确的拆分对提高系统的容量有很大的帮助,失败的拆分可能会造成热点集中,得不偿失。场景说明:例如我们以前在本地内存中建立的数据缓存、Session缓存,到现在的微服务架构中就应该把这些数据迁移到分布式缓存中存储,让业务服务变成一个无状态的计算节点。它提供更快的交付服务、跨数据的可见性和具有成本效益的数据。当你修改了一个边角的小功能,但是你不敢马上上线,因为你依赖的其他模块才开发了一半,出现大量「功能耦合」,那么这个微服务就需要拆分了。

2025-02-11 22:18:26 634

原创 网卡丢包解决方法

中断是由外部设备引起的,计算机能够接受的外部信号,非常的有限,因为不可能为每一个外部的设备都定义好信号的格式,所以,计算机给外部信号,只约定了一种信号格式,这种信号就是中断信号,这套信号的接受和处理共同组成中断机制。另外,前面提到,有些网卡支持 “中断合并” 特性,这个特定对于缓解中断压力有好处,并且默认情况下这个特性是关闭的,对这个服务器的网卡,设置 “中断合并” 操作,并没有生效,设置完成后也不报错,通过 ethtool -C eth0 也依然看到是 Off 状态。首先,这个操作,并不推荐。

2025-02-11 22:17:42 691

原创 从单体架构到微服务

保留在单体中的类可能会引用已移动到服务的类,反之亦然。使用主键替换对象引用的一个问题是,虽然这是对类的一个小改动,但它可能会对期望对象引用的类的客户端产生很大的影响。如果是这样,那么你的救星来了,如果从当前窘境中脱离,实现我们的微服务,从而完成我们的升级。你需要通过将单体中的功能提取到服务,从而将单体中的功能迁移到绞杀者应用程序。因此,你可以将 Order 和 Restaurant 类视为聚合,如图所示,将Order类中对 Restaurant 的引用替换为存储主键值的restaurantId 字段。

2025-02-11 22:15:37 975

原创 高并发微服务架构设计

基于云端组建的基础资源,包括数据库、缓存和文件系统等,这些资源既可以使用云服务提供商提供的优质 RDBS 、分布式数据库和对象存储等服务,也可以自己搭建各种集群体系。这是一个典型的微服务总体架构设计图,自上往下看,可以分为前台应用层、 API 接入层、业务应用层、服务中心和基础资源层结构,每层结构都有其自身的功能和特别的设计。如图 2-4 所示,是根据阿里云设计的一个安全管理架构,通过安全防护和安全预警 对不安全的访问或可能存在的攻击进行有效隔离,从而保证系统的安全和稳定。

2025-02-11 22:14:51 1005

原创 微服务架构通信方式

有同步请求/响应通信机制,例如基于 HTTP 的 REST 或 GraphQL,或 gRPC。或者可以使用异步的、基于消息的通信机制,例如 AMQP(高级消息队列协议)或 STOMP(简单/流式面向文本的消息传递协议)。此外,还有许多不同的消息格式。改进了客户端-服务器交互,使前者能够进行精确的数据请求,并只获得他们需要的数据。基于消息的应用程序通常使用像 RabbitMQ 这样的消息代理,充当服务之间的中介。微服务的通信模式,通信是保证服务请求核心要素,选择合适的一个通信协议对系统来说可以达到事半功倍。

2025-02-11 22:14:10 1139

原创 CPU是否开启超线程判断

需要注意的是,超线程技术并不能使单个线程的性能翻倍,因为物理内核的计算单元和资源是有限的。此外,超线程的效果也取决于应用程序的性质,对于一些无法充分利用多线程的程序,开启超线程可能不会有太大的性能提升。提高虚拟化性能:在虚拟化环境中,超线程技术可以提供更多的逻辑处理器,使虚拟机能够更有效地利用硬件资源,从而提高整个系统的虚拟机密度和性能。提升并发性能:对于多任务或多线程应用程序,超线程可以显著提升性能,因为更多的线程可以同时执行,减少了任务间的切换延迟。可以根据以下原则,来判断是否支持HT技术。

2025-02-11 22:13:14 1100

原创 数据仓库介绍

在具体分析数据仓库之前先看下一下数据中心的整体架构以及数据流向。通过一个简单例子看这几层的协作关系。ODS、DW、DM协作层次图。ODS到DW的集成示例。

2025-02-11 22:12:42 608

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除