Organization: Jenkins Project
Student: Alexandru Somai
Table of contents
- External Workspace Manager Plugin
- Blog posts @ jenkins.io
External Workspace Manager Plugin
The build workspace for Jenkins may become very large in size if you use a compiler that generates a very large volume of data. One of the solutions for this is to have a Jenkins plugin that is able to manage and reuse the same workspace between multiple builds.
During Google Summer of Code 2016 I have implemented from scratch a Jenkins plugin called External Workspace Manager, which provides a workspace management system for the Pipeline plugin. It facilitates workspace share and reuse across multiple Jenkins jobs running on different nodes. It eliminates the need to copy, archive or move files. The plugin also supports automatic workspace cleanup, multiple disk pools and flexible disk selection management.
The project’s source code is on GitHub: https://github.com/jenkinsci/external-workspace-manager-plugin.
During the community bonding period I have started writing a plugin design document. The document was also updated on the go, as I was progressing with the code. It is shared publicly via Google Docs at this link.
I have tracked my progress using JIRA. The EPICs are:
Following is the complete list of pull requests that I have made on the External Workspace Manager Plugin until August 23rd:
And the link to the list of commits on the same project:
The External Workspace Manager Plugin version 1.0.0 was released and it’s available in the main Jenkins update center. It can be used by the Jenkins users.
My project is dependant, more or less, on other plugins. Therefore, I have contributed to other Jenkins plugins too.
Run Selector Plugin
The External Workspace Manager Plugin needed a feature to select a specific build based on some input parameters. Such feature was available in the Copy Artifact Plugin. But, my mentors and I have decided that it would be better for the community to isolate the build selection logic in a separate plugin, so that, in the future other plugins may benefit from this functionality. I have started a discussion about this on the Jenkins dev ML: https://groups.google.com/forum/#!topic/jenkinsci-dev/G-ZnJu3h67g.
The work I did to decouple the build selection logic is in the
Run Selector Plugin.
Following is the link to my pull requests, until August 23rd:
And my commits on the Run Selector Plugin are:
I have also released the Run Selector Plugin with the above changes. Minimum version 1.0.0 is needed to be used by the External Workspace Manager Plugin.
Workspace Cleanup Plugin
The External Workspace Manager Plugin needed a workspace cleanup feature, so that the user may automatically delete the workspace after it was used. The Workspace Cleanup Plugin does that, but it was not Pipeline compatible. Since my project is mainly focused on Pipeline jobs, I had to make the Workspace Cleanup Plugin to be Pipeline compatible.
The Workspace Cleanup Plugin was released with my changes. Since version 0.30 it is compatible with my project, External Workspace Manager Plugin.
There are two types of automatic tests that I have written for the External Workspace Manager Plugin:
The unit tests are located in the plugin’s source repository, under the src/test/ directory.
The acceptance tests are located in a separate repository. They are meant to test the user interface and the integration with other plugins. For this, I have created the pull request #172 [JENKINS-36076].
I have also contributed to the Pipeline examples repository. The pull request is #45, and the commits are: https://github.com/jenkinsci/pipeline-examples/commits/master?author=alexsomai
The complete plugin’s documentation that I have written may be found on this page. It contains information of how to get started with the plugin, available features and basic usage examples.
There are many features that can be added in the future to this plugin, therefore I am planning to continue my contributions to the Jenkins project. The possible features are not part of the initial GSoC commitment, and were identified during the development phase.
During the GSoC I have also submitted several blog posts on the Jenkins blogging page:
- The introductory blog post: https://jenkins.io/blog/2016/05/23/external-workspace-manager-plugin/
- Alpha release announcement: https://jenkins.io/blog/2016/06/30/ewm-alpha-version/
- Beta release announcement: https://jenkins.io/blog/2016/08/09/ewm-beta-version/
- Stable release announcement: https://jenkins.io/blog/2016/08/22/ewm-stable-release/
During the midterm evaluation I had a presentation about the work I did on the project so far:
- the link to the video recording: https://www.youtube.com/watch?v=u4zhxfUT8P4&t=22m7s (my presentation starts at 22m7s)
- the midterm presentation slides are shared publicly via Google Slides following this link
By the time this page was submitted, the final evaluation presentation did not take place yet. It is scheduled for August 25th, 6 PM UTC:
- the Jenkins Online Meetup https://www.meetup.com/Jenkins-online-meetup/events/233378586/
- the presentation will be available on the following link https://plus.google.com/events/cabscbi59g6e60tbq9pa65tir18
- the final presentation slides are shared publicly via Google Slides following this link
For any questions regarding the project:
- join the plugin’s Gitter chat https://gitter.im/jenkinsci/external-workspace-manager-plugin
- send me an e-mail at [email protected]