alpha-3 release Pipeline as YAML (Simple pull request plugin)
About me
I am Abhishek Gautam, 3rd year student from Visvesvaraya National Institute of technology, India, Nagpur. I was a member of ACM Chapter and Google student developer club of my college. I am passionate about automation.
Project Summary
This is a GSoC 2018 project.
This project aims to develop a pull request Job Plugin. Users should be able to configure job type using YAML file placed in root directory of the Git repository being the subject of the pull request. The plugin should interact with various platforms like Bitbucket, Github, Gitlab, etc whenever a pull request is created or updated.
Plugin detects the presence of certain types of reports at conventional locations, and publish them automatically. If the reports are not present at their respective conventional location, the location of the report can be configured in the YAML file.
My mentors are Oleg Nenashev (Org Admin), Martin d’Anjou, Kristin Whetstone, Jeff Knurek
Code changes
All the pull requests made can be found here
List of major pull requests.
Phase 3
-
PR-25: Declarative pipeline code generator code exported to extensions for extensibility and support of custom sections
Jenkinsfile.yaml example
Documentation of Jenkinsfile.yaml and yaml format can be found here
Tasks completed in Coding Phase 3
-
Add unit tests, JenkinsRule tests JENKINS-52495
-
Refactor snippet generator to extensions (JENKINS-52491)
-
Plugin overview (Present in README.md)
Future tasks
-
Release 1.0 (JENKINS-52519)
-
Support the “when” Declarative Pipeline directive (JENKINS-52520)
-
Nice2have: Support hierarchical report types (JENKINS-52521)
-
Acceptance Test Harness tests JENKINS-52496
-
Automatic Workspace Cleanup when PR is closed (JENKINS-51897)
-
Test Multi-Branch Pipeline features support:
-
Support for webhooks (JENKINS-51941)
-
Check if trusted people have approved a pull request and start build accordingly (JENKINS-52517)
-
-
Finalize documentation (JENKINS-52518)
-
Test the integration with various platforms Bitbucket, Gitlab, Github.
My GSoC experience
Student applications started on March 12 16:00 UTC and ended on March 27 16:00 UTC. Application period allowed me to explore many new technology and platforms that are making peoples life easy.
Before starting of the application period I did not know anything about Jenkins. I found Jenkins organisation on the GSoC organisations page and came to know that I is a CI/CD platform that is used automate various things related to software development. I studied about Jenkins online and went through the problem statements provided by some mentors.
I decided that to work on Simple Pull-Request Job Plugin project. Then I wrote a draft proposal for this project and received many comments to refactor the proposal and enhance its quality from the mentors, then finally I submitted my final proposal to Google.
I was able to complete most of the tasks decided in Phase 1 and 2. After Phase 2 I was not able to give time to the project because of the placement season in the my college. I modified the code so that other plugin developers can contribute to it by Jenkins extensions.
All the mentors made themselves available for most of the weekly calls and provided many valuable suggestions during the entire period of GSoC. Sometimes I was not able to communicate effectively. As communication is the key while working remotely, mentors suggested to communicate more thorough gitter chat.
My overall experience of GSoC was good and all the mentors helped me as they can all times. This project allowed me to explore Jenkins and the services offered by it. I am allowed to work on the project after GSoC ends (This is a good thing).
References
-
link:https://app.gitter.im/#/room/#jenkinsci_simple-pull-request-job-Gitter chat