Jenkins CI pipeline radiator - jenkins

We have many build pipelines running in Jenkins, each for separate projects and with multiple jobs (test, integration, deploy, quality, performance, release etc).
I am looking for some sort of radiator that will provide an aggregate single-page view of all pipelines, indicating if any have single jobs broken.
However, having looked around I can't find anything suitable. Has anyone seen anything similar at all? Would appreciate some pointers before attempting to build one...

As per #Gerolds suggestion above, the Categorized Jobs View plugin is able to aggregate a number of select jobs and therefore provide a single-page view on multiple pipelines (see attached).

Radiator? Click on the + right of your view's tab on your Dashboard. There's a view of type Radiator:
Shows status with high visibility, suitable for display in an extreme feedback system. You can choose which jobs are to be displayed in which view, in the same way as the list view.
And there's also the Categorized Jobs View:
Besides showing items in the list format, allows creation of categories of jobs

Related

How can I create Jenkins view that displays only currently running jobs?

I wan to make a Jenkins (2.x) view that displays only currently running jobs (or something very close to that).
Please note that I am talking about an instance >1000 defined jobs where at a single moment we expect to have 5-30 running ones.
Looking at the node/works sidebar is far from ideal as it involves scrolling a narrow column with a height of >20 screens,... almost impossible to get a "clean view" of the situation.
You should use View Job Filters plugin which allow you to filter job view,
Filter by Build Statuses of Currently building jobs.

How to add labels to an existing Google Dataflow job?

I am using the Java GAPI client to work with Google Cloud Dataflow (v1b3-rev197-1.22.0). I am running a pipeline from template and the method for doing that (com.google.api.services.dataflow.Dataflow.Projects.Templates#create) does not allow me to set labels for the job. However I get the Job object back when I execute the pipeline, so I updated the labels and tried to call com.google.api.services.dataflow.Dataflow.Projects.Jobs#update to persist that information in Dataflow. But the labels do not get updated.
I also tried updating labels on finished jobs (which I also need to do), which didn't work either, so I thought it's because the job is in a terminal state. But updating labels seems to do nothing regardless of the state.
The documentation does not say anything about labels not being mutable on running or terminated pipelines, so I would expect things to work. Am I doing something wrong and if not what is the rationale behing the decision no to allow label updates? (And how are template users supposed to set the initial label set when executing the template?)
Background: I want to mark terminated pipelines that have been "processed", i.e. those that our automated infrastructure already sent notification about to appropriate places. Labels seemed as a good approach that would shield me from having to use some kind of local persitence to track stuff (big complexity jump). Any suggestions on how to approach this if labels are not the right tool? Sadly, Stackdriver cannot monitor finished pipelines, only failed ones. And sending a notification from within the pipeline code doesn't seem as a good idea to me (wrong?).

Tracing changes made in Jenkins global configuration

Can I trace changes made in the global configuration of Jenkins to be able to retrieve the users who did the changes?
The Audit Trail Plugin tracks who is
creating/configuring/deleting jobs and views or delete/save-forever/start a build
If you are looking for something that tracks changes made under the Manage Jenkins section (ex. Configure System page or Add Plugins), I don't know of anything right off hand that tracks those change.
In our system, we severely limit who can access the Manage Jenkins section, or Job configuration, for that matter, so tracking changes is a less of an issue. Having as few administrators as possible might solve your issue. In our system, we do allow users to add certain types of jobs manually or perform certain administration / configuration tasks, but we do this by way of other jobs which control exactly how things are set up. In this way, we can easily track who added the job, ran the build, etc.

Jenkins managing/running THOUSANDS of jobs?

My company's CI uses Jenkins at the core, configured to run about 100 jobs -- one job per one Visual Studio solution.
For some reason (I have yet to determine why), my manager is eager to move to a job-per-project (Visual Studio .csproj, that is) Jenkins configuration. This is essentially going to increase the number of jobs to thousands.
My immediate thought was: Even if Jenkins is capable of handling thousands of jobs, what would be the user experience of the folks looking at the Jenkins dashboard like?
Some mitigation could come in the form of using tabs (views) to make it easier on the eye and on navigation (e.g. view/tab per solution or per some other class). But still... 100 tabs?
My questions are:
What is your experience with Jenkins managing/running thousands of jobs?
How did you solve the UX problem?
Are there other issues? (I am assuming performance is not an issue because in principle I can employ slave machines if I run out of resources).
What are the main benefits of running a job-per-project (vs. job-per-solution)
Partial answers/insights are very much appreciated as well.

Filter the Jenkins executor list to only the active ones

The company I work for uses a large Jenkins server with a large number of slaves to handle the build and testing for a particular product. The large number of slaves, many with numerous executor slots, makes for a very long list of slaves/executors in our typical Jenkins view.
Many users have asked if this view could be compressed, down to just a list of slaves with only those executors that are active appearing. For example; assume that Slave A has 2 executors, both idle and Slave B has 2 executors, one active. The display would look like this:
Slave A (2 available)
Slave B (1 available)
1: Building Job A
Instead of the typical view (using the same example):
Slave A
1: Idle
2: Idle
Slave B
1: Idle
2: Building Job A
I search for a plugin that would do this, or any native behavior, but didn't see anything like this. Does anyone know if it is possible and if so, how?
When you create a view, you can also set the view to show only the slaves that are relevant to the view.
Every user can also create their own views and set their own default view.
It is not exactly what you asked, but AFAIK this is the only way to limit the number slaves displayed.
We have exactly the same issue recently. So I made a simple plugin for it. It basically has a switch to either show or hide all the offline nodes. If anyone still needs it or want to add more features, you can go to this link and download the plugin.

Resources