GSoC 2021: Final Evaluation
Project: Incremental Improvements to Debian’s CI platform
Project Link: https://summerofcode.withgoogle.com/projects/#6433686825730048
Code Repository: https://salsa.debian.org/ci-team/debci
Mentors: Antonio Terceiro and Paul Gevers
About the Project
Debian Continuous Integration is Debian’s CI platform. It runs tests on the packages published in the Debian archive, and today is used to control migration of packages from unstable, Debian’s development area, to testing, the area of the archive where the next Debian release is being prepared. This makes it a crucial part of Debian’s infrastructure.
The web platform shows the results of all the tests executed. Debian CI provides developers both API and a GUI Self-Service section to request tests for the packages and get information on test history.
This project involves implementing incremental improvements to the platform, making it easier to use and maintain.
Deliverables of the project:
- Migrating Logins to Salsa
- Adding support for testing security uploads and Debian LTS
Work done
Migrating Logins to Salsa
-
Originally, Debian CI used Debian SSO client certificates for logging in, but since that was deprecated logins are migrated to Salsa, Debian’s Gitlab instance and this is implemented with the help of OmniAuth, the ruby authentication framework.
-
Another thing fixed as part of this task was that there exists a limitation in the existing database structure, where usernames were directly stored as the test requestor field, so that relationship was normalized with a proper foreign key to the users table.
Merge Requests:
Adding support for testing security uploads and Debian LTS
In this task, work was done to enable private tests in Debian CI for adding support for testing security uploads and Debian LTS. It includes tasks from adding the private
field in the API and Self-Service section in requesting tests to adding an option to publish
them when ready through both interfaces.
Merge Requests:
- Add private jobs flag to jobs
- Submit private jobs via API
- Fix in migration file
- Submit private jobs via Self Service
- Add extra-apt-sources in API
- Add extra-apt-sources via Self Service
- Validate extra apt sources
- Publish private tests via API
- Update Self-Service Job History Page
- Add Publish and Retry in Self-Service
Others
I worked on some issues to add usability improvements for the web interface:
- Change Retry link to point to the self-service interface
- Add a user menu in the self-service interface
Learning Takeaways
I learned a lot throughout the entire journey. Some of the things to mention are:
- Writing tests: I learned about using
Rspec
for writing tests in ruby and understood how writing tests is an integral part of coding any project. - Using good coding practices: By my merge requests reviews done by my mentor Antonio, I came to know about good coding practices which help in keeping the code both clean and concise.
Acknowledgement
I owe huge thanks to my mentors Antonio Terceiro and Paul Gevers for their constant support and guidance throughout the entire duration. It is for them that I was able to get started with the code-base of the project in the first place. And while working on the project, they were extremely responsive to all my queries. My merge requests were all thoroughly reviewed which enables me to learn more and work more efficiently. It was a complete pleasure interacting with them on weekly meet calls.
To sum up, my GSoC journey was awesome 🎉 and I had a fun and productive summer with Debian 😃
What’s next?
As part of a continuation of my project task Adding support for testing security uploads and Debian LTS, I would be working on Debian CI to facilitate the process of connecting the embargoed archive.
It’s the end of my GSoC journey but certainly not the end of my journey with Debian or Open-Source. I plan to stay an active contributor to Debian and get involve with more Open Source projects as well 🌟
Extras
The link to my Salsa Profile for all my work activities can be found here.
To know more about my journey, my other GSoC blog posts can be found below: