Skip to content

Fetching latest changes

CARMLPipelinePrincipal edited this page Jul 29, 2022 · 1 revision

The CARML library is continuously improved and updated.

This section provides an overview of how to keep your library up-to-date.

Customization

A factor to take into account before updating your local copy of the library is if your copy deviates from the upstream version due to customizations you applied to the code.

Customizations are normally of two kinds: general improvements which may be useful for the public or something specific to your own environment.

General improvements

As a Solution Developer you may need to modify existing modules to get a new feature that is not implemented yet or to fix a bug.

In this case we recommend to contribute to the public CARML repository, in the spirit of collaboration and open source principles, helping to maintain a common codebase.

Contributing back to the upstream repository has two main advantages:

  1. Once merged, your improvements will be already part of next CARML releases and you won't need to deal with those customizations the next time you'll fetch latest changes from upstream.

  2. Your improvements will be validated in the CARML CI environment, and you can avoid managing additional validation of those customizations going forward.

Specific requirements

As a Module Developer you might add to the library company/organization specifics, either via conventions, parameters, extensions, or CI-specific changes.

In this case every time you integrate CARML updates into your own library, you'll have to compare the new public code with your customized one and re-apply your customizations to the updated code. This process can be automated, by script or CI, if customization tasks are repeatable.

In addition, you'll need to manage the validation of your updated and customized modules.

We recommend to adopt module library with the CI environment in this case, to automate the import of new code and speed up the validation process.

CARML updates' impact on your copy of the library

CARML updates can have different impacts on your version of the library:

  • Impacts limited to the CI environment
  • Impacts limited to specific modules
  • Impacts on all the modules when design changes are implemented

Before to proceed with the updates it's always recommended to check the new release's highlights on the releases page, and the closed pull requests to have an overview of what has been changed and the possible impact on your library.

Update procedure

The update procedure depends on which scenario you adopted when onboarding CARML:

Clone this wiki locally