CI Resource Groups Status Transition
Important: This feature will be announced in gitlab-com/www-gitlab-com!36621 (merged). This MR has to be merged by Dec, 13th Friday.
What does this MR do?
There is an upstream MR !20950 (merged).
This MR adds status transition flow for Resource Group, which is used for Limit pipeline job concurrency using named semaphores. We introduce waiting_for_resource
status to Ci::Build
and manipulate the build status transition with Resource Groups.
Status transition overview
- When a build requires a resource, the status transits to
waiting_for_resource
. - When a build successfully retains a resource, the status transits to
pending
(orpreparing
). - When a build failed to retain a resource, the status stays as
waiting_for_resource
. - When a build finished, it releases a resource, and find the next waiting build.
The other notes:
- Ci::Bridge is not supported in this iteration.
Feature Flag
This feature is implemented behind ci_resource_group
feature flag and disabled by default. Once we've confirmed the feature is deemed stable, we remove the feature flag in order to publish the feature as GA.
TODO:
-
Split MR for YAML parser -
Introduce a status waiting_for_resource
and manipulate the status transition -
Write tests
Realted:
- Previous PoC !20450 (closed)
Screenshots
Does this MR meet the acceptance criteria?
Conformity
- [-] Changelog entry
- [-] Documentation (if required)
-
Code review guidelines -
Merge request performance guidelines -
Style guides -
Database guides -
Separation of EE specific content
Availability and Testing
-
Review and add/update tests for this feature/bug. Consider all test levels. See the Test Planning Process. - [-] Tested in all supported browsers
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