手机站:/m

轻量服务器_mysql操作数据库语句_年度促销

时间:2021-04-20 17:36编辑:淘客樊里来源:淘客樊里当前位置:主页 > 服务器 >

网络加速服务器_如何选_云主机环境搭建

先进的Jenkins用法要求将作业链在一起,而且在大多数情况下不仅仅是作为一个纯粹的序列。经典的方法依赖于一堆插件:参数化的build trigger、join、dowstream ext、promoted builds、retry failed builds、conditional build step等等。这有明显的缺点:配置可能会很快变得复杂,尤其是当您想在构建管道中引入一些动态决策时。这些插件之间的交互可能有奇怪的副作用,很难诊断修理好了不是整个软件过程的全局视图。工作流配置分布在各种涉及的工作中,难以理解和保持。一些插件已经试图改善这一点,对于示例来说,非常流行的构建管道插件呈现了一个很好的静态管道的全局概述,但是它仅限于大多数顺序的、静态的工作流。请求我加入CloudBees时从客户那里得到的包括根据当前的作业状态或输出选择要触发的下一个作业,在循环中运行,根据各种参数的组合做出决策,以及一些非常复杂的编排要求。最初的目标是设计一个DSL,让Jenkins用户以一种非常简洁的方式表达复杂软件开发中涉及到的作业的编排过程。如我的第一个DSL实现,我使用Groovy,它是创建DSL的一种非常高效和简单的方法。这使得开发变得容易,但却产生了重大的、意想不到的负面影响插件。没有受Groovy DSL的限制,这个流行插件的大多数用户使用构建流作为脚本控制台。Groovy是在Groovy控制台上使用的,所以大多数高级Jenkins用户已经知道如何使用它来访问Jenkins API。有些人开始使用groovy脚本计算中间结果,作为其他作业的参数传递,有时甚至将一些结果存储为文件供以后使用,并定义保持流的方法可管理的。这个对我来说绝对是胡说八道。DSL本应该定义一个编排模型,我想把它转换成一个状态机(类似于Gradle将构建脚本转换成任务执行计划的方式)。使用高级groovy脚本,这将成为不可能。教训#1: 如果你给用户一些工具,云服务器哪里好,他们会使用和滥用它。严格定义API的边界和约束,什么叫云服务,即使是DSL。Groovy可以用来将DSL限制为关键字和构造的子集,但这是另一个主题,秒单客返利机器人,我不是Groovy专家可以解释的这个。其他主要问题是Groovy shell用来运行的流不能中断,以后再继续。如果某个作业失败,则无法重新触发它并使流从以前的状态恢复。如果Jenkins必须重新启动,您必须等待整个流程完成。一些CloudBees客户的构建过程需要几个小时才能完成……Groovy是一种编译语言,被转换成字节码,因此您无法捕获脚本上下文并将其序列化。我想到的选项是不必要的复杂的,可能会破坏现有的DSL脚本其他。教训#2: Jenkins上的高级工具需要是异步的、幂等的。有时,詹金斯的工作不够精细,已经遭受了这种痛苦问题。最后但同样重要的是,Groovy功能强大,可以让您在Jenkins上做任何事情,所以流需要RUN-SCRIPT(即管理员)权限,这对于最初的job orchestrator插件用例来说毫无意义。可能的选择是使用groovy沙盒,我们已经用它来保护CloudBees模板插件。关于Jenkins安全性,DSL允许你按名称运行作业,移动物联网卡,甚至可以通过脚本计算名称,因此在没有管理员权限的情况下,我们只需检查您是否只触发具有构建权限的作业。为此,插件必须记住用户配置构建流的权限,可以依赖最近引入的queueitemtauthenticator,总之不是一件小事改变。教训#3: 不要忽视安全!groovy沙盒似乎是一个不错的选择,可以应用于其他基于groovy的插件。基于我的工作流程,尤其是我的工作流程,我很可能会浪费时间在上一次在Los Altos召开的CloudBees工程会议上,企业应用开发,我们花了3个小时讨论创建一个新的企业插件来覆盖这个主题的机会。还有更多。。。很快:)尼古拉斯德鲁夫黑客云蜂

上一篇文件存储_cdn流量包_优惠券

下一篇金山云_有了域名怎么建设网站_返利

云市场知识本月排行

云市场知识精选