Titulo Estágio
Automated tool to convert Jenkins pipelines to Dagger
Áreas de especialidade
Engenharia de Software
Engenharia de Software
Local do Estágio
Fully Remote @Scalabit
Enquadramento
Continuous Integration (CI) and Continuous Delivery (CD) are software development practices aimed at automating the process of building, testing, and deploying software.
Jenkins is a popular open-source automation tool that is widely used for CI/CD. Companies use Jenkins to improve code quality, accelerate time-to-market, and enhance collaboration among development teams. However, there are some downsides on Jenkins that are leading companies to migrate to other tools:
- Managing Jenkins configurations, plugins, and pipelines can require a significant amount of time and expertise.
- Updating Jenkins instances with 3rd party plugins becomes a maintenance nightmare. Not all plugins are well-maintained or compatible with the latest versions of Jenkins. This can lead to compatibility issues, plugin conflicts, and unexpected behavior.
- Lack of built-in support for some modern CI/CD practices, such as containerized builds, infrastructure as code, and deployment automation.
- Outdated and non-intuitive web-based interface for managing jobs and pipelines when compared to more modern CI/CD tools. This can impact usability and productivity, especially for new users.
But there is a new kid in the block: Dagger.
- A programmable tool that can replace the software project's artisanal scripts with a modern API and cross-language scripting engine.
- Runs on all major CI platforms and there is no need to be locked-in a specific cloud provider (e.g. Gitlab or Github). Dagger allows to select the best provider without having to spend countless hours migrating ancient scripts (e.g. Groovy or bash) to the proprietary Domain Specific Language (DSL) used by the provider.
- Unifies developer and CI. The same Dagger pipeline can run on a dev machine or in the CI pipeline. Allows to test and debug pipelines locally and catch configuration errors in seconds with static type checking.
- Includes a wide catalog of reusable actions (e.g. k8s deployment, container scanning), or create your own in your favorite programming language.
In the industry we observe that companies are increasingly transitioning from Jenkins to popular cloud-based CI/CD platforms like GitLab CI/CD or GitHub Actions. Thus, a tool that helps them migrate automatically from Jenkins to Dagger could have a big impact on the industry by:
- Saving costs in the migration process (depending on the team and software complexity, it can take up to 1 year to transition to a CI platform)
- Reducing CI lock-in: Dagger functions run on all major CI platforms - no proprietary DSL needed
Objetivo
This internship has the following goals:
- Understand the current state-of-the-art around CI/CD tools
- Collaborate with the software community to gather ideas and refine this approach
- Create a tool that migrates pipelines from Jenkins to Dagger
- Apply the tool to real world scenarios
Plano de Trabalhos - Semestre 1
- State of the art (Months 1 and 2)
The first stage will consist in studying background knowledge on the topics related to the thesis. Namely, knowledge on Continuous Integration, Continuous Delivery, state-of-the-art in terms of tools, Jenkins and Dagger. The student is expected to explore and collaborate in the software community to better understand the problem at hand. At this point, the thesis chapter on the state of the art shall be drafted.
- Preparation of a case study and initial version of the tool (Months 3 and 4)
The tool should be able to translate a simple real world scenario from Jenkins to Dagger. At the end of this stage, it should be possible to demonstrate a first functional prototype of the tool.
- Intermediate report (Month 5)
The tasks carried out during the first semester will be documented in the form of an intermediate report, followed by a public presentation and discussion. The most relevant topics at this stage are: context, problem statement, state of the art and preliminary discussion of the solution and its intended objectives
Plano de Trabalhos - Semestre 2
- Development of the tool (Months 6 and 7)
- Evaluation of the tool against real-world scenarios (Month 8)
- Master’s thesis (Month 9)
The writing of the master's dissertation must be completed and the respective public presentation prepared. The dissertation must document all the work carried out, proposed solution, the results and the conclusions obtained.
Condições
The work will be carried out remotely, with the support of Scalabit for any computational resource required to carry out the work (e.g. cloud infrastructure).
Scalabit has a budget to pay the internship student which is discussed with the applicants
Orientador
Joao Miguel Franco
joao.franco@scalabit.dev 📩