Project goal: Enhance Jenkins controller and agent service management on Windows by offering new configuration file formats and improving settings validation
Skills to study/improve: C#, .NET, Windows, Windows Services, YAML, Java (optional)
On Windows machines Jenkins controller and agents can be installed as Windows Services in order to get better robustness and manageability within the system. This is a functionality bundled into the Jenkins core directly. When installed as a service, Jenkins uses the Windows Service Wrapper executable (.NET, written in C#) which is being configured by XML config files. Currently there are only few configuration checks there (no XML Schema, limited validation, etc.), and it’s often that the service wrapper is misconfigured by Jenkins users.
In this project we propose to update Windows Service Wrapper to support YAML files as configuration inputs and to introduce better configuration validation during the service installation and startup. Usage of YAML should simplify configuration management in Jenkins, especially when automated tools are used. On the Jenkins side, patches could be proposed to the Jenkins Core and Windows Agent Installer module to switch them from XML to YAML once the new version of WinSW is integrated.
In this project students can also propose various extra enhancements to the Windows Service Wrapper project especially around logging and diagnosability. Students are welcome to explore the tool and to make other suggestions in their project proposal.
Windows Service Wrapper: https://github.com/kohsuke/winsw
Jenkins Windows Agent Installer Module: https://github.com/jenkinsci/windows-slave-installer-module
Jenkins WMI Windows Agents Plugin: https://github.com/jenkinsci/windows-slaves-plugin
Windows Service Lifecycle in the Jenkins core: https://github.com/jenkinsci/jenkins/blob/0795e89b308ec7fcbda097858d58763d8531be8c/core/src/main/java/hudson/lifecycle/WindowsServiceLifecycle.java
This project requires development on Windows, and hence the applicant should have access to a computer with Windows 10 or other recent Windows versions (amd64
is recommended)
Microsoft Visual Studio Community Edition will be enough for this project
Download WinSW (guidelines), then try it with some demo services
Try building and testing WinSW locally (Developer guidelines)
Try installing Jenkins and its agents as Windows services (guidelines for the master, guideline for agents)
Report any issues you discovered in the process
WinSW: GitHub Query