Skip to content

Draft: Introduce AND vs OR tag logic

Joe Snyder requested to merge joe-snyder/gitlab:runner_tag_combination into master

What does this MR do?

This MR is the first of a series which will allow greater flexibility in the selection of a runner for a specific CI job by introducing the concept of "OR" tags. This will manifest in the CI as an array of tags

example1:
  tags:
      - tag1
      - tag3
      - [tag2, tag4]
      - [tag6, tag5]

This job would require a runner with tag1 AND tag3 AND (tag2 OR tag4) AND (tag5 or tag6). A runner with tag1 tag3 tag4 tag5 would match as would tag1 tag2 tag3 tag4 tag5 tag6

This MR introduces the feature flag and the backend code to recognize that an array is passed and to properly expand the values found within it. These arrays are stored in the database as || separated strings. It also has the code to split all tags over that separator value. Future work for this will remove the YAML requirement that tags only be string values, properly display the OR tags in the job web page, and ensure that the runners are properly selected.

Solves #20443

Screenshots (strongly suggested)

image

image

image

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 Joe Snyder

Merge request reports