I created the Gitlab Jenkins plugin back when I was using Jenkins for all of my projects. I really liked the Gitlab CI integration within Gitlab, but switching to Gitlab CI was not an option at the time because it had not properly matured. I was inspired to find a solution that allowed Gitlab to recognize Gitlab CI, so I ported the needed API endpoints into a Jenkins plugin and made it available for the rest of the community that wanted to do the same thing. This inherently made Gitlab think that it was connecting to Gitlab CI when it was actually pointed to a Jenkins instance.
Over time, I eventually made the switch to Gitlab CI, so I stopped maintaining the plugin as I was no longer was actively using it. The plugin has since been taken over by a team inside of Gitlab and is used by thousands of developers.
Since Jenkins is a Java application the whole plugin was written in Java. I had to browse the Gitlab source code and manually parse out most of the Gitlab CI api’s as they were not documented at the time of development. Also, I created the plugin by looking at other Jenkin plugin implementations such as Github’s. From there, I implemented the needed api’s and got it deployed to Jenkins plugin repository.