Skip to content

Persist expanded environment name in ci build metadata

What does this MR do?

Ci::Build#expanded_environment_name is very expensive process It needs to fetches number of variables to produces the correct environment name. Currently, this method is called from many places, such as pipelines.json endpoint, in such case, over 100 builds have to go through the expanding process, which produces over hundreds of queries easily.

This MR persists the expanded_environment_name in ci_builds_metadata to avoid the repeatable expanding process.

Related #21182 (closed)

Close #25155 (closed) #193816 (closed)

Impact

Here are the summary of performance bar on my local environment.

You see that the duration of pipeline.json reduced to half as #expanded_environment_name uses persisted value.

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:

  • [-] Label as security and @ mention @gitlab-com/gl-security/appsec
  • [-] The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • [-] Security reports checked/validated by a reviewer from the AppSec team
Edited by Shinya Maeda

Merge request reports