 Welcome everyone to Jenkins windows is an application support presentation. So I'm with each other and I'm from Sri Lanka. And I'm under the good of more training city. And this is my first time of was out of code. And I had a little bit of experience in web development. And thank you land. So this was my background. Okay. Now let's move into windows. So if you talk about windows, a stripper. So windows stripper is a tool which we can use to run Jenkins as a service in windows machines and the services actually features actually bundled into the Jenkins core itself. And we have to provide a lot of configurations into windows stripper. So, at the initial state of this project, I mean, before we start this project, we will configure windows by an xml configuration five. So you can find the project in the one link. And if you talk about current configuration actually the current configurations mean the configuration that we had the initiate stage because the thing we did then this project is update this configuration. Management. So, at the initial stage of this project, we configure the windows server by an XML configuration file and XML configuration file should be name should be same as the executable file name. I mean, the windows.exe file name and XML file should be located in directory where windows.exe is located though in accessibility. That's how we, how that approach that we had to find the configuration file. And some problem that we had at the initial stages, we can't specify the configuration file from command line interface and they have no XML schema validation and yeah. So the how configuration management was at the start of this project. So, if you interested to find example XML configuration file, you can find file in the given link. So, this is how sample configuration file I mean the XML configuration file looks like in windows server there are a lot of competition. This image contains only a few of them. And so my project in Google Summer of Code 2020 was configuration as the XML configuration file. So, if we talk about the project tasks that we had to complete in this as the ML configuration support is the major deliverable and new CLI and XML schema validation are the other deliverables that I have to productually those second and third one added that the edit while we are doing the project and my proposal contains the XML configuration support part and while we are continuing with the project, those second and third deliverables comes and those also make sure. And, okay, let's talk about YAML configuration support and why we decided to move into YAML configuration. So, you know, YAML is less verbose and much more human readable than XML. I mean, XML is a great language that we can use to manage configuration. Anyway, YAML is becoming more popular among the configuration management tools and also YAML is lightweight than XML and also JSON. So, anyway, XML is a really good tool anyway and, you know, YAML is becoming much more popular among the community. So, I think it's really fair to provide YAML configuration support for Windows as a valuable use. Okay, and this is how sample YAML configuration file looks like. There are a lot of confusion apart from this as well. So, here are a few of them and obviously you can see it's much more human readable and that's kind of beginner friendly than XML. Okay, and if you talk about the talks that we had to complete under YAML configuration support. So, first thing that we had to do is passing YAML file. So, we had to convert the YAML file into an object graph. So, status is released. Actually, we released a feature preview release a few days ago and you can find a pull request that I created in the community. So, those are merged actually and release has been released. And I use the third part library which is called YAML.NET in order to pass the YAML file which is awesome library to pass YAML files in Sheshap. And though we decided to go into YAML configuration, so we will continue the XML support as well. So, definitely we have to update Windows Server Stripper as we can support both XML and YAML. So, I had to update that as well and I did that and released and you can find full request regarding this task in the given link. And if you talk about extension support for Windows Server Stripper YAML configuration. So, as in Jenkins, we had a few extensions in Windows Server Stripper as well. So, currently there are two extensions which are runaway process killer and share direct map. So, we are providing also those extensions need configurations external configuration. So, we are providing configurations for those extensions from the main configuration file that we are used to configure Windows Server Stripper. So, those extensions needed YAML configuration support. So, under this full request I have done those, that thing and it's also you can find that feature in the released asset. And if you talk about schema validation, so you know when we are writing YAML file, there are a lot of configurations that we have to provide. So, it's really fair to provide some schema validation support for users. So, because they can easily do specifying those configurations. So, at the moment we have to provide external, sorry, JSON schema file to validate YAML configuration schema. So, users can use some utility tool from Visual Studio Marketplace in order to validate YAML configuration file using JSON schema. And yeah, definitely we will integrate this feature into Windows Server Stripper code. So, then definitely we can validate the configuration file before Windows Server Stripper using those configurations. And I mean, at the moment the configurations are used on demand. So, if there are any mistake in configuration that uses specify, definitely so it should be crash. So, definitely we have to validate and verify this configuration before using. So, up to some extent now we can do this because I have done a little bit of validations using this JSON schema. But anyway, we have to do a little bit in this validation part. So, definitely in future, even after JSON, I am excited to do that task. And you can file the JSON schema file in the given link and this is currently merged. And you can find the pull request in the given link. Okay, some unit tests and documentation things were done during this project and there are a lot to do in unit tests. And I think documentation is kind of okay. But anyway, I had to do a lot in unit test coverage. So, definitely I will work on that after JSON. And also you can help by contributing unit tests and documentation. And so, if we talk about the new command line interface, so current command line interface has only commands. I mean, providing all commands and options. I mean, all the details will be provided as arguments, command line arguments. So, we need to let user to specify the config file from command line. And we need to let user to skip the schema validation as well. When they are providing the command to no size wrapper. So, we needed much more user friendly and much more manageable command line interface. So, we started working on that and pull request has been created for that. And there are a few things to do in this task. And this will be merged into version three patch that currently we are working on that. And if you talk about the status about this task is not merged yet. And yeah, anyway, you can contribute to that. And XML schema validation and we are validate XML schema. Again, some access defile. So there's open pull request for that. And there are a few things to complete in documentation part and this coverage in XML schema validation. So, yeah, those are the left in some of the validation part. And yeah, that's all about my project. And now let's move into demonstration. So, I think you can see my command line interface. Yes, I can. Thank you. Okay. Okay. First, let's see how we can use the same configurations with windows. So this is the configuration file that I'm going to use to provide the configurations into windows. So this is the basic configuration file and I'm using this. So we can first install the windows as proper using as I manage windows as manager. So, okay. Now Jenkins is installing. We can check in. So it's managed with ID Jenkins. Yeah. It's here. So started it. And we can start from that. And let's go to local host and let's see whether Jenkins is running on port 8081. We can refresh the service manager. Okay. Now it's running. It's working on perfectly. And yeah, that's a little demo, but the current release, I mean, actually, that's in that way we can use a younger configuration file that I just wanted to like that. And let me stop the Jenkins and install that. And, okay, then let's go into schema validation part. Okay. I mentioned that we can use utility tool by windows. Sorry, we should be a market place in order to schema validation for your configuration file. So you can use this configuration file. And you can use the tool called utility tool by redhead. And you can use this tool and you can provide the schema file to this tool. And you can use that to validate your YAML schema file. So then users can easily do this. I mean, yeah. Suggestion config suggestions is there. And Jenkins and this is not showing an error. So if we hover over this, it's a name property description, which are the compulsory configurations are not there. And let's add those. Description. We can use Java and there is auto completion. I mean, not actually talking to this generating the configure names. Also there. So now users can easily use this tool to validate the JSON file externally and now they can easily validate their YAML configuration file using this tool. And if you talk about new command line interface, actually, this is not completed yet, but there are a few things that I can show in this. Let me show. So if we talk about the current command line interface, so this is the way we provide the configurations. Sorry, details that need to windows. So if we want to pass, let's say, configuration file from the command line, actually, it's not the speech is not there. Anyway, if we wanted to do that, then we have to use some kind of way like this. So we think it's better if we can provide with the name documents, something like that. So that's why we moved to a new command line interface, which is more user friendly. So if we see the help, these are the commands which are available and now this command contains options which we can use to use easily. So we are providing commands into windows. So in this case, so you can provide the configuration file. Let me copy the part of the file file copy the file part and now this way, we can pass commands and options into noses. So this represent the config file so we can provide the config file using this way. So noses. So in this way, we can use the new command line interface. So but it's not the much that you can't use it. But there's the open tool request for this feature. So you can then using that PR and build from there. Okay, that's all about my demonstration. So, as I mentioned before, improvements, what we can do is actually we can integrate, we have to do integrate JSON schema validation and there are a few things to update in CLI and XML schema validation, which I will do after 2020. So those are all about my project presentation. So I need to thanks Jenkins project for that means and my project mentors. They did a really good job in this actually I didn't have the kind of system tool development experience before I had a little bit of development experience but I could start successfully in the help of my mentors. And really thank them. Especially like Nana show next turn and Michael surely with me with this and I need to thank Jenkins organizations and you did a great job. Awesome job. So that's all about my project presentation. And thank you very much. Me. Yeah. Thank you. Would mentors like to add a few comments. Sean. Yeah, thanks a lot for Boudica. Yeah, this project was slightly isolated from Jenkins at the moment, because Windows Service Rapper is located in the separate with our organization. But it has a serious value for Jenkins because Jenkins uses Windows Service Rapper for all kinds of Windows Service Management, including windows and stores including Jenkins core and any kind of agent installation also plug in which agents and support for YAML configuration actually simplifies integration with configuration management codes, which is a great addition in the future and I believe we will soon be able to adopt it once the future gets a bit more adoption and feedback. And yeah, Boudica was working on a new area because Boudica has a work experience is a web development development of system tools is slightly different area. But still, all the main data bills for the project have been landed. They got a good, good, good test coverage and overall the quality is quite good. We discussed a few major issues, but now they're fixed and I believe that soon we will be able to make it available in the Jenkins project. So, Boudica did a really good job and hopefully we'll be able to continue the project so that the remaining deliverables could be landed. Thank you Boudica. Thank you. Thank you so much.