GitLab Plugin Modernization

Project goal: Cleaning and modernizing the extensively used GitLab plugin

Skills to study/improve: Java, Docker, GitLab

Details

Background

The GitLab Jenkins plugin is widely used (over 55,000 installations), but it has not had an active maintainer for a long time. Several CloudBees employees have volunteered to keep it afloat over the years, including Owen, Basil, Bruno, Jean-Marc, and Mark. However, it could use a sprint of active development.

The primary maintenance issue with the GitLab plugin is the use of a very old version of RESTEasy. The goal of this GSoC project would be to replace usages of this library with usages of gitlab4j-api via the GitLab API Jenkins library plugin, normalizing the GitLab plugin’s use of the GitLab API with regard to the GitLab Authentication, GitLab Branch Source, and GitLab Logo plugins.

This project is on the easy side, but it requires a large amount of careful porting of existing code to call equivalent APIs with slightly different calling conventions. At each stage, care must be taken to ensure that errors remain propagated correctly.

A particular challenge with this project is to ensure that there are no regressions for corner cases:

  • Unauthenticated proxy servers

  • Authenticated proxy servers

  • Proxy servers and TLS URLs

Handling these corner cases should be feasible with the new library, but the existing logic will likely need some modifications. Testing proxy authentication is a bit laborious, but it can be done with various Docker images.

There is no substitute for functional testing, so testing changes to the GitLab plugin would also require setting up a local instance of GitLab. This would be a good opportunity to gain experience with the setup and administration of GitLab. The idea would be to exercise existing code against a real GitLab installation, then to test that the ported version still works in the same manner. Unfortunately, unit and integration tests will be of little value for this project.

If additional time is available, the GSoC contributor could look into reviving the Docker-based functional test suite. It has been broken for some time and is currently disabled.

Skills to Study and Improve

  • Java

  • GitLab

  • Code cleanup

  • Docker

Project Difficulty Level

Easy but long

Project Size

175 hours

Expected outcomes

The success criteria of this project would be a release of the GitLab plugin without a RESTEasy dependency and with a gitlab4j-api dependency, all without regression to end users.

Newbie Friendly Issues

Good first issues will help a new contributor better understand the plugin and how to debug and diagnose it.

Potential Mentors

Project Links

Organization Links

> Go back to other GSoC 2023 project ideas