Skip to content

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

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:

  1. Variables defined in .gitlab-ci.yml are pipeline inputs at the root level (not job inputs)
  2. "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

Edited by Thao Yeager