Allow strings and nested arrays of strings for before/after script
What does this MR do and why?
This Merge Request fixes #20957 (closed)
Nested "!reference[xxxx, script]" work
Nested "!reference[xxxx, before_script]" don't work
Nested "!reference[xxxx, after_script]" don't work
Looking at "Commands" and "Scripts" history, I wasn't able to find the reason for having 2 different objects
Therefore:
- "Scripts" are replaced by "Command"
- Tests are updated to change error message or remove case which are now allowed
Screenshots or screen recordings
CI configuration
default:
image: alpine
test1:
before_script:
- echo "test1 before_script"
script:
- echo "test1 script"
after_script:
- echo "test1 after_script"
test2:
before_script:
- !reference [test1, before_script]
- echo "test2 before_script"
script:
- !reference [test1, script]
- echo "test2 script"
after_script:
- !reference [test1, after_script]
- echo "test2 after_script"
test3:
before_script:
- !reference [test2, before_script]
- echo "test3 before_script"
script:
- !reference [test2, script]
- echo "test3 script"
after_script:
- !reference [test2, after_script]
- echo "test3 after_script"
Unpatched Gitlab:
https://gitlab.com/guillaume.chauvel/ci-before-after-script/-/blob/944af7a4379b24d1139c037fc03ce72a77c9c06f/.gitlab-ci.yml
This GitLab CI configuration is invalid: jobs:test3:before_script config should be an array containing strings and arrays of strings
How to set up and validate locally
Numbered steps to set up and validate the change are strongly suggested.
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
-
I have evaluated the MR acceptance checklist for this MR.