Skip to content

Support Resrouce Group in Cross-Project/Parent-Child pipelines

What does this MR do?

This MR does the following things:

  • Allow processables (Both Ci::Build and Ci::Bridge) to be associated with Ci::ResourceGroup. Previously, only Ci::Build was able to do it.
  • Extending state_machine in Ci::Bridge for waiting_for_resource state. This state happens when a processable is waiting or Ci::Resource. (Ci::Build already has this logic)
  • In order to show the "waiting" status on the bridge job on UI, we prepare Bridge::WaitingForResource status, which identical to Build::WaitingForResource. We introduce a proper abstraction with Processable::WaitingForResource.
  • Refactoring the tests and factories to avoid duplicates.
  • Nice documentation 📖

Related #39057 (closed)

Screenshots (strongly suggested)

Here is the .gitlab-ci.yml used for Manual QA.

deploy-downstream:
  # Example for Parent/Child pipelines
  trigger:
    include: child.gitlab-ci.yml
    strategy: depend
  # Example for Cross-project pipelines
  # trigger:
  #  project: root/cross-project-resource-group-downstream
  #  strategy: depend
  resource_group: iOS

Confirmed that bridge jobs transitioned to "waiting_for_resource" status, and atomically processed one by one.

screenshot_242

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