# Pull Requests

All code at Marfeel must pass the same pull request process before landing on production. This article focuses on the pull request process for Media Group repositories.

The process can be divided into 2 different categories: human verification and automated actions.

# Human verification

A Marfeel developer must always approve any pull request before it can be merged.

In addition to this general rule, some files are protected via GitHub's codeowners feature (opens new window).

The exact files protected vary per Media Group, refer to the CODEOWNERS file at the root of the Media Group.

Overall:

  • ALOT owns twister.json
  • Design owns ui.json

Marfeel Customer Success can request additional code owners for specific files, for specific Mediagroups.

# Automated actions

Compilation, as well as code quality and performance checks, run for every new pull request and after every new commit.

The exact actions depend on the type of build: incremental or full.

A full build uses Jinks or Marfeel CLI to compile static assets as well as running tests and linters.

A build is Incremental by default, but a full is required when there are changes to:

  • package.json and/or package-lock.json
  • JavaScript files
  • CSS files
  • JSP files
  • Json Files inside the themes folder
  • providers folder
  • features.json

Other cases are only JSON file changes, which trigger an incremental build.

# Full build process

A full build triggers the following:

  • Run Build with Jinks (using Maven).

  • Install and prepare npm dependencies

  • Build with Library:

    • Build JS and CSS
    • Run test suite
    • Run Linters
  • End2End testing

# Incremental build process

Incremental builds only trigger a JSON linter on the modified JSON files.

# Common build actions

  • If CDN-related files are modified, a CDN deploy is triggered.
  • Marfeel sections compilation