普元Devops学习笔记-devops构建后jenkins流水线sleep 1hr 23min的问题

news2024/9/30 21:26:27

1 背景

java项目命名为 simple2。 命名有点随意,不要在意这个,不重要。

simple2的代码维护在gitlab中。

simple2项目有两个git分支: dev 和 master 

开发中的代码在 dev分支,dev分支需要合并(merge)到master主分支。

基于此目的,在普元devops中创建一个构建,该构建的任务列表中,只有一个:代码库分支合并。

任务的配置如下:

执行该构建,会在jenkins中创建一个临时job,该job的类型是流水线,该流水线会创建一个gitlab的分支合并请求。

正常情况下,devops的构建执行成功,jenkins的临时job也执行成功,然后jenkins的临时job会自动删除,gitlab中会看到simple2项目下多出来一个合并请求。

相关代码管理员在gitlab中手动对该合并请求进行审批,并确认合并。

至此,分支合并完成。

2 环境说明

普元Devops: Devops 6.6_GA

Gitlab: 基于Docker安装,Gitlab镜像为 gitlab/gitlab-ce:latest 。具体的gitlab基于Docker安装的细节就不赘述了。

Jenkins: 普元devops安装介质中提供的Jenkins。 根据我的经验,可以自行从官网下载Jenkins,并非一定要使用普元devops提供的jenkins版本。

关键点是Jenkins启动的时候需要增加若干参数

-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true

-Dorg.jenkinsci.plugins.scriptsecurity.scripts.ScriptApproval.ADMIN_AUTO_APPROVAL_ENABLED=true

-Dorg.jenkinsci.plugins.scriptsecurity.scripts.ScriptApproval.ALLOW_ADMIN_APPROVAL_ENABLED=true 

这几个参数的含义,请自行百度或询问文心一言。

启动脚本如下:

 /works/apps/jdk17/bin/java -Djava.awt.headless=true -Dfile.encoding=utf-8 -Xmx2048m -Xms1024m -DJENKINS_HOME=/works/devops/jenkins-2.426/work -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true -Dorg.jenkinsci.plugins.scriptsecurity.scripts.ScriptApproval.ADMIN_AUTO_APPROVAL_ENABLED=true -Dorg.jenkinsci.plugins.scriptsecurity.scripts.ScriptApproval.ALLOW_ADMIN_APPROVAL_ENABLED=true -jar /works/devops/jenkins-2.426/jenkins.war --httpPort=9080

这段脚本中,java路径、jenkins的安装路径,都是我的测试环境的路径,执行的时候需要针对性修改一下。

3 问题描述

Devops的构建 执行构建后

经常性卡住执行不下去,持续时间不断增加,始终无法完成。

经过检查后发现,构建执行后,会在Jenkins中创建一个临时Job,查看该Job的构建历史,Console Output,发现最后一行日志是 sleep 1hr 23min ,个人分析感觉是流水线脚本中执行了sleep命令,而休眠时间值过长,需要休眠1小时23分钟。(其实分析得到这个结果用了我很长时间)

检查该Jenkins临时job的配置,看到流水线脚本中有一段代码如下:

    // 获取merge request判断changes内容
    // 如果mergeStatus为 can_be_merged 则accect
    def startTime = System.currentTimeMillis()
    def endTime = startTime + 2 * 60 * 1000 // 两分钟的毫秒数
    def pollingInterval = 5000 // 间隔5秒轮询一次
    def mergeRequest
    while (System.currentTimeMillis() < endTime) {
        mergeRequest = callDevOpsRestApi(pipelineContext, "api/vcs/repos/${stageAttrs.codeRepositoryId}/merge-requests/${mergeRequestId}/changes", "GET", null)
        if (mergeRequest==null || isNullOrBlank(mergeRequest.mergeStatus) || mergeRequest.mergeStatus == "unchecked" || mergeRequest.mergeStatus == "checking") {
            // 继续轮询
            sleep(pollingInterval) // 休眠指定的间隔时间
        } else {
            break
        }
    }

这段代码在while循环,每次循环中会调用普元devops的 merge-requests/${mergeRequestId}/changes 接口,检查合并请求的状态,状态不对,就执行一次 sleep方法。

看注释是间隔轮询,每次计划休眠5000毫秒。

但Jenkins的流水线脚本中调用的sleep是jenkins内置函数,休眠单位不是毫秒,而是秒,因此造成每次休眠5000秒,大概就是 83分钟。

4 解决办法

Jenkins的临时Job是普元devops创建的,那么这段流水线脚本应该也是devops创建的。

由此想到普元devops中应该存储了这段脚本的模板。

经过若干分钟的查找和文档阅读,最后在普元Devops部署文件夹下找到了这个脚本的模板文件,路径如下

$devops安装路径$/WEB-INF/_srv/work/user/com.primeton.devops.engine/META-INF/pipeline/stages/code/gitlab-branch-merge.groovy

编辑这个文件,修改58行,将 5000改为 5 ,就是休眠5秒钟了。

再次执行Devops的分支合并构建,devops构建执行成功,jenkins的临时Job执行成功,Gitlab中项目simple2下新增了一条合并请求。

至此,问题完美解决。

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

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

相关文章

电机控制器遇上第三代半导体,杀手锏是什么?

导语 华东电机控制器市场的创新方向&#xff0c;文中参考答案都有了。 前言 随着工业自动化和智能化进程的加速推进&#xff0c;电机控制器作为驱动系统的核心部件&#xff0c;在推动产业升级转型中扮演着至关重要的角色。华东电机控制器市场以其独特的优势异军突起&#xff0c…

【C++ STL】unordered_mapunordered_set (哈希表)

文章目录 unordered_map&unordered_set1. unordered容器1.1 效率对比 2. 哈希2.1 哈希的定义哈希函数除留余数法自定义哈希函数 哈希冲突 2.2 哈希冲突的解决闭散列/开放定址法两种探测方式闭散列扩容 开散列/拉链法/哈希桶开散列实现 3. 模拟实现3.1 改造哈希表3.2 封装容…

GPIO输入模式之按键控制及光敏传感器控制应用案例

系列文章目录 STM32之GPIO&#xff08;General Purpose Input/Output&#xff0c;通用型输入输出&#xff09; GPIO输出控制之LED闪烁、LED流水灯以及蜂鸣器应用案例 文章目录 系列文章目录前言一、按键简介二、传感器模块简介2.1 AO模拟量输出模块2.2 DO数字量输出模块2.3 指…

【C语言加油站】数据在内存中的存储

数据在内存中的存储 导读一、计算机中的数据类型二、整数在计算机中的存储2.1 整数的存储形式——原码、反码与补码2.2 三种形式之间的相互转换2.3 采用补码存储整数的原因 三、大小端字节序与字节序判断3.1 大端存储与小端存储3.2 为什么会出现大小端存储&#xff1f;3.3 大端…

家用设备轻松搭建 AI 集群,畅跑 Llama 3.1 405B

作者:老余捞鱼 原创不易,转载请标明出处及原作者。 写在前面的话: 本文主要介绍如何在家用设备上运行大型开源语言模型Llama 3.1 405B,首先我会解释构建人工智能集群来提高运行效率的原理,随后会演示如何通过Distributed Llama项目支持在多个设备上运行LLM模型,并…

【STL】05.vector的模拟实现

一、vector的实现 1.1 基本框架 template<class T> class vector {typedef T* iterator;typedef const T* const_iterator; public:private:iterator _startnullptr;iterator _finishnullptr;iterator _end_of_storagenullptr; };1.2 vector的默认成员函数 1.2.1 构造…

如何通过大模型生成业务需要的数据集

现在大模型训练数据的主力都是LLM自己贡献的了。但是也不是说你让它输出什么&#xff0c;然后它就一劳永逸地不停地输出你想要的东西。受限于LLM本身的能力、上下文规定的长度、训练方式导致的有限变化&#xff0c;你需要不断变更你的prompt&#xff0c;以让输出更多样。 接下…

录屏为什么没有声音?一款软件为您解决无声难题

录屏已经成为我们日常工作和生活中不可或缺的一部分。然而&#xff0c;有时在录屏过程中&#xff0c;我们可能会遇到一个令人困惑的问题&#xff1a;录屏为什么没有声音&#xff1f;本文将详细解析电脑录屏没有声音的可能原因&#xff0c;并提供相应的解决方案。同时&#xff0…

YOLOv10问世,登顶GiTHub!性能飞升,【多尺度目标检测】值得大看特看!

【多尺度目标检测】是近年来在深度学习领域中备受关注的一项技术&#xff0c;它通过处理图像中不同尺度的目标&#xff0c;显著提升了模型在复杂场景中的检测精度和鲁棒性。多尺度目标检测技术已经在自动驾驶、安防监控和遥感图像分析等多个领域取得了显著成果&#xff0c;其独…

SQL Server Management Studio的使用

之前在 https://blog.csdn.net/fengbingchun/article/details/140961550 介绍了在Windows10上安装SQL Server 2022 Express和SSMS&#xff0c;这里整理下SSMS的简单使用&#xff1a; SQL Server Management Studio(SSMS)是一种集成环境&#xff0c;提供用于配置、监视和管理SQL…

前端工程师学习springboot2.x之配置idea热更新实现高效率开发节奏

目前已经学习springboot实现了增删改查分页查询&#xff0c;每次修改业财或者是代码重启项目都让我觉得很闹心&#xff0c;现在给出idea2021版本自带热更新操作设置&#xff0c;设置过程分享给大家 总结&#xff1a;以上就是配置的全部过程&#xff0c;祝大家写代码快乐…

鸿蒙(Harmony) NEXT - AlphabetIndexer实现联系人字母索引

鸿蒙(Harmony) NEXT 9月份就要正式上架了&#xff0c;并且不会再兼容安卓平台&#xff0c;于是我也赶紧给App开发鸿蒙版本&#xff0c;接下来会写一系列的Harmony开发教程。 今天使用AlphabetIndexer实现联系人字母索引&#xff0c;AlphabetIndexer是官方封装好的组件 咱们实…

【驱动程序】3.5寸SPI液晶屏_ILI9488_stm32f103c8t6_CubeMX_HAL库

【驱动程序】3.5寸SPI液晶屏_ILI9488_stm32f103c8t6_CubeMX_HAL库 主控芯片&#xff1a; stm32f103c8t6 接线&#xff1a; LED-3.3v其他管脚按main.h文件接: #define LCD_CS_Pin GPIO_PIN_1 #define LCD_CS_GPIO_Port GPIOA #define LCD_RS_Pin GPIO_PIN_2…

武汉流星汇聚:全球化与多元化并进,亚马逊展望电商领域无限可能

在全球电商的浩瀚星空中&#xff0c;亚马逊无疑是最为耀眼的一颗星辰。凭借其多年在跨境市场的深耕细作&#xff0c;亚马逊不仅积累了庞大的高活跃用户群&#xff0c;还构建了显著的平台流量优势。根据Similar Web的权威数据&#xff0c;亚马逊的独立访问用户数量已超过26.59亿…

EGO-Swarm 仿真环境搭建

EGO-Swarm仿真环境搭建 参考教程&#xff1a; https://github.com/ZJU-FAST-Lab/ego-planner-swarm EGO-Swarm是一种分散的异步系统解决方案&#xff0c;用于仅使用机载资源在未知的障碍物丰富的场景中进行多机器人自主导航。 1. 查看系统环境 要运行本仿真程序&#xff0c…

评估测量仪器/传感器时的各种精度解析一览

在工业测量中&#xff0c;精度是一个复合概念&#xff0c;涉及到多个方面&#xff0c;通常用来描述测量结果的准确性和可靠性。 在选择测量仪器/传感器时&#xff0c;面对众多的精度名称&#xff0c;你是否苦恼他们具体描述的是什么精度&#xff0c;是否和评估要求有直接关联&…

开放式耳机有什么好处?开放式耳机该怎么选?

​开放式耳机的好处多多呀&#xff01;如今&#xff0c;开放式耳机已经迅速成为耳机市场上的新宠&#xff0c;它们以其独特的佩戴方式和卓越的音质表现&#xff0c;赢得了广大音乐爱好者和运动达人的喜爱。尤其是对于那些热爱听歌和追求运动自由的人们来说&#xff0c;开放式耳…

电脑录屏软件推荐,6款高效录屏神器(2024最全最新)

电脑录屏软件成为了我们工作、学习和娱乐中不可或缺的工具。无论是录制PPT演示、QQ聊天过程&#xff0c;还是进行专业的直播或教学&#xff0c;都需要一款功能强大、操作简便的录屏软件。 那么&#xff0c;本文将为大家进行电脑录屏软件推荐&#xff0c;让您无论在哪种录屏场景…

共享之道——享元模式(Python实现)

共享之道——享元模式&#xff08;Python实现&#xff09; 大家好&#xff0c;今天我们继续来讲结构型设计模式&#xff0c;上一期我们介绍了外观模式&#xff0c;这一期我们来讲享元模式&#xff08;Flyweight Pattern&#xff09;。 享元模式&#xff08;Flyweight Pattern…