Hear every voice in your language
실시간 AI 더빙과 양언어 자막을 제공, 무료·오픈소스·프라이버시 보장
Live Wall 보기 유형을 추가합니다: 작업별 색상 타일을 전체 화면에 배치해 모든 작업을 한 번에 표시합니다
Adds a <b>Live Wall</b> view type: a full-screen wall of coloured tiles, one per job, scaled so that every job fits on the screen at once. Built for the television in the corner of an office rather th
플러그인Java · JavaScriptGitHub @jenkinsci온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기A Jenkins view that turns your jobs into a wall of big coloured tiles
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A Jenkins view that turns your jobs into a wall of big coloured tiles, built for the television in the corner of the office.
Hexagons interlocked into a honeycomb. Jobs building right now sort to the top left, and the striped fill means Jenkins has no duration estimate to draw a progress bar from yet.
A minute and a half against a real controller: the shape, animation, palette and ordering all changed on a live wall, then the kiosk page a television would be pointed at.
https://github.com/user-attachments/assets/e48af9e4-a600-454d-af14-13f24d65c157
No player above? Watch the demo — the inline video only renders on GitHub.
Inspired by the excellent Build Monitor plugin, which pioneered the idea. Live Wall is a rethink of the same idea for one specific situation: a large screen that nobody is standing next to.
That leads to three promises, and they are the whole design.
There is no pagination, and there never will be. Tiles are measured against your actual screen and scaled so that every job in the view is visible at the same time. A job you can only see half the time is a job nobody sees.
A tile has a job name and a colour. That is it. No commit messages, no durations, no avatars — at four metres you cannot read them anyway, and they cost the space the job name needs.
The palettes are fully saturated rather than pastel, and the text colour on each tile is chosen from the measured contrast ratio against its fill, so it stays legible whatever colours you pick — including ones you invent.
A building job fills up in step with its estimated duration, and falls back to indeterminate stripes the moment it overruns that estimate. The animation never lies about how far along a build is.
The same jobs as rounded rectangles. Ten shapes, six palettes, and an adjustable gap — the default is zero, so the tiles meet and the wall reads as one surface.
…/view/<name>/wall — the kiosk page, with no Jenkins chrome on it
at all. The Full screen button on the view page does the same for a browser you are already
sitting in front of.That is the whole setup. Everything else is optional, and every default is chosen to be the one you would have picked.
Requires Jenkins 2.555.3 or newer, running on Java 21 or newer. Java 21 is a requirement of Jenkins itself at this version, not of this plugin — core 2.555.3 is compiled to Java 21 bytecode, so a Java 17 controller cannot run that Jenkins at all, with or without Live Wall.
Prefer to build it yourself, or want a throwaway Jenkins to try it on rather than your own? docs/building.md covers building and installing from source, and docs/demo.md starts a disposable controller with the plugin and a spread of sample jobs in one command.
| Palettes | Vivid · Neon · High contrast · Daylight · Colour-blind safe · Midnight, plus per-colour overrides on top of any of them |
| Shapes | Rectangle · Rounded · Square · Circle · Octagon · Hexagon · Diamond · Parallelogram · Chevron · Cross |
| Animations | Progress fill · Sweep · Stripes · Pulse · None |
| Contents | All jobs, or only problems — an alert board where an empty screen means everything is fine |
| Order | Running first (default) · Failed first · Passing first · Name (nothing ever moves) · Most recent · View order |
| Which jobs | Tick them in the job picker, or filter by name with ci-*, *-pipeline or just drools — wildcards and plain words, no regular expressions |
| Labels | Folder paths on or off, and a regex to strip the noise: ^ci-|-pipeline$ turns ci-decision-control-pipeline into decision-control, and lets it be drawn twice as large |
| Packing | Interlocked by default, so hexagons tessellate into a honeycomb and diamonds into a lattice, with an adjustable gap (0 by default) and a hairline separator that keeps touching tiles countable |
| Sizing | Fit everything on one screen, or hold a readable size and scroll continuously |
| Panel care | Optional slow drift to protect OLED and plasma screens from burn-in |
Try any of it without saving by putting it in the URL — handy for a screen you cannot comfortably type on:
…/view/pipelines/wall?palette=neon&shape=octagon&refresh=10&header=0
The view page also has a preview bar: drop-downs for palette, shape, animation, packing and order, and sliders for the gap and the separator, all applied to your real jobs as you change them. Moving one changes the wall in front of you and nothing else, so you can try a palette on the real thing without committing to it — and Save this look then keeps what you arrived at, so the kiosk page and full screen open with it too.
Every setting is documented in docs/configuration.md.
The server renders an empty shell and then answers …/view/<name>/wallData with a small JSON
document — one object per job, carrying a label, a status, and raw timestamps for anything building.
Everything else happens in the browser, which is what lets a wall sit open for months without
reloading. That endpoint respects permissions: jobs you cannot read are not in it.
The same document carries the view's look under settings, so a client that draws the wall itself
from wallData can show it as configured. The keys match the attributes the page hands wall.js
(palette, shape, animation, sizing, packing, sortBy, gap, seam, burnIn,
showHeader, showBuildNumber, refresh, minTileHeight, emptyMessage), plus colors with
the custom background, success, failure, unstable, aborted and idle colours, null when
unset. It needs nothing more than reading the view: the page already shows all of it.
Three pieces of that browser code are worth knowing about, all in
wall.js:
fitColumns() | Scores every possible column count by the size of the largest tile it would allow, and picks the winner. This is what replaces pagination. |
fitFontSize() | Measures the real glyphs on a canvas and binary-searches the largest font size at which a job name still fits its tile, breaking at spaces, hyphens, underscores and slashes. |
inkFor() | Computes the WCAG relative luminance of each status colour and picks black or white text from the contrast ratio. |
| Trying it locally | The one-command demo script, and how to drive it |
| Building, testing, installing | Development loop, running the tests, installing into your own Jenkins |
| Configuration | Every setting, URL parameters, JCasC, the JSON endpoint |
| Contributing | Issues, pull requests, adding palettes and shapes |
| Releasing | How continuous delivery works here, which labels ship a change, and why versions are not semver |
| The bar | All tests passing and zero shipped CVEs, for every pull request — and why the security scan is two scans |
Issues and pull requests are welcome. Read docs/CONTRIBUTING.md first — especially the short list of things this plugin deliberately does not do.
Every pull request must have all tests passing and zero known vulnerabilities in anything the plugin ships. Both are enforced by CI, and the security scan also runs every Sunday morning, because the code stops changing but the vulnerability database does not. See the bar for why the security scan is two scans rather than one.
The job picker in the view configuration form is adapted from Jenkins core
(hudson/model/ListView/configure-entries.jelly, MIT licensed). Thanks again to
Build Monitor for showing what a Jenkins
radiator should feel like.