A straight Guide to Salsa CI - A Debian Continuous Integration tool
Tags: devops, packaging, debian
Published: 2023-02-21 13:33:57

I won’t waste your time with introductions. The title says it all so let’s jump right in. I’ll give you as many links as possible so that this article stays as short as possible.

So first, what is Salsa? Salsa is a name of a GitLab instance that is used by [Debian](https://debian.org) teams to manage Debian packages and also collaborate on Development. If you have used GitLab before, the Salsa platform is not any different. To have a feel of it, it is available at https://salsa.debian.org. Still, want to know more?  Find more information in the [wiki](https://wiki.debian.org/Salsa). Intrigued to a point of getting started? Setup up your account by following [this information](https://wiki.debian.org/Salsa/Doc)

Secondly, what is Salsa CI? Like many large projects with different contributors and strict maintenance, Debian is no different. This Linux distribution is made up of many packages which need to follow a certain standard and structure or purpose of compatibility, scalability and maintainability. The [Salsa CI](https://salsa.debian.org/salsa-ci-team/pipeline) is a continuous integration tool that does just that. I hope that is precise and satisfying 😊.

I would have ended here but since our focus is Salsa CI tool, let me get a little deeper and wider. You could also make great use of your time when I provide more information. The Salsa CI was developed to continuously check for the health of Debian packages before they can be uploaded to the archive by running a [series of CI/CD jobs](https://salsa.debian.org/salsa-ci-team/pipeline/-/blob/master/pipeline-jobs.yml). The jobs are run against [setup images](https://salsa.debian.org/salsa-ci-team/pipeline/-/tree/master/images/dockerfiles) that are already uploaded and updated regularly to reduce build time.

![A screenshot showing the Salsa Ci jobs.](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8kxn0h7m4nwzvhpf0lmg.png)


The use of Salsa CI is becoming prominent ever since its inception. “The Salsa CI pipeline has become popular (used by ~8k projects, from MariaDB to the Linux kernel packaging), and it is even the base for more complex CI pipelines used by other Linux flavours.” The issue is the more popular it becomes, the more efficient it has to get and the more need to make the build time as shorter as possible. This happens by iterating and testing out different tools during different stages of the pipeline to find the best industrial tool. This is one of the priorities for anyone who develops for or maintains Salsa CI. 

So that is how ‘deep’ I can go for now. 

But wait, what if you what to contribute?
If you have working knowledge in bash, git, CI, python and knowledge in building Debian packages it could be easy for you to figure out where components are and how they interact with each other. What if you don’t have the knowledge? Then that is where the fun comes in. 

Getting started on making a meaningful contribution to Salsa CI will need more passion and discipline, the expertise comes later and slowly. I have contributed to Salsa CI even without high-level expertise and knowledge in some of the tools. When I started contributing to Salsa  CI what a Debian package is, I even didn’t know that the tool that I am trying to navigate is being used by prominent software teams. But it is the challenge that I set for myself that as of now, enabled me to be able to work on a crucial part of the whole Continous integration. Wanna know what it is?

I am, as at the time of writing this article, integrating **sbuild** into Salsa CI to replace it with **dpkg-buildpackage**. This in turn will help to reduce the build time by getting rid of some jobs hence making the CI work faster. Cool, right?

Contributing to such a significant project can be a little challenging at the start but when you realize how important the piece you are working on is, you suddenly fall in love with it and want to follow through so that you can also be part of the large community that helps to make this world a better place in obscure ways. 

So why don’t you check out some of the [Salsa CI open issues](https://salsa.debian.org/salsa-ci-team/pipeline/-/issues) and see if you’d be interested in improving it?