DOI: 10.5281/zenodo.15133662
title: A Metamodel to Support the Migration and Evolution of CI/CD Pipelines

description: Reproducibility Package for “A Metamodel for Reengineering CI/CD Pipelines”

Abstract

In modern industrial software development, DevOps has become the leading approach for managing highly iterative software production processes. DevOps integrates development and operations activities, with Continuous Integration, Continuous Delivery, and Continuous Deployment (CI/CD) playing a crucial role in ensuring the iterative delivery of high-quality software.

CI/CD relies on pipelines composed of various automated activities, often implemented using commercial tools. However, due to the rapid evolution of these tools, CI/CD pipelines frequently require migration to newer versions or entirely different platforms. Since this migration process is predominantly manual, it is both time-consuming and error-prone.

To assist software engineers in this challenge, we propose a novel Model-Driven Engineering (MDE) approach to automate the migration of CI/CD pipelines. Inspired by the traditional reengineering horseshoe model, our method abstracts existing CI/CD pipeline artifacts into an intermediate metamodel representation. Using this metamodel, we can generate semantically equivalent pipelines for different CI/CD tools.

Our main contribution is a metamodel designed to represent the structure of existing CI/CD pipelines, building the foundation for MDE-based migration.

Contents of the Reproducibility Package

This package is provided inside the reproducibility.zip file, organized into the following folders:

1. devops2 – CI/CD Metamodel



Our CI/CD metamodel, built using the Eclipse Modeling Framework (EMF).

Requirements: Eclipse Modeling Framework (EMF).

Usage: Import into EMF or any Ecore-compatible library..


2. org.xtext.example.mydsl11 – Xtext-Based GitHub Actions Parser



An Xtext-based DSL for parsing GitHub Actions configuration files.

Used in an initial version of our research; the PyEcore parser (included below) provides better results.

Requirements: Eclipse Modeling Framework (EMF) and Xtext.

Usage: Import into EMF with Xtext installed.


3. GitHubActionsDataset – Dataset of GitHub Actions Configurations



A collection of 200 randomly selected GitHub Actions configuration files used to validate our initial GitHub Actions parser.


4. org.xtext.example.mydsl13 – Xtext-Based CircleCI Parser



An Xtext-based DSL for parsing CircleCI configuration files.

Requirements: Eclipse Modeling Framework (EMF) and Xtext.

Usage: Import into EMF with Xtext installed.


5. org.eclipse.acceleo.module.sample7 – Acceleo-Based Code Generator



An Acceleo-based generator that translates our metamodel into GitHub Actions configurations.

Requirements: Eclipse Modeling Framework (EMF) and Acceleo.

Usage: Import into EMF with Acceleo installed.


6. codegeneration – Example Configuration Files



Example configurations used to validate the syntactical correctness of our models.

Requirements: Eclipse Modeling Framework (EMF) and Acceleo.

Usage: Import into EMF with Acceleo installed.


7. modelequivalence – Validation of Model Equivalence



Contains CircleCI scripts used for validating model equivalence, including:



Their representations in our metamodel.

The corresponding GitHub Actions configurations generated from these models.



Requirements: Eclipse Modeling Framework (EMF) or any other Ecore-compatible library.

Usage: Import into EMF or any Ecore-compatible library.


8. casestudy – Migration Case Study (CircleCI → GitHub Actions)



A case study demonstrating how our metamodel supports migration from CircleCI to GitHub Actions.

Requirements: Eclipse Modeling Framework (EMF) and Acceleo.

Usage: Import into EMF with Acceleo installed.


9. pyecoreparser – PyEcore-Based Parser (GitHub Actions & Travis CI)



A PyEcore-based parser for extracting CI/CD configurations from GitHub Actions and Travis CI, converting them into our metamodel.

Includes:



The 200 GitHub Actions and Travis CI configuration files used for validation.

The 10 randomly selected GitHub Actions and Travis CI configuration files used for comparison with manual modeling.

A README file with installation instructions and usage guidelines.



Requirements: Python, PyEcore library, PyYAML library.

Usage: Follow the README file for setup and usage instructions.


10. Mapping – Platform-to-Metamodel Mapping



A mapping that aligns different CI/CD platforms with our metamodel.


11. automaticmanualvalidation – Automatic vs. Manual Model Validation



A set of 20 pipelines (10 from GitHub Actions, 10 from Travis CI) modeled in two ways:



Automatically using the PyEcore parser.

Manually by the authors for comparison.



Requirements: Eclipse Modeling Framework (EMF) or any other Ecore-compatible library.

Usage: Import into EMF or any Ecore-compatible library.


12. extended-metamodel– Our extended metamodel with subclasses to facilitate the migration process.



Our extended CI/CD metamodel, built using the Eclipse Modeling Framework (EMF).

Requirements: Eclipse Modeling Framework (EMF).

Usage: Import into EMF or any Ecore-compatible library..