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

云解析_梦幻转回原服务器_哪家好

小七 141 0

在Jenkins插件中引入可变性

与此同时,这个问题从多个渠道冒出来。我认为这是一个迹象,新一波的插件开发人员正在寻求在他们的Jenkins中做更复杂的事情插件。所以本文旨在帮助Jenkins插件开发人员解释如何在Jenkins中引入可变性并开发更好的配置建模插件。如果你想知道这能给你多大的力量吗对于您的UI,我建议您查看CloudBees Deployer插件中的"立即部署"页面(不幸的是,代码库仍然是封闭源代码的……请注意,要自我检查一些所需依赖项的状态,以便我可以再次公开源代码)我们有多种不同类型的"主机服务"列表(这也是一个扩展点,因此其他插件可以提供自己的"主机服务",例如appengine和cloudfoundry就是其中的两个实现。然后呢每个"主机服务"都有多个"应用程序"(都是一种类型,但每个"主机服务"的类型不同)。最后,每个"应用程序"都有一个应用程序源的选择("first match"、"maven artifact selection"等),每个层都提供自己的一组特定于该层的详细信息。例如,主机服务请求一组在主机服务级别有意义的选项,例如CloudBees运行@cloud服务请求CloudBees服务上的帐户部署到,另一方面,appengine主机服务请求一组不同的问题。所以这很复杂…如果你只是想从那条路开始呢…假设你的问题是什么比如:有吗有两种不同的方法配置果冻文件和控件,它基于我从内容上方的组合框中选择的内容显示那些果冻文件?我通常处理这种类型的事情的方法是使用一个可描述的对象树来映射你想让用户配置的不同类型的对象从。正常情况下通过扩展abstractdescribablempl,但是,如果修改对象树太困难(通常您有一个类必须是对象树基的超类),那么您只需将可描述接口添加到现有对象树的根目录中,并添加所需的方法,因此在您的情况下,您将拥有类似的东西,然后针对每种类型的产品然后做一些类似的事情这很重要,每个具体的产品子类都有一个@DataBoundConstructor注释的构造函数和一个用@extension注释的aDescriptorImpl(尽管类名可以是您喜欢的任何名称,约定是DescriptorImpl)在每个类中公开的方法由您决定。通常,您会将每个特定产品字段的getter放在特定的类中,因此,例如,您将拥有getManufacturer()、getFuelType()等,以及相应的支持字段,这些字段将包含在字段验证中汽车描述e、 g.DocheckManufacturer(@QueryParameter字符串值),doFillFuelTypeItems(),等方法。哪里所有产品实例都有通用的字段,您可以将它们的getter放在基本抽象类中,将字段验证/自动完成放在基本描述符中班级。为了然后实现配置果冻和可选的全局.果冻如果是我,我会有一个产品/配置果冻然后包括来自具体子类的可选位,例如,只有当子类实际具有任何相关配置时,我才会定义子类config-细节。果冻, e、 汽车/配置-细节。果冻看起来像现在我们找到了真正的诀窍…在需要这些产品实例的类中,它最终也被@DataBoundConstructor实例化,或者对已经构造的对象使用订书机绑定(这意味着您需要为表单字段使用getter和setter),所以让我们假设您有一些类似的东西,换句话说,这是一个存储作业正在测试的产品类型的作业的属性,或者类似这样的东西(这对任何类都有效,只是试图用一个简单的示例演示如何获取它),最后,在ProductsJobProperty中获取灵活的产品类型列表/配置果冻你有点像你可能要稍微玩一下那个标签。您需要提供实际的完全限定类名(或者从ProductsJobProperty.DescriptorImplAnother选择查看(如果你只想要一个产品)如果你想要一个下拉列表而不是一个单选列表,希望这些都能帮助你走向启蒙的道路斯蒂芬康诺利云蜂cloudbees.com网站Stephen Connolly有超过20年的软件开发经验。他参与了许多开源项目,包括Jenkins。Stephen是Jenkins项目的首批非Sun成员之一,他开发了天气图标。斯蒂芬住在爱尔兰都柏林,那里的天气图标特别有用。在Twitter和他的博客上关注斯蒂芬。