云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

亚马逊云_龙华网站建设公司_企业级

小七 141 0

詹金斯内部:作用及其亚型

操作是插件用来丰富构建/项目页面的主要方法之一。这个扩展点有着最长的历史,因此它的含义有点混乱,而且它在不同地方的使用也有些不一致。本页试图澄清那个。什么是行动吗?Action上定义的三种方法用于获取呈现操作所需的信息(图标、链接的名称和用户的位置)。Action和URL spaceActions通常希望在Jenkins中定义额外的URL空间来显示信息。例如,"testreports"操作在Jenkins中添加了一大堆子页面。为了方便这个常见用例,Jenkins使用Action.getUrlName() 方法。用于例如,如果Action的宿主对象(通常从Actionable扩展)位于URL/jenkins/foo/bar/,然后,从getUrlName()返回zot的操作将映射到/jenkins/foo/bar/zot(因此整个子空间可供此操作控制)。这就是如何让你的行动显示信息。在其他一些情况下,actions只想链接到现有的URL(甚至可能在Jenkins之外)它。特别的操作的视图宿主一些宿主类,宿主操作指定一个特定的视图,当定义了这样的视图时,它将被拉入宿主对象的页面呈现中。例如,AbstractBuild允许操作定义摘要.groovy(或其他语言),当它出现时,这些视图将合并到构建的顶部页面中。例如,JUnit集成使用它来生成测试报告很突出。看到了吗各主机类的javadoc以获取详细信息。类似地,一些宿主类定义了一个标记接口,该接口除了定义与操作的其他交互之外,还扩展了操作。有关示例,请参见突出的ProjectAction。查看所有此类标记的操作子类型界面。瞬态而持久性操作在主机上挂起时,动作具有不同的持久性语义。在某些主机(如AbstractBuild)中,操作被显式地添加(通常由执行的BuildStep执行)并与之一起持久化。在其他一些主机(如View)中,每当所述对象发生更改时,操作都完全从该对象的其他配置组合而成,因此不会持久化。还有一些是混合方法,比如AbstractProject,它支持一些显式添加的操作,也支持从构建步骤中贡献的临时操作等等。不幸的是,真正弄清楚哪个主机的行为的唯一方法是查看getActions()的实现方法。瞬态行动可以随时放弃,创造新的来代替旧的。因此,不适合将其用于同步,或保持其他持久化记录。持久的操作将永远存在,直到以编程方式删除或宿主对象本身被删除。因此,必须注意在适当的情况下使用"瞬态"。这些对象也可以用于同步。添加actionsHow将操作的实现插入到Jenkins取决于主机的类型,以及它是临时的还是坚持。坚持动作几乎总是通过Actionable.addAction()。通过回调添加临时操作。您实现了其他可以提供临时操作的扩展点,例如labelomproperty、Builder和Publisher,然后主机将调用您的方法并期望您返回一个临时操作的列表。当主机认为需要更新其瞬态时,它可能会经常这样做行动。更多最近,我们引入了一系列的瞬态***ActionFactory,比如TransientViewActionFactory,这样就可以在不实现另一个有状态扩展点(如Builder)的情况下提供瞬态操作。我们希望为更多的主机添加这样的扩展点类型.RootActionMost动作是以上述两种方式之一注册的,但有一个值得注意的例外,那就是RootAction。这是一个独立的扩展点,您可以将其放在@extension中,这些扩展点会自动注册为根Jenkins对象的临时操作。有一种称为UnprotectedRootAction的变体,即使没有读权限的匿名用户也可以访问它詹金斯。行动作为buildAction的输入,s也被用作构建的参数/输入(从广义上说),如中所示队列.schedule(...), 因为这些操作被添加到新创建的AbstractBuild中,然后可以从构建步骤访问它。例如,ParametersAction就是这样一种用于实现参数化构建的操作。Matrix重新加载的插件使用这种机制类似于记住Matrix的子集是为了什么执行。那里是允许此类操作与队列交互的几个子类型,例如foldbleaction和QueueAction.动作因为保存buildsAbstractBuild信息的工具是可操作的,它会采取持续的操作。这是插件将任何信息附加到构建的主要方式。这允许其他插件使用您的操作来了解发生了什么(此类操作也用于呈现信息,这是action类的主要用途)。即使您的插件本身不使用此类记录,我们强烈建议您这样做,因为这为我们在工作。看不见actionsAs可以在上面的章节中看到,随着时间的推移,一些操作的使用已经超出了扩展UI的最初目的,因此能够使用在UI中根本看不到的操作变得非常方便。InvisibleAction是实现这种目的的方便基类。例如,InterruptedBuildAction记录生成是如何中止的,但这是当前不可见的,因此它是从InvisibleAction扩展而来的。