CI/CD | 深入研究Jenkins后,我挖掘出了找到了摆脱低效率低下的方法
在本系列的第一篇文章中,您已经了解了一些关于如何管理Jenkins的内容,主要是为无序的人带来秩序。在这篇文章中,我将更深入地探讨我效率低下的问题,提出我们工作流中一些安全性、治理和合规性的挑战。这不仅仅是你在网站上或展览横幅上看到的DevOps流行语——它们是保持软件交付速度的关键。我发现,如果我们的安全协议没有一致的治理或合规性,自动化就会变得不那么…自动化。
以下是我发现不受管理的Jenkins的另外两个缺点,一起来看看,说不定和你发现的一样。
问题3:缺乏一致性
在我之前的文章中,提到过一个主题:分散控制和缺乏可见性会产生混乱。有太多的人操控太多的变量,这就很难让每个人、每件事处于同一个起跑线。这带来了巨大的障碍。
**缺乏治理会阻碍最佳实践。**当随便什么人都可以启动、配置或修改服务器时,您实际上是没有治理能力的,并且几乎没有机会去持续地实施最佳实践(例如定期安全扫描、禁止不安全插件等)。
**插件划分了服务器、工作流程和团队。**如果没有插件管理,您的团队可能会在服务器中放入任何数量(和质量)的插件。这将给团队间带来相当大的兼容性和互操作性问题,他们将不可避免地使用有冲突的插件,并按照不同的时间表来更新和共享插件。
**缺乏一致性会导致更多的Bug。**流水线的一致性是避免错误的关键。由于不同配置的控制器、不同的插件集、灵活变化的工作流程以及基本上互不关联的团队,不受管理的Jenkins会增加您的工程师寻找Bug的时间。
**备份可能是零零散散的。**备份数据并验证这些备份的完整性都需要有组织、有纪律。如果缺少有意义的治理,您的备份策略可能会有漏洞,然后面临丢失数据的风险。
问题4:缺乏安全
网络安全是一项永无止境的挑战。云计算和业务转型带来了具有高度流动性(并不断扩大)的攻击范围,快速的创新步伐要求企业时刻保持警惕来击退潜在的攻击者。那么,这是如何对于已经陷入我所提到的困境的企业造成更大的影响的?
**没有授予任何人执行安全策略的权利。**如果没有集中的权力或可靠的治理,您将很难让团队遵守安全最佳实践(甚至遵循基本政策)。这将会给您的流水线带来有风险的插件、有风险的代码和有风险的做法。
**您的安全强度只达到了您最不安全的插件的水平。**随着插件在控制器中数量激增,这些插件中的任何安全漏洞都会成为您的负担。插件开发者是否修补了这些漏洞,以及你的团队是否为了更好地利用安全补丁而可靠地更新他们的插件,这些都是安全方面的通用常识。
**漏洞修复可能会很慢,甚至根本不存在。**由于厨房里有太多厨师,而且普遍缺乏可见性和协调,因此对发现的任何安全威胁进行修复将非常麻烦。
安全性混乱且薄弱,导致合规也变得困难。合规性就是要证明您是受控的,拥有可靠的保护措施,并且可以满足安全标准。由于上面列出的所有原因,如果想靠不受托管的Jenkins实现这一点,很难。
迈入标准化、自动化和优化的大门!
如果您阅读了第一篇文章,就已经知道是CloudBees CI帮助我控制不受管理的Jenkins实例的混乱局面,但现在,是我认真对待提高全面效率的时候了。这意味着一致性和自动化。以下是我确定对我和我的团队有帮助的项目:
快速上手
- 所有开发团队一开始就有一个值得信赖、经过验证且受到支持的Jenkins版本,和以及一套经过稳定性和安全性测试的精选插件。对我来说,支持是最重要的一点。在我有问题时,总有人在我身边帮助解决——无论问题多么简单;
- 使用自定义CasC捆绑包来配置可重复组件,使团队能够从从单一来源管理的预配置和测试环境开始。
流水线模板目录,用于在整个运营过程中执行一致性和稳定性
- 你拥有一个基于最佳实践的流水线集合,让团队永远不必从头开始,并且对模板的更改会从一个点推送到所有团队的流水线中;
- 每次运行job时都会获取最新的模板代码,因此job始终反映的是最新的标准。可以有选择性的把开发人员限制在特定的模板之中,来实现治理目标;
- 想要避免从头开始治理开发人员,可以通过修改现有模板来适应新议程;
- 自定义标记文件让您能够基于软件配置管理(SCM)标识符的基础上,即时选择构建模板。
自动备份和恢复
- 消除备份策略中的人为错误。我们团队中有很多独立的思考者,这对于功能开发这很有利,但对于一致的环境设置却不是很友好。所以自动备份和恢复有助于为他们创造一个可以启动和使用的环境,而不是每次都从头开始创建。
跨团队协作
- 使用一个强大的发布者/订阅者模型跨多个控制器管理事件,无论身处何处,团队都订阅流水线事件并对其采取行动;
- 流水线同步工作,不同的团队能够使用同步的自动化执行跨流水线的协作;
- 团队可以通过控制器分开工作,但他们仍然可以协同工作,实现流水线自动化;
- 每个团队都应该能够安全地使用不同的插件和技术,而不会有影响其他团队的风险。
提升开发人员的工作效率
- 直接在GitHub和Slack中接收细化的、可操作的构建数据。
轻松实现安全性和合规性
安全性和合规性对我们来说是一个巨大的挑战。毕竟,如果您不能完全控制开发环境,那么就很难实现这两个目标,但目前很少有开发人员能够做到。幸运的是,随着CloudBees的集中化和标准化,安全性和合规性变得相对来说更容易了。随着每个团队都使用安全的构建和批准的流水线配置,我的SDLC有了全面的护栏支持(guardrails supporting)。以下是一些使我的工作变得更轻松的项目:
集中管理的安全策略
- 授权控制器仅运行经过测试、验证且安全的Jenkins版本。如果构建中出现问题,可以更轻松地全局复制、修复和更新该构建。
- 从单一位置管理身份验证和授权功能: 在所有控制器上使用单点登录(SSO);
- 使用基于角色的访问控制(RBAC)模型定义安全凭据,并在控制平面、文件夹或单个控制器级别对访问权限进行分组定义;
- 使用文件夹层次结构实施对控制器、代理或项目的访问;
- 将RBAC与文件夹限制相结合以提高安全性,并确定谁可以在文件夹层次结构中的每个位置创建、修改、删除和使用凭据。
- 基于每个团队确定安全的范围。 使用模板化的工作流程,将安全性落实到您的流水线中。
- 简化合规性
- 只需使用CasC捆绑包和流水线模板即可构建合规性。
- 将插件的风险降至最低
- 限制团队只能使用一组精心挑选过的插件(CloudBees保障计划 - CAP),这些插件经过稳定性和安全性测试,并确认符合合规性目标。
随着您团队的扩大而扩展
大规模自动化是Jenkins的追求。不受管理的Jenkins在自动化方面可能表现出色,但在大规模管理部分则不然。这里指的不是管理一个团队,而是管理很多团队。我需要为团队提供成长的空间和所需的支持,并计划随着我们投资组合的扩大创建新的团队。首先,需要考虑的就是对着人员的扩大而扩展,因为如果没人使用它,那么这个软件被开发出来的目的是什么呢?需要有一个人来确保所有人拥有他们完成工作所需的一切事物。在上述对我有用的功能中,有一些对扩展也有所帮助。
- 通过自动配置新团队/控制器、传播最佳实践(流水线模板、CasC等),以及为规模合适的基础设施管理资源,来实现大规模交付Jenkins。
- 团队能够自行快速启动新的控制器和工作区,同时确保SDLC保持一致、受管控、合规且安全。
- 如果您使用的是Kubernetes,请在扩展时利用Kubernetes配置来优化基础架构资源。这样,控制器可以根据需要启动,然后在不使用时可以休眠。
企业级支持
最后,要真正让使用Jenkins企业做好准备,我们必须解决房间里的大象:Jenkins缺乏结构化的支持。社区援助是非常好的解决方案,但是当灾难发生时,您是没有时间在论坛上挖掘出解决方法的。您要将弹性融入您的计划,您需要坚如磐石的专业支持,这样您才可以专注于构建应用程序,而不用为修复让步。
让CloudBees团队的Jenkins专家为您提供指导。你不必再依赖Rick——你可爱的Jenkins专家,他收集了1980年代的限量版星球大战人物(我们有着同样的热情,Rick)。相反,您要依靠专家的帮助,让Rick在其他地方大展拳脚吧。
CloudBees CI建立在Jenkins之上,并添加了额外的功能来满足企业的需求。我们了解Jenkins,并且因为我们为开源项目贡献了大量代码,所以我们在解决问题方面具有独特的优势——如果出现问题。
此外,CloudBees会主动解决Jenkins构建中的漏洞,确保它们在安装前就被搞定,而且我们还创建了Jenkins健康顾问。健康顾问在整个Jenkins环境中提供运行状况监控,在问题(安全漏洞、性能瓶颈、插件缺陷等)影响用户之前发送通知。健康顾问适用于所有Jenkins用户,而不仅仅是CloudBees CI用户,所以如果有专门支持Jenkins的精英团队,您也可以使用它。
在下一篇文章中,我将解决可怕的基础设施问题。基础设施就像地基,您房子下面的地下室。我既想知道什么时候有问题,又不想知道——因为解决这些问题需要做很多工作。我就是这样的人,在我们团队一瘸一拐的前进时,我否认自己有基础设施问题。就有点像我知道天花板上有一只蜘蛛…但也许如果我忽视它,它就能自行消失。但事实上是没有这种运气的——那些小生物会再次在某个地方出现。
作者:萨曼莎·弗罗斯特(Samantha Frost),CloudBees公司产品营销经理。
文章来源:https://www.cloudbees.com/blog/managed-jenkins-consistency-isnt-boring
相关文章:
CI/CD | 深入研究Jenkins后,我挖掘出了找到了摆脱低效率低下的方法
在本系列的第一篇文章中,您已经了解了一些关于如何管理Jenkins的内容,主要是为无序的人带来秩序。在这篇文章中,我将更深入地探讨我效率低下的问题,提出我们工作流中一些安全性、治理和合规性的挑战。这不仅仅是你在网站上或展览横…...
刷LeetCode
文章目录滑动窗口算法1 涉及知识点 :unordered_set 容器2 参数详情3 例题滑动窗口算法 滑动的窗口,每次记录下窗口的状态,再找出符合条件的窗口使用滑动窗口减少时间复杂度 1 涉及知识点 :unordered_set 容器 说明:…...
Spring 大白话系列:工厂
Spring 大白话系列:工厂 “工厂模式,大家都很熟悉了。说到底,就是解除创建对象和使用对象之间的耦合。这东西没啥啊。” 教室里,老师傅听到小明在嘀嘀咕咕的。老师走过去问: “有什么问题呢小明同学?” 小…...
喜讯!华秋电子荣获第六届“蓝点奖”十佳分销商奖
2 月 25 日,由深圳市电子商会主办的2023 中国电子信息产业创新发展交流大会暨第六届蓝点奖颁奖盛典在深圳隆重举行。 图:华秋商城渠道总监杨阳(右三) 深圳市电子商会连续六年举办“蓝点奖”评选活动,旨在表彰对电子信…...
Linux概述
1:Linux概述1.1:操作系统常见操作系统有:Windows、MacOS、Linux。名称描述Windows微软公司研发的收费操作系统。分为两类:用户操作系统、Server操作系统。用户操作系统:win 95、win 98、win NT、win Me、win xp、vista…...
中级嵌入式系统设计师2015下半年上午试题及答案解析
中级嵌入式系统设计师2015下半年上午试题 单项选择题 1、CPU是在______结束时响应DMA请求的。 A.一条指令执行 B.一段程序 C.一个时钟周期 D.一个总线周期 2、虚拟存储体系由______两级存储器构成。 A.主存-辅存 B.寄存器-Cache C.寄存器-主存...
华为OD机试模拟题 用 C++ 实现 - 删除指定目录(2023.Q1)
最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 最多获得的短信条数(2023.Q1)) 文章目录 最近更新的博客使用说明删除指定目录题目输入输出示例一输入输出说明Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为…...
【正点原子FPGA连载】第二十章AXI4接口之DDR读写实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南
1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id692450874670 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第二十章AXI4接口…...
超出认知的数据压缩 用1-bit数据来表示32-bit的梯度 语音识别分布式机器学习 梯度压缩 论文精读
说明 介绍1−bit1-bit1−bit论文内容。 原文链接:1-bit stochastic gradient descent and its application to data-parallel distributed training of speech DNNs | Semantic Scholar ABS 实验证明在分布式机器学习的过程中能够通过将同步所传递的梯度进行量化…...
深度剖析指针(上)——“C”
各位CSDN的uu们你们好呀,今天,小雅兰的内容是指针噢,在学习C语言的过程中,指针算是一个比较重要的内容,当然,难度也是比较大的,那么现在就让小雅兰来带大家进入指针的世界吧 字符指针 数组指针…...
学习 Python 之 Pygame 开发魂斗罗(六)
学习 Python 之 Pygame 开发魂斗罗(六)继续编写魂斗罗1. 创建碰撞类2. 给地图添加碰撞体3. 让人物可以掉下去4. 实现人物向下跳跃5. 完整的代码继续编写魂斗罗 在上次的博客学习 Python 之 Pygame 开发魂斗罗(五)中,我…...
LeetCode题解:1238. 循环码排列,归纳法,详细注释
原题链接: https://leetcode.cn/problems/circular-permutation-in-binary-representation/ 前置条件: 在解题之前,请先一定要阅读89.格雷编码的题解格雷编码可以满足题目的条件“p[i] 和 p[i1] 的二进制表示形式只有一位不同”,…...
全新后门文件Nev-3.exe分析
一、 样本发现: 蜜罐 二、 内容简介: 通过公司的蜜罐告警发现一个Nev-3.exe可执行文件文件,对该样本文件进行分析发现,该可执行程序执行后会从远程服务器http://194.146.84.2:4395/下载一个名为“3”的压缩包,解压后…...
线性回归系数解释
线性回归系数解释线性回归系数1、R2R^2R2(R方,R-Square)2、Adj−R2Adj-R^2Adj−R2(调整后的 R 方)3、标准误差4、FFF 值5、FFF 显著度6、置信区间7、PPP 值线性回归系数 回归模型得到后会有多个系数,这些系…...
22.2.27打卡 Codeforces Round #852 (Div. 2) A~D
A Yet Another Promotion 题面翻译 题目描述 共 ttt 组数据,每组数据中,你需要买 nnn 公斤苹果,第一天单价为 aaa ,但每买 mmm 公斤赠送一公斤;第二天单价为 bbb 。求最小花费。 输入输出格式 第一行一个正整数 …...
如何查看Spring Boot各版本的变化
目录 1.版本 2.基础特性和使用 3.新增特性和Bug修复 1.版本 打开Spring官网,点进Spring Boot项目我们会发现在不同版本后面会跟着不同的标签: 这些标签对应不同的版本,其意思如下: GA正式版本,通常意味着该版本已…...
程序员是否要加入创业公司?
我从1月份入职到2月份离职,历时一个半月。短暂的体验了一段创业生活,更准确的说是一段“待在”创业团队的生活,因为我发现创业本身跟我关系不大。一个半月的就业经历,对任何人来说都不是一个好选择,当然也不是我所期望…...
2023软件测试工程师全新技术栈,吃透这些,起薪就是25k~
相信每个准备软件测试面试的同学,不管你是大学刚毕业,满心憧憬着进入公司实习、非计算机行业转行软件测试、自学测试就业还是培训后就业,都会面临着众多的疑问和不解,那就是该怎么走出着第一步,今天本文一次性告诉你&a…...
【ChatGPT情商大考验】ChatGPT教我谈恋爱
❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…...
C++类内存结构模型
内存分区 内存全局数据区,代码区,栈区,堆区。 定义一个类 类的成员函数被放在代码区 类的静态成员变量被放在全局数据区(不占用类的存储空间) 非静态成员在类的实例内,实例在栈区或者堆区 虚函数指针&…...
HTML#4超链接标签,列表标签,表格标签和布局标签
一. 超链接标签介绍<a> 定义超链接,用于连接到另一个资源herf: 指定访问资源的URLtarget: 指定打开资源的方式代码<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>超链接标签</title> <…...
本科课程【数字图像处理】实验汇总
文章目录 实验1 - 腐蚀与膨胀实验2 - 图像增强实验3 - 图像的几何变换实验4 - 图像的蒙纱效果实验5 - 空洞填充实验6 - 取阈值的邻域平均算法实验7 - 图像的平移与伸缩变换实验1 - 腐蚀与膨胀 实验目的 分析掌握腐蚀与膨胀的基本原理,编写腐蚀与膨胀的算法,并掌握开闭运算的规…...
nginx安装lua、jwt模块,通过lua验证jwt实现蓝绿发布样例
文章目录前言一、基础组件下载二、组件安装1.luajit安装2.lua-nginx-module安装3.lua-resty-core安装4.lua-resty-lrucache安装5.ngx_devel_kit安装6.nginx加载lua模块7.lua-cjson安装8.lua-resty-string安装9.lua-resty-jwt安装10.lua-resty-hmac安装三、验证jwt中属性实现蓝绿…...
【redis的几种数据结构及在Java里的应用案例】
Redis是一款高性能的key-value存储系统,支持多种数据结构,包括字符串、列表、哈希表、集合和有序集合等。下面是Redis的几种数据结构及在Java中的应用案例: string 字符串(String) 字符串是Redis中最基本的数据类型,用于存储字符…...
【mybatis】 01- mybatis快速入门
数据库创建(注意:最好先创建好数据库设置utf8再进行表创建) create database mybatis; use mybatis;drop table if exists tb_user;create table tb_user(id int primary key auto_increment,username varchar(20),password varchar(20),gender char(1),addr varch…...
【C语言每日一题】杨氏矩阵(源码以及改进源码)
【C语言每日一题】—— 杨氏矩阵😎😎😎 目录 💡前言🌞: 💛杨氏矩阵题目💛 💪 解题思路的分享💪 😊题目源码的分享😊 Ǵ…...
JavaScript 面向对象【快速掌握知识点】
目录 类和对象 属性和方法 继承 多态 封装 类和对象 类是用于定义对象的模板或蓝图;它包含对象的属性和方法,我们可以使用class关键字来定义类。 class Person {constructor(name, age) {this.name name;this.age age;}sayHello() {console.log(H…...
Qt——自定义Model
众所周知,Qt提供了一套Model/View框架供开发者使用,Model用来提供数据, View则用来提供视觉层的显示。实际上这是一套遵循MVC设计模式的GUI框架,因为Qt还提供了默认的Delegate作为Controller来作为控制器。 MVC的好处这里就不多说…...
用 .NET 启动你的 DJI Ryze Tello 无人机
大疆的 DJI Ryze Tello 是入门级的无人机,不仅在 STEM 教育中有非常广泛的应用,也可以作为编程入门的首选。通过 UDP 协议调用 DJI Ryze Tello SDK 可以让 DJI Ryze Tello 无人机执行起飞,降落,转向以及不同的花式动作。本文将会通…...
sed 功能详解
介绍sedsed是一种流编辑器,它一次处理一行内容,把当前处理的行存储在临时缓冲区中(buffer),称为"模式空间",接着sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕&#…...
群晖 nas 做网站/营销策划思路
文章目录一、vim常用操作1.1 插入命令1.2 定位命令1.3 删除命令1.4 复制和剪切命令1.5 替换和取消命令1.6 搜索和搜索替换命令1.7 保存和退出命令一、vim常用操作 下一篇:Vim使用技巧——有趣又能提高效率的小技巧 https://blog.csdn.net/weixin_46818279/article/…...
棋牌网站怎么做优化/云搜索app官网
安装: apt-get install lrzsz rz 上传 sz 下载转载于:https://www.cnblogs.com/hellowego/p/6650031.html...
用html5做课程教学网站/网站排名前十
题目背景 原 维护队列 参见P1903 题目描述 某一天\(WJMZBMR\)在打\(osu~~~\)但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有\(n\)次点击要做,成功了就是\(o\),失败了就是\(x\),分数是按\(combo\)计算的&am…...
网站 收录 做301/昆明百度关键词优化
PIXHAWK、PX4、APM APM固件专为Arduupilot开发的固件,现也用于PIXHAWK。有ArduCopter社区支撑、开放,功能全、迭代升级快,适合直接用。由于有较多的历史兼容性需求,软件代码体系相对杂乱,还封装了PX4的内核࿰…...
男生跟男生做口视频网站/优化网站技术
原标题:Linux下iptables防火墙用法规则详解管理网络流量是系统管理员必需处理的最棘手工作之一,我们必需规定连接系统的用户满足防火墙的传入和传出要求,以最大限度保证系统免受。很多用户把 Linux 中的iptables当成一个防火墙,从…...
企业网站设计费做哪个科目/搜索引擎营销的优缺点
【推荐阅读】微服务还能火多久?>>> 目录1. 前言2. $this关键字3. self关键字4. $this和self::的区别1.前言 我犯了一个语法错误,我在类中使用self::调用私有方法,居然没有报错,但组长和我说这样使用不规范,…...