Skip to content

[Value Stream Analytics][FE] Migrate EE code into a core module with EE specific extensions

In order to avoid a massacre of conflicts, this should only begin after &2434 (closed)


Description

As per #30079 (comment 316199209)


  • The premium VSA FE code will need to be split into a core module with EE specific extensions / mixins. This includes;
    • The main Vue application
    • The Vuex store
    • VSA specific utils
    • FE related tests i.e. RSpec and Jest
  • Shared analytics utils will need to be migrated and potentially split with references updated in other features such as productivity analytics
  • Licensing checks will need to be added in order to provide the feature with limited functionality within ee for projects which are not on a premium tier
  • Additional tests will need to be added to ensure that licensing restrictions are adhered to

What can be done without BE

The VSA code can be migrated into a core module with EE extensions and simply not yet be initialised within the project level feature (at least for core). Integration tests and unit tests depending on fixtures will need to remain in EE until there is a working API.

Once we have the core code migrated for the group level feature, we can begin looking into how this will be implemented for the project level. As the project level feature is shared between core and EE, the EE specific mixins will require licence checks in order to determine which parts of the EE specific code can be loaded. We should be able to go ahead with pushing the licensing information via the gl object without input from BE. We would even go as far as enabling the migrated code on EE for the project level as we'd have a working API within the EE context.

Documentation on EE specific FE code

https://docs.gitlab.com/ee/development/ee_features.html#for-js-code-that-is-ee-only-like-props-computed-properties-methods-etc-we-will-keep-the-current-approach

Documentation on the gl object

https://docs.gitlab.com/ee/development/fe_guide/vue.html#accessing-the-gl-object