 Welcome to the Jenkins user experience special interest group. It's the 28th of April. Looking forward to a good, a good session today. Let's talk over, let's review our agenda, and then we'll work through it. So, Simon Simhoven has a presentation for us on a project that he's been working on. And I believe it's specifically related to GitHub poll request status reporting inside the Jenkins UI, then only status of bootstrap five migration for plugins. I've got an pending action item on an online meetup for the dev environment setup experience with Uli Uli I'm behind on that sorry I haven't sent the invitation yet I haven't even sent the proposal yet I'll get to that. There were some changes. We had the pipeline visualization demo there were some other changes that I think, Tim you may want to highlight for us. And then Damian we had a topic on multiple pipelines for a branch multi branch job, any other topics we should include on our agenda today. Okay, then let's let's get started and Simone you're the you're the first one up so I'm going to stop sharing my screen and that should allow you to share. Perfect. Thank you. But I cannot share my screen. Oh, oh, wait, oh, no. No, no. Can you see my screen now we can. Yes, thank you. So, so in the last few weeks I developed a pull request monitoring plugin for the Jenkins. So, the plugin offers a possibility to possibility to display and aggregate results in form of individual view dashboard. So you can configure the dashboard via the Jenkins pipeline, or inside of the Jenkins in the dashboard itself. So, I connected my, my podcast monitoring GitHub project here and open a pull request to for the demo today. So I can show you the plug in. Here's the action on the left side. And I configured the Jenkins pipeline as follows I will show you right now seconds, my second screen. So you have the possibility to define individual views with the key and the width, the height and the color. And if the run is built the action will add it to the dashboard and the configurable views will show here in the inside of the dashboard. You have the possibility to drag and drop it rearrange format, you can delete one and can add it back again with different color different size, and so on. And the dashboard shows you each time the actual configuration and you can copy it. If you want, and add it back to your to your Jenkins file to update. Update basically the next run of the monitor plugin so the views will update with the next run on the dashboard. So that's basically the plugin. Yes. That was a quick demo for today. And what sorts of content can be inserted or are you okay with questions Simone or yes of course of course. So what types of content can be placed inside the these these monitor pains. If you want, I built the demo with two charts of Mr. Huffman's plugins and one with static HTML content. If you want to provide a view. I did it here in my project. I had to begin with the second one. You have to implement the interface monster view and define a title and ID. The idea of the view is the class name. And each of you has to have a corresponding monitor jelly view where defines the plugin content to show in the dashboard and the factory will create the views. For example, if you have multiple views of the of the one class class first, you can define the factory and the different different plug in IDs to have. Yeah, basically to two instances of the same class. We basically have an extension point here and every plugin who wants to contribute can contribute some content. So this is some kind of build few, but it's a special few because you're not only have the build you also have the pull request that is part of this build. So, if you have a plug in that wants to work on a pull request you can show information, for instance, in my warnings plugin I can show the number of new warnings in this pull request. In the plugin we can show the number of new commits from this pull request. So it's basically up to the other plug in what to show. Yes, exactly. Okay so so for instance the the get plugin could contribute to this by saying, Ah, here are the number of lines added the number of lines deleted or here are the, here are the number of commits or here are the some potential of who the committers are. Yes. So, I think the project is divided into different parts one part is the drag and drop thing the, the, yeah, the dashboard and the other part is the extension point. We will provide a default implementation for the warnings plugin. First of all, and then yeah, we'll see if anybody else likes to contribute. I think there are a lot of possibilities to add here. And so, so in the in terms of the warnings plugin you're envisioning things like I could see incremental code coverage report in there or I could see an incremental check style warnings or an incremental report of all this these are the things that were. Let's see what are some of the others the Java doc warnings or the Java compiler warnings that these are all incremental as a result of that pull request. That was the idea yes. So this is done in my plug in just for my plug in and not on a level up in the hierarchy, and it would be helpful if this could be done by every plug in to show a delta in a pull request. That's, that's beautiful. Thank you. Questions from others I don't mean to be the only one asking questions. Others are welcome to ask questions to anyone. So that's really good job I really like the full, the full loop that you can generate the code and use it back. I understand that the configuration is based on the pipeline contents. There are there is no right now user defined configuration for instance if I want to dashboard inverted my colleague, but on the same pull request. Is it possible or is it a plan or is it out of the scope. At the moment the configuration is saved per per projects. But you can rearrange the dashboard locally, but with the next run the configuration is loaded back again from the Jenkins file so each project basically has one configuration at the moment. But yeah, yes we can think about it and implement it. You write the content to the local storage of the browser. Yeah. Yes. Is there a reason you don't save it in like the user's profile. No, not really. Sorry, so it stays across browsers and computers and sort of thing. You mean Jenkins profile. Yes. You can never use it yet. Okay. Maybe. Yeah, I mean, you'd add a user property for it. And then save it via some JavaScript request. And then yeah you wouldn't wouldn't be relying on the browser for storing the state. I'm not sure though how that will under the I'm thinking a lot but if there is a big change on what information is shown the view from the pipeline. If you have your own and there is a conflict during the merge configuration. And an easy problem to solve to define which one is the most prayer and because you can define priority but if someone decided to remove all the to remove like the third one. And you still have it on your local user profile that may be an complicated topic. While the current one defined by my friend is already is this tied to the job is it. Was it tied to the user as a whole, like what are you storing in the local storage. The local storage I save only this. So basically the JSON file from the Jenkins plug-in so I get the key the width the height and the color. And if I rearrange it. So it looks like it's stored at the for the whole Jenkins instance right it's not just the job that you're looking at this. Yes, the job I saved it here as a key so I have this monitor on custom custom dashboard and my own monitoring grid or the key. So if I open another dashboard is the default dashboard without a pipeline. I will have an empty dashboard because the Jenkins pipeline is empty. And I can add right sure project for the default dashboard now. Yeah, and you can do this. It's a lot of storage would work just the same. Well, you use the profile would work just the same. If you went that approach. It's very extension point for the profile that we can use. Yeah, use a property I think. Okay, I'll have a look at it. You'd have to create an API like expose an API to get the information, but yeah. Okay. Excellent thank you Simon so in terms of the, the list of possible views that you that appeared when you click the plus sign on the right hand side. And those are the views contributed by plugins plus views that may have been defined in pipelines or You mean this list here. Yes, right. I will iterate over the extension points of the install plugins of the Jenkins and search all plugins that implement and provide a view for this for my plugin. Okay, so this this is where warnings and G for instance will will appear as a selectable selectable you and they, the name, the name I I'm assuming won't be a full path it will rather be something more descriptive or is it, is it limited to the IO to the class path style naming. You can define your own ID but I used usually the class name for for the instance here second. And if I have a class with multiple instance multiple instances I defined the key with an extra you wanted you to key behind the class name, but you can get can use whatever you want to. You may want to separate ID from display name as well. Because I don't think we really want users to see a class name it should be a description or display name. Thank you. Maybe. Oh, go ahead. Yeah, maybe it would be helpful if we have some style like it is in cheer over we can add this which it's, which have a name and a preview. Let's see what the time gives us for here. I think starting simple with a good name is okay. And then we see get something else. Now, and I see the slot width and slot height units of four. Is that is that can you help me with the measurement on that is that 12 units is the total screen is it what what what do those units mean there. So it is 110 pixel. Oh, okay. All right, so it's pixels. Yeah. So it's defined in the CSS style sheet of the, for the dashboard I use movie group JS. And they can define the size of each slot with a pixel size in the CSS style. And here, for example, yeah, the width and the heights for 140 pixels with an height in the CSS style. Excellent. Thank you. Any other questions from from others. I think this dashboard few, if it is working out very good, we can use it on the build few or on the top few as well, where we can rearrange our charts and everything else, which is currently a little bit strange only on the right side so maybe it would be helpful to integrate in other views as well. Yeah, you know my plugin there's a link to the movie group JS so you can contribute to it or let's have a look. Nice. I'm just going to have a general comment around the thoughts kind of related to the mess of the job page but it'd be great to look at redesigning at some point with a simple view where plugins can't just go crazy. And we just if we have like to find contribution areas for things like minimal is CM information things like commits, maybe PR title code coverage area test result area. And like part maybe some pipeline information or something. But just having very specific minimal information that's only supplied like once just decluttering the view and making it a lot cleaner. Because now if you run like get plugin and you've got a library and maybe another library, you end up seeing the get information multiple times. It's not terribly relevant. Change of information again, not terribly relevant most times type timer sort of thing. The page is pretty ugly really that the talking about the run page right now. But yeah just a general redesign of the run page and the job page configurable is good for some but in general just a same page would be nice. And plugins contributing elsewhere. Because currently plugins just everyone wants to put their thing on their little badge. But it's how do we get that there in a nice way, and where should it go. Because I don't think just clutter the page randomly is the solution. And some of these places. Just say like what for the how like sidebar got bigger. It was users who had lots of plugins, the ones who are mostly complaining. Thanks a lot of sense Tim. Just actually your comments covered it thank you. Simon thanks very much so what's your what's your time frame tell us about tell us about how about how the project is going to evolve your honor I believe you're on a relatively strict schedule from the university etc so tell us more about what's coming next. I started the development of the plugin in March, I think. And I was finished it in July, so I have released the first beta version yesterday with Maiden. So, let's have a look I don't know what I have to do next or what I want to do. Yeah. So the beta version of the plugin works. So I will add first use in the plug-ins often saw off one xng and have a look with another contributor. Yeah. Excellent so it's already. And so is it already available from the Jenkins update center. I don't know. So, so if you haven't, if you don't know that probably means not yet. Plugging page not found. Because it has a beta suffix, and these things are not available in the update center in the official of just in the experimental. We don't show any information yet so you only have the dashboard with with this fixed images so. So it'll stay beta here for for a while do you do you hope to be ready to make it more visible by end of by July and time or is it going to need, you know, what's your sense there. Sorry, again, please. Will you do you hope to be out of beta by July, or yeah, definitely. Okay. So this is also something which can be iteratively defined increased because first we start with one few and send we see how much we can do. But I think it's already functional with one few. So to implement the first view with the one inch and G plug in and have a look at the interface I defined with the Jenkins file and so on will work as expected. Then I can release the first version, the main update center. And yeah, implement another monitor views from from other plugins. That's, that's amazing. Thank you. Thanks very very much. Thanks for for sharing it and thank you for doing the work. That's great. Look forward to it. Any other questions. No, that's really cool work. Thank you. All right, so I think we're ready to shift to to next next topic. Unless Simon there are other things that you've got that you wanted to highlight. Thank you. Okay, so I'm going to share my screen then let's switch back to the agenda. All right, so you had bootstrap five migration for plugins. No sorry I didn't take notes during Simon's message I'll have to add the notes later. Actually, this is just a small thing. Currently my plugins and some others as well use bootstrap form in Jenkins. And what I'm currently, what I'm doing is to upgrade it to bootstrap five which is to be released in the next weeks, let's say. Currently we are in beta three of bootstrap. And I migrated all my plugins now and everything works quite fine. So I think when the bootstrap five will be available for in the version five, I can switch all my plug ins as well. One thing which is still open is the data tables plug in which is not yet prepared for bootstrap five, but they will do migration as well. Probably in the next weeks as well. So one thing which is a little bit unclear to me, I'm not sure is Felix still around. Never seen him in the last couple of meetings. He certainly is around but he's not actively participating in the UX sick is his work has shifted him to another area. Okay. Because in Jenkins call we already also have bootstrap three dependency. Which I wanted to replace with bootstrap four, but I think now it would make sense to create a pull request, which replaces it with bootstrap five. Sorry. So, okay. And I had up for a pull request for Jenkins calling with it will take a time until bootstrap five is released. Very good. Okay, so, so that's that's actually kind of breathtaking to me I'm not accustomed to Jenkins UI libraries being upgraded concurrent with the, with the release of the library that's that's amazing. Very good. Are there any, any known compatibility hits that that might affect others. So you've, you say you've already upgraded to bootstrap five and warnings and G no big surprises there no. Nothing special. The only thing is in the J unit plugin we have dependency and all other plugins don't use it yet so the migration will be quite easy. But I will have a look in the J unit plugin it's not so much what needs to be changed. Cool. Yeah. So the J unit plugins tests are failing on the e-charts API upgrade recently. I have a chance to look. I sent a link in the chat. I'll have a look at it. So anything else on bootstrap five migration. Okay, next topic was, I've still got the action items and zero apologies I haven't created the abstract for the meeting yet. We've got a volunteer to act as the co host, a brand new person who joined and as proposing to help with Jenkins online meetups so we will have you do the be the primary speaker, but the idea is me and this co host will ask you questions go through this conversation. Let you show us what what how you sit and have the configuration set up so that students are able to successfully contribute quickly to Jenkins. Great. That's fine. Thank you. Thanks for having user experience changes reminder that the pipeline visualization plugin is has been released in a preliminary version. I've got it installed. I'm, I continue to be impressed even as a as a prototype. It renders, and I haven't found a pipeline that it doesn't render yet so well done Tim thank you. Anything that you wanted to say on that further Tim or any other insights. I just haven't had time. Anyone has time. Love any contribution there. Currently buried and insurance decay upgrades from, they have not been updated in years and absolute nightmare, but I spent the last few weeks on that. Understood so thank you very much. Any other pending you exchanges that you'd like to highlight, or that others would like to highlight. There's the run tables to do thing that I just don't have the energy to deal with, but it's not just. And that that I think you'd noted earlier in the notes that, hey, it's just on hold for now. Yeah, it's fairly straightforward I just got the things to do. Understood. All right, Damian next topic was multiple pipelines for a multi branch job. So I tried to join the last sg for pipeline offering, but it looks like that there were no meeting, or at least no one driving it. Much time so the next step will be sending a mail to the developer mailing list on the line to ask the question of what what will be the already attempt to have to manage multiple pipeline, what were the thoughts that we've written. That means also for myself having to search a bit the gira, at least asking the questions. And we'll see if someone is ready or not without any answer I think I will go if I don't have any answer any feedback for the next two weeks. So please then to find, let's say, a second person back with me to help me on developing on that part. So, so we can get started with a POC. The idea is not to produce POC but to write down the ideas. I'm not sure if a GP is the correct tool for this but that is writing something like a state written statement of what is the scope. What are the must have the nice to have the idea and the goal, just to be sure that we can share that and say okay we're going to build something based from that. Yeah we've in terms of those those kinds of ideas that sounds quite similar to the technique we've used with Google Summer of Code project ideas where we will sort of hoist them up, discuss them publicly, review them, use a use a public document as a review place that's the kind of thing you're envisioning here as well then. So yes. Great. Any other topics that we need to discuss today. All right, recording will be posted separately. Thanks for go ahead. I'm sorry. I'm out. Yes, you are go ahead. Yes, so I have a really small doubt that I posted yesterday about a small miss like a pic I posted yesterday on Gator channel. I posted a job view filter plugin. Okay. So this was a question that you had had on on the Gator channel. Can you hear me. Yes, sure can. Actually, I got disconnected I apologize. So my, my question is that I uploaded the photo and it needed some changes as I said by them as well. So do we want to make those changes. Yeah, I'm adding the message. I'm pointing the message. It sounds like that's what you posted. Sounds like a bug on the rendering of a specific widget is my understanding correct. So you posted the screenshot where there is. Okay, the checkbox is before a title. Yes, exactly. Yes. Okay. I might not have all the context but did you, did you try to open the issue because it sounds like a bug. And the idea is to provide as much information as possible to allow someone else on another machine and other Jenkins instance to reproduce the issue. So we would need you to open an issue telling us which version of Jenkins you are using the plugin versions that you are using that could be related to that widget. Is the generic reporting information. And personally I don't know exactly what future it is, but the goal is to explain how we can reproduce the same issue which web browser you are using just to be sure it might be web browser So the goal is to allow us to have info that kind of information and then someone will search confirm based on that info and we can seek for a fix. Or if you already have an idea you can totally start to contribute on that fix if you if you have this information as well. Is my understanding correct. Cool. Yes, yes. So what you're saying is I need to open an issue and provide all the specification that I have so that you can reproduce the same issue to your PC to check whether it's common or not. And then I or anyone else can work on it right. That is correct. Understood. Thank you so much. I hesitate to post on the Gitter channel. The link to the issue once you will have open it. So it will act as a reminder for the for the sg. Sounds good. Thanks a lot for reporting this. I see I see your comment on the channel my apologies that I don't think we've had. Oh, oh I see oh and Tim had asked okay. Build status should be above and. Yeah so I think what he's saying is that there is a. Yeah there are layout fixes needed so go ahead and propose a bug report. I think maybe something you can even propose then propose the fix for it as well. Yes, that's the aim from my side but I would need some help like where do I need to start like where that particular code is so after that I can definitely work on it that's the. Great. Yeah so if you if you provide us a little bit more detail and issue report we will happily help. So this plugin still a maintain that has this checkbox in it. Do you know this plugin. I think that was part of his question was which plugin is it what's contributing this component. I thought it's a job few filter plugin sorry. I thought it is clear with this which plugin is the problem. So so let's showing my ignorance really you read very well I think that's exactly what it says the view job filters plugin so that is a separate plugin. And it's easy to check to see what its health is your job filters. Okay there is a view job filters plugin it was last released 11 months ago, and so it's it's had some some work in the last 12 months relatively minor looks like from Jesse Glick, and that's about it so, but it, it, it's at least active enough that it's released within the last year. I think it's a good idea. It may be that you just take the view job filters plug in and build it locally and then experiment with it to see if you can identify where that text is definitely try this. Great. Thank you. Any other topics that should be discussed today. All right, recording will be posted later today. Thanks everybody.