CI variables in rules regexp
Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.
Summary
I'd like to make my gitlab-ci as generic as possible by defining rules using variables to trigger the pipelines. To that end, I would also like to use variable values in the regexp of my rules.
Example configuration
Here's the sample of my gitlab-ci code:
variables:
JAVA_PROJECTS: ressources|calculateur
.onJavaTag:
rules:
- if: '$CI_COMMIT_TAG =~ /($JAVA_PROJECTS)@(.+)/'
Example Project
I've setup a small test repo with that gitlab-ci here: https://gitlab.com/ArtyMaury/gitlab-ci-bug
Desired behavior
The pipeline should be triggered on a ressources@1.0.0 tag
Workaround via inputs
This example from the comments shows how to use variables with regexp via expand_vars.
# .gitlab-ci.yml
include:
- local: my_template.yml
inputs:
my_var: $MY_VAR # Defined as a Project variable with value: "my_test|my_value"
# my_template.yml
spec:
inputs:
my_var:
---
test-job:
script: echo
rules:
- if: '"my_value" =~ /^($[[ inputs.my_var | expand_vars ]])$/'
Full configuration:
This results in test-job added to the pipeline.
NOTE: expand_vars currently only supports the same variables available to include. Documentation: https://docs.gitlab.com/ee/ci/yaml/inputs.html#expand_vars – so variables defined with the global or job-level variables: keyword cannot be expanded. Neither can job-level predefined variables.
