Generate Run Pipeline form with pre-filled variables from .gitlab-ci.yml
Release notes
Previously when you wanted to manually run a pipeline, you needed to know the relevant variables and then enter them on the "Run Pipeline" page. This can be tediously and error-prone if there are numerous key/value pairs to enter. Now the Run Pipeline form wil generate with pre-filled variables for your pipeline based on the variable definitions in your .gitlab-ci.yml file.
Problem to solve
On the Pipelines page (example) when Run Pipeline
button is selected, the "Run Pipeline" form (example) only displays a simplistic form that assumes the user knows every variable name (key) and value that needs to be entered which is problematic for these reasons:
- user may not know all the required variable key/values that must be entered
- the task is tedious and inefficient when there are many key/values to enter
- manual entry is error-prone
Intended users
- Sasha (Software Developer)
- Devon (DevOps Engineer)
- Any user that needs to manually trigger pipelines, typically a developer or devops engineer
User experience goal
Proposal
When Run Pipeline
is selected, the form that allows the user to add variable definitions for running a pipeline or playing a job has pre-filled key/value pairs in the input fields based on variable definitions in the .gitlab-ci.yml file.
Example:
variables:
TEST:
value: "some value" # this would be the default value
description: "This variable makes cakes delicious" # makes this variable appear on the Run Pipeline form
NOTE: Only variables with keyword description
will pre-fill on the Run Pipeline form. This is to differentiate variables to surface as "inputs" vs variables just for passing information between jobs; we want to avoid surfacing all variables in a .gitlab-ci.yml
as "inputs".
Further details
Clarifications and notes from comments:
- Variables defined in
.gitlab-ci.yml
are pipeline inputs at the root level (not job inputs) - "Play manual job" button is not in scope for this issue
[Original author's note] We have about 100 developers who are running pipelines or playing jobs daily and need to set 6-10 variables every time they do so. Having to cut and paste each variable name in addition to the value is tedious, and potentially time consuming if they leave out a required variable and have to start another pipeline.
Permissions and Security
Documentation
Availability & Testing
- Unit test changes - Yes, there should be unit tests created for any new added logics
- Integration test changes - Yes, there should be integration feature specs to see variable render in UI with the expected description.
- End-to-end test change - Not required.
What does success look like, and how can we measure that?
What is the type of buyer?
Is this a cross-stage feature?
Links / references
https://gitlab.com/gitlab-org/gitlab-ce/issues/24935 Specify variables when running a manual job
https://gitlab.com/gitlab-org/gitlab-ce/issues/35896 Passing variables to CI/CD pipelines in all possible scenarios
https://gitlab.com/gitlab-org/gitlab-ce/issues/48974 Pipeline variables to be shown on the pipeline run page