本文简单记录一下明天和油猴一起提高生活质量的剧本。
先描述一下我要解决的问题:
我们线上的很多操作通常都是通过Jenkins来进行,任务需要在大型机器上运行。 有时,这些任务需要很长时间才能运行。 我一般都会关注这种自动化,一般也会做其他的工作。 我希望日志仍然出现在屏幕上,但不会干扰我的其他工作。
解决办法是,我在Jenkins页面添加了一个按钮,通过这个按钮可以打开一个最小化的窗口,效果如下:
这是一个新添加的按钮,点击这里,会弹出一个日志窗口
弹出的日志窗口位于左上角。 没有菜单栏,没有书签栏,也没有扩展。 基本上所有的空间都用来显示日志了。
做这个操作的时候,实时日志还在滚动jquery弹出窗,所以心里比较踏实。
源码如下:
// ==UserScript==
// @name Jenkins Minimized Log
// @namespace lxt
// @version 0.1
// @description Display jenkins log in a minimized window
// @author laixintaoo@gmail.com
// @include https://jenkins.*console*
// @require http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js
// @run-at document-end
// ==/UserScript==
(function () {
"use strict";
let url = new URL(window.location.href);
if (url.searchParams.get("view_window") === "minimized") {
minimized()
}
url.searchParams.append("view_window", "minimized");
$(`<a href="${url}" class="open-in-minimal-window">Minimized log window`).insertAfter(
"a[name='skip2content']"
);
document.addEventListener("click", navigateTo, false);
function navigateTo(event) {
if (event.target.matches("a.open-in-minimal-window")) {
window.open(
event.target.href,
"_blank",
"menubar=no,toolbar=no,directories=no,resizable=yes,dependent,width=800,height=1000,left=0,top=0"
);
event.preventDefault();
}
return false;
}
var progress_bar = $(".build-caption-progress-container");
progress_bar.appendTo("#spinner");
function minimized() {
console.log("should using minized window!");
$("#side-panel").remove();
$(".page-footer").remove();
}
})();
直接粘贴到你的油猴身上就可以使用了。
核心逻辑是,如果当前页面是Jenkins的原始URL(Params没有view_window=minimized)jquery弹出窗,则在页面上插入一个链接,目标是当前URL+参数view_window=minimized。 通过代码,设置关闭菜单栏、工具栏,并设置打开此URL时的窗口大小、位置等。 打开一个基本上仅记录日志的窗口,始终放置在屏幕后面。 您可以使用Mac上的矩形软件将此窗口固定在顶部。
从这个窗口打开链接(按住Cmd),或者使用普通的Chrome窗口打开它,非常方便。
Rectangle是一款免费的Mac窗口管理软件,可以帮助用户快速调整和管理窗口的位置和大小。 它允许您轻松地将窗口拖动到屏幕上的任意位置,并通过快捷键调整窗口的大小和位置。
如果检测到URL中有参数view_window=minimized,则删除页面中的侧边栏、页脚栏等,以便所有空间用于显示日志。
运行过程中最需要的按钮就是停止按钮,但是Jenkins默认把这个按钮放在页面的最前面,这样你就可以在顶部看到滚动日志。 如果需要停下来,就得拖到页面底部才能找到按钮,太慢了。 我使用 JQuery 将其放在日志滚动下方。
本来想做一个Jenkins插件直接改公司的Jenkins,但是看了Jenkins发布插件后发现还是蛮复杂的,而且还要写一些Java和XML,可能需要一两天的时间。 于是直接用油猴实现了,花了半个小时。
来源: