Working Hours 插件的第一阶段更新

a 夏天 提交于 2019-12-04 23:07:31

本文首发于:Jenkins 中文社区

原文链接    作者:Jack Shen

译者:wenjunzhangp

Working Hour Plugin 提供了一个界面,用于设置允许的构建日期和时间。在配置 Working Hour 之外运行的作业将保留到下一个允许的构建时间为止。

在 Google Summer of Code 的第一个代码阶段,我一直在从事 Working Hours Project 项目,该项目还有待于改善可用性。

当我们想设计一个具有大量可以使用自定义库的 UI 时,React 似乎比经典的 Jelly 页面更受青睐,尤其是日期选择器之类的开源组件。

但是,我们目前正致力于将 React 和 Jenkins 集成在一起,这是一个挑战。

第一阶段的成就 

在第一个代码阶段,我们专注于 UI 改进,我们取得了以下主要改进: * 一个独立的 Web 应用程序,可以将其集成。 * 滑块,用于选择时间范围。 * 设置排除日期时间的更多字段。 * 用于选择排除日期的预设。 * Jenkins 样式界面

我们如何将 React 集成到 Jenkins 中 

可以在这里找到集成的解决方案文档

最初,我们发现 BlueOcean 是在 Jenkins 中使用 React 的一个很好的例子,但是对于使用插件进行通用开发来说,它并不是一个好的选择。因此,我们需要找到另一种集成方式。

这是进行集成的步骤: * 在你 jelly 文件中的挂载点,通常是具有唯一 ID 的元素。 * 编写您的 React Application,但需要将安装点设置为您在上面设置的 ID。 * 将构建后的插件复制到 webapp 目录。 * 在你的 jelly 文件中,使用 script 标签引入

<script type="text/javascript"
        src="${resURL}/plugin/working-hours/js/main.js"></script>


  • 使用 React 之后,传统的请求将不再可用,处理请求的另一种方法是使用 stapler。您可以定义如下的过程函数[source, java] public HttpResponse doDynamic(StaplerRequest request) { if (config == null) { config = ExtensionList.lookup(WorkingHoursPlugin.class).get(0); } String restOfPath = request.getRestOfPath(); String[] pathTokens = restOfPath.split("/"); List<String> params = new ArrayList<>(); switch (params.get(0)) { case "list-excluded-dates": return listExcludedDate(request); case "set-excluded-dates": return setExcludedDates(request); case "list-time-ranges": return listTimeRanges(request); case "set-time-ranges": return setTimeRanges(request); } }

运行我们的应用程序 

如果您想看一下我们的插件,可以查看 working-hours-plugin 的仓库。 只需阅读 README 文件,即可运行 working-hours-plugin 的副本。

截图 

当前的插件外观有点简单,插件使用起来有些不便。 比如说如果我们要输入排除的日期,它将是一个恒定格式的字符串,例如 15/9/2019,但是新的用户界面选择了 React,因此我们可以使用日期选择器进行改进。

当前插件 

新版时间范围选择器 

新版排除日期 

帮助链接 

如果您有任何疑问或建议,我们很高兴收到您的来信。 下面列出了几个有用的链接: * Develop Repo * Main Repo * Design Doc * Doc for React Integration Solution * Gitter Chat * Slides for Phase 1 Demo * Video Recording for Phase 1

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!