 Yeah, I do have super so it's the 23rd of June. This is Google summer of code office hours. Remember that we abide by the Jenkins contributor code of conduct. So I'm going to turn off my video and if you'd like to share your screen. We can we can talk through whatever you'd like or you can just ask questions. Yeah, I would share my screen just just a minute and let that. Yeah, basically my plugin build. So yeah, if you want to see the logs and that is fine as well. So I hope you can see my screen. Yes, sure can. Okay. Okay, so and how did you get here did you get here by running maven HPI colon run or you're doing something different. Oh yes it's I see it on the command prompt up at the top it says HPI colon run. Okay, yes. Something weird happened just just a moment. You guys can still. You're at your mirror and see the screen. Hello. Hello. Okay, yes. I think it's building this problem. I'm so sorry. I was a mute. I was saying let me just terminate this and restart and walk you through the entire process. So basically this is a branch by a contributor and my task was to actually check whether this is working. If yes, then merge the code. And I came to here and I was, I built, I tried to build this in the HPI run and basically did not build for me. Oh, okay. Up at the top it says the palm for for one of the tools is missing. Okay. So that make okay that now. Could you in a separate window show us your palm that XML file. I thought that that should already be covered by the use of the most recent parent palm. But what that, what I interpret that usually to mean is that there's a global settings.xml file in your dot m two directory that's not configured. You may have more guidance on this than I do but my recollection was that in order to avoid that message at the top we needed to refer to the repose dot Jenkins dash ci dot org in an m two settings dot XML file. So when you build an intelligent does it have the same same error that same message. I really know I remember building on my branch, like the one I was working on, and it did not get me this error. So maybe that that branch needs to be updated to the most recent. Something maybe like if like with something to something. Something different between your branches palm file and that. And the master or main branch yeah. No, because I saw that the contributor only changed the file in the next version. Oh, it's in just conventional comments. So that was the only five things. But if still that's the case then let's change to another time. Well, before you make that change. Could you. That's okay. I'll go back. I don't actually remember the name of the difference. Okay, so now do it get diff domain. Oh, there is a change in the pump. Okay, and so so you, you may want to. I don't know that that change in the palm file should cause the behavior you saw. But I suspect that change in the palm file is a surprise for you. So it may be that the contributor, the person who submitted the poll request was working from a branch that was older than the tip of your master of your main branch. So you could check that by quitting out of the less that's running and doing a get space merge space main. And now do that get diff to, to, to main. Okay, what branch are we on. It's called feature slash breaking change. Okay, and it's no different than main so it's as though it contains no changes now. Could you show us the log of this branch. So if you're surprised that why is that because Garrett merged the code and main writing 14 hours ago. Oh, okay, so this this branch that is feature slash breaking dash change has been merged. Yes, okay, so you were trying to operate on feature slash breaking change without merging it so we need to basically discard the merge that I just had you do. Did I understand correctly or. Yes, I am not sure because isn't feature breaking change that's a pull request that's open right now, right, like the repository and we're just trying to confirm that it actually works. So that was the task but then I think because it was taking time there and that all that and he merged, merged the pull request some hours ago. Okay, so that that is done. Okay. So, Aditya. Could you do you have the GH command install could you do a GH space PR space list. I'm afraid that won't work because it is not there. All right, that's okay. If you can just, I can look at the conventional commits pull requests. Yeah, I'm seeing here. It was merged. Is this basic. Yeah, I guess basically, I'm just going to build master. Do you know how bad the sounds. It sounds like it might be easier to just try to build master and see if it's still broken there. Does that make sense. Yeah, shall I do that. Because. Hello. Yes. Yeah, so you get check out mean, and let's try. Okay, I did not actually hear what Kristen said the last sentence I was like waiting. I think that if it's already merged into main. We need to make sure that main is not broken. Because if the problem is that the branch that you're looking at with that breaking change is different than me. But if this pull request is already been merged into me. It feels like it's already done right like it with the, the, the break is already been merged into the main branch. So what we need to do is make sure that main is not broken. Right. So like, let's. And then try running HP I run on main. And like, Mark was saying like it looks like there have been already changes between the breaking changes thing that you were running locally and main anyway so it might be best just to like restart. Look to see if there's a problem with me. And then go from there. Does that make sense. Yes, got it. So I checked out main and run it in the end. And the warning is still there. Yeah, so and that. And I don't know if that warning is fatal. But it surprises me. And so I, I just worry that we should be able to get rid of that warning for you. Right. Because it's a, yeah. Yeah. Do you have right to that repository. Can you go back up please. Or can you go back up to my error message was. Yeah. It's trying to write to D. Do you have a D directory. Yes, yes. I'm using windows. Well, yeah. So, but, but usually that failed to delete means that something is busy. And, and it may be that that what we've got is, it's got jetty running. It's trying to stop it and restart it. And, and it can't because windows has this behavior with regard to busy file systems. So this could just be an oddity with maven HPI colon run on windows. Could we. Well, so it's anything else running right now. In that space. Did the system not go down properly last time. But then I had reached a bit check down my laptop. So, like, you know, the process should have been like basically killed. And so I think that shouldn't be the case. But yeah, I'll take the process. Yeah, so I did. Yeah, I since, since you and I are both on windows, I'm going to go ahead and clone the conventional commits repository and try the same thing on my windows. I have a suspicion that I may be able to see exactly the same problem. So hang on just or you continue doing what you're doing. And I'm going to try to, to quickly duplicate the same thing. Okay. Part of me is worried that maven HPI colon run may not always be as well behaved on windows as we'd like. Because of windows busy file behaviors. Right. And there, I mean, the workaround for something like this is to just straight up build the plugin and create the HPI file. And then to start a Jenkins. Or you can even at that point have your Jenkins running. Maybe not because I don't, I don't think the tests for this are going to affect that, but you can have your Jenkins and then install the plugin into your Jenkins. Some of the advanced features. And then when that plug is installed in your Jenkins, like it's running. It's clearly running because it's been installed in your Jenkins. And then you can use it. Okay. Just like Jenkins. But yeah, if the HPI. Plug in thing is having issues like. I don't know. I find it sometimes easier just to ignore that and just actually create the object itself. Or like just create the HPI itself. And then install it into Jenkins. It takes longer. But I don't know. So sometimes if you're not trying to make. If you're not trying to do. Like little, little changes if you're, if you want to figure out what's going on with, especially now that we're with main, it may be easier just to do. Like a, like creating the HPI file. And then installing it that way. Do you know how to do that? Actually, I don't know how to do that. Or give me some kind of tutorial if it's long, if it takes something. No, so the actually instead of running. Maven HPI run, what you'll do is just. Maven package. And then it will go through and like create everything for you. And then what will happen to HPI file will be in your target directory. I think it might be in the plugin develop. I don't know if it's on the plugin development pages or not, but if you go to Maven package, it will go and like actually it will generate all the stuff that you need. And then if you go into the target directory of the conventional commits plugin, like it will be on the top level, which would be like conventional commits dot HPI. And that HPI file, you can pull into Jenkins. So on the Jenkins plugin management, like if you go to the plugin management stuff on your Jenkins, if you go to the advanced tab, I don't know if you have a Jenkins running. But you have a Jenkins running, you go to the plugins section, configure and then you go to plugins and then there's, you know, you see the ones you need to update, then they have. I think install available than like things that you have installed. And that last section is like advanced. And that's where you can do a whole bunch of configurations. There's an option option to upload each PI file from your local machine. And then you can just hit that button. Go find the file, you know, and then save. And then I think you might need to know if you need to do it on Windows, but you might need to restart. And then there's usually like after it gets installed, you can click this little checkbox that says like restart and nothing's running, which will be like immediately because you don't have any jobs running, which is good. And then after it restarts, your plugin will be available and then you can go and like create jobs or do anything else that you need to do. But we'll wait for Mark to see if you've got it. So I did, yeah, I've confirmed that the, I see the exact same failure. When I attempt to do a press enter to do a constant, to cause the thing to restart, it says exactly that failed to delete tempter. And then it does not start. And so I think what we've got is a problem in Maven, HPI, colon run that it's got some file busy. And then trying to delete it. So I think that the work around that Kristen has been describing is the one you'll need to use, which is run a Jenkins separately and load your, load your plugin into it. Now, if you need to do debugging inside that Jenkins, you can attach your IntelliJ debugger to the running Jenkins. Okay. Do you when I go, Mark, do you run into this problem with other plugins that you've had, like the get plugin, or is this something? Oh, yeah. It's, I think this is just a general purpose issue with Maven HPI colon run on windows. Okay. I didn't know if this was something in this repository that we could fix. And I didn't know what it would be. I think I've seen it before. So now I want to see if I can do. If one of the, one of the techniques I'd used in the past was instead of pressing enter to restart Maven HPI colon run, I would just rerun Maven HPI colon run. Let me check that now to see if that's any better behave. I'm going to run Aditya just for your info. When I run Maven HPI colon run, I do not get the warning about cannot resolve dependencies. And so I've got a settings.xml file that I think can, can help you resolve that if you don't mind my just emailing you that settings.xml file to put in your, your home directory.m2. Please, please email me that. Okay. I thought it was not required, but obviously I'm only using what I've got. And I know what I've got is working. So let's, let's let me at least give you what I've got. Okay. Okay. So I'm just going to email it to you, Aditya. That way. And I, I, I, this, this is, you should not consider this the one true approved settings.xml file. This is a settings.xml file that works for me. Okay. And Kristen, your, would you like me to copy you on this, Kristen, just in case you want to give any guidance on. Okay. Sure. Yeah. Yeah, because yeah, I think I understand the whole settings. xml file, but yeah, I, we'll see. I feel like everyone might have their own like special flavor, but it's probably very similar to be fair to be fair. My file, my file, my main file is probably almost exactly the same mark. You might have a little bit more than I do in my, in your file, but. Yeah, I hope mine's pretty simple, but the, I'll, I'll send it that way. You've got it, Aditya. If, okay, it's, it's now been sent to you. So if we're lucky, you'll see it in your email and can copy it into. Yeah. Okay. That's, that's just amazing. Let's see. I just shipped some bits halfway around the world, literally halfway around the world because you're in India, standard time, aren't you, Aditya? Yes. And, and they arrived in, in a matter of milliseconds. That's truly amazing. Technology is really awesome. So in your home directory, there's a dot M to direct. Yeah. At that level, we need a file named settings.xml. Okay. And now if we're lucky and I did things right. And now if you go back to your command line compile, and let's see if it compiles without that warning now. So we are. Yeah, exactly. Maven HPI colon run. The warning's gone. That's good. Okay. I like that much better. I feel better now. Okay. Now, and that was a first time run. So that surprises me because for me, when I do a first time run of your plugin, it works just fine. So that it may mean that. IntelliJ has something busy. It may mean that there's another process running somewhere on your computer that has that busy. We could, if you're willing to, if it's not too heavyweight, stop the process that's running here. And go out and try the same thing from a command prompt window in windows. Okay, definitely. Wait a minute. This was the intelligence. Oh, okay. If you don't mind closing IntelliJ, that's great as well. Yes. Oh, wait, this one was running. Oh, okay. Now we know who kept it busy. I'm so sorry. I should have terminated this one before opening IntelliJ. No, this, this is great. Good for you. Yeah, that was great. So, so do it again. And let's see this, this may prove that we actually don't have a problem in HPI colon run, but let's, let's try it and see. I don't know if you have so many windows open and lose track of where everything is. You do not want to see my, my Chrome, Chrome windows. Multi-tasking is very real and it helps us a bunch except when it doesn't. So open up a web browser to local host colon 8080 slash Jenkins. Okay. Yeah, that one. Exactly. Now some of the, some of the trade-offs you're making here. Oh, very good. Okay. So here it is. Scroll downward just a little bit and we'll see notice in the bottom right-hand corner, you're running Jenkins 2.249.1. And that's because that's the version that your palm dot XML file says is the minimum version that you can, you can support the conventional commits plugin with. If you would prefer to run a newer version, you can change your HPI colon run command to have a minus D Jenkins dot version equals and it will run a different version for you. So now could you go back to the command prompt window? Let's do something. So here, press enter. Let's see if it's able to successfully. No. Okay, there it is. Now you see the same thing I think that I saw. So now if you go back to your web browser, you will probably see that this note, this page no longer refreshes. Yes. Okay, good. So, so the moral of this right now is Maven HPI colon run, you can use once, but it doesn't support on Windows that press return to reload. So, and, and Kristen's point about run your own Jenkins, whatever Jenkins version you want is, is actually a very good one. And with, with skilled use of the Jenkins underscore home command, you can actually have multiple different Jenkins versions that you switch freely between them if you want. So would you like to go through it with us to how you can, how you start your own Jenkins there separately. That would be really helpful if it's okay with you. It's great with me. Kristen, are you okay with that? Yeah, let's do it. I'll stop this one. Okay. So you can exit out of this, out of this when there stopped this process. Great. So now what we need is we probably want a different directory. So go up one level say, and maybe create a new directory. Let's call it, let's use a different version just for fun. Let's call it Jenkins dash two dot two hundred eighty nine nine dot one. That's the most recent LTS now change to that directory. Right now we need to download that version from Jenkins.io. So open your web browser and go to the downloads page. Jenkins.io. Right. And then we'll just, when that page appears on the download page on the left hand side you see stable LTS scroll down a little bit. And we're going to download the generic Java package war. No, no, not for Windows. We do not want to do Windows. Whoops, cancel that. That'll cost you a 70 megabyte download that you want. You really want generic package Java, the very top most line there. Okay, this one. Exactly. That's the one you want. Click that one and save that preferably in that Jenkins dash directory just because then it's easier for us to know where it is. Right. Jenkins two dot two eighty nine dot one. Save it right there. So what this this will give us is this is going to give us a local copy of Jenkins two dot two eighty nine dot one. And we will teach it to run from inside that directory. So while it's downloading switch back to the to the command prompt window and let's in this directory I propose you create a script named go dot bat or something like that. It's up to what you want to call it. Okay. And then the first thing it needs to say is set space Jenkins underscore home all in caps equals and then the the absolute path to this directory. So C colon backslash or D colon backslash whatever it is. So I'm just copy it quickly. Okay. So the file explorer will give you a copy of it or yes that that will give you a copy. Any one of those is great. We just need that string. Exactly. Okay. Now new line and then Java minus jar Jenkins dot war. Okay. And that's that should be all it takes if you save that. Go ahead. It is just my habit that after saving nano it's like my fingers automatically click click control it. So I was like I'm so sorry for closing it. Oh no that's great. You did exactly the right thing. Well you can close it. That was perfect. Okay. Okay. All right. So now if we look at that directory has Jenkins dot war finished downloading. Not yet. So let's see in we're about halfway there. Okay. Good. So somewhere on your computer there is a Jenkins dot war elsewhere. Could you while we're waiting for this download to finish go looking for files named Jenkins dot war and we can do this same technique with other Jenkins versions while we're waiting for the download. That's going to be yours. Yeah when you when you did your initial installation of or have you installed Jenkins on this computer using the Windows installer. No, no, no harm not expected just if if you had that would have been one place to get it. Another place to find it. I have that. It's done much. Okay. Oh very good. Okay. So do go dot bat and let's see. All right. Now you'll want to copy that. You see that that. Yes, you did it exactly. So open up a. A window. Notice that what it's doing here is it's putting everything in ADI GSOC 2021 Jenkins or it's Jenkins dash two dot 289 dot one. So you now have a Jenkins installation that is nicely scoped to exactly that directory. So if you open up your web browser to local host port 8080 and now instead of slash Jenkins, I think it will not even require the slash Jenkins on the end. Yeah, there we go. It it saw your request. Now you just paste that administrator password. And yeah, clear that try again. And install suggested plugins is usually typical. Just click, just click the button. Right. And now what it's going to do is I think it will ask the update center for the list of plugins. Oh, that's interesting. Why would it say unable to connect Jenkins. Any chance you interrupted the command. Did you stop Jenkins. Weird. Refresh the page. I mean, either. Oh, look, look, you can see that it's downloading. It's definitely doing work. I wonder if it's UI. Yeah, maybe just refresh the page. I've never seen that method before. I've never seen this happen before. Okay, it's weird. This is the one we were expecting. Yes. Yeah, I wonder if it was, it's was a timing thing. I guess maybe just. I don't know. I don't know. I don't know. I've never seen that happen before. Have you, Mark? I have not. No. So I did your while this is running and it will, it will continue running using whatever, but download time it needs. This, this would allow you, this will allow you to. So one of the techniques that, that Kristen was mentioning, we could actually do in parallel to this. So if you want to bring up a command prompt window. Okay. And, and if you go to the place where your conventional commits plugin development is happening. So in this directory, you'll see the target directory. Yeah. And in the target directory, you should say, see conventional dash commits. HPI. Okay. Yeah. Yeah. Okay. So what, what, what you want to do to the easy thing to do now is copy conventional commits. HPI. Okay. As a file into. That. Jenkins dash two dot two eighty nine dot one. Backslash plugins directory. Okay. Yeah. Yeah. Okay. Yeah. Okay. Yeah. Yeah. Okay. So what, what, what you want to do it to the easy thing to do now is copy conventional commits. Okay. Okay. All right. So it'll be easier if I just copy. Yeah. Yeah, that whatever, whatever works best for you is great. So into the plugins directory, if you paste it there. And now the next time you restart Jenkins in that directory, it will have your conventional commits plugin ready. Oh, amazing. So that was, that was what Kristen was describing as the. Hey, just run Jenkins yourself. And by running Jenkins yourself, you don't have to use HPI colon run. You can now use the Jenkins UI to manage it. So we could have also done that same exact operation. By using the managed plugins upload operation. So there's an advanced operation in managed plugins and Jenkins that could have done it as well. And that was what Kristen was referring to my copy technique is just a cheat, right? It's, it's because I know that that plugins directories where those things go. Right. We can look at that page after this finishes too. So. Yeah. Now for fun, if, if you want to go back to the command prompt that we just started, we should see log output from it telling us how it's making progress. Yeah, there we go. So it's downloading the durable task plugin right now. And so at least I find this, this output oftentimes quite helpful to hint to me, oh, something, something happened there and I need to be aware of it. Now, at least for me, I also have to be careful that I don't press control C in this window because that will stop my Jenkins. Mark, you had another meeting, right? Oh, that's a good question. Do I have another meeting? Thank you for asking. That's very kind of you. Let me check. Yes. Yes. And that I, it would be good if I could join that. Aditya, are you okay? Actually, we may be blocking them. Are you okay if we end this session and just let you continue? Yeah, definitely. I'll, I'll go to the advanced. Okay. Then I'm going to go ahead and end this session and we'll let you continue your efforts. And then I can drop in on the, the UX sick meeting. Okay. I will stop sharing my screen then. Great. And I will later today upload the recording of this so that it's available to you for reference. Yeah. Thanks everyone. Thank you so much, Mark and Christian for helping me out. That this has been great. Thanks very much.