Read inputs from a file
Related issue #34202
Problem
Users would like to run a pipeline that reads values from an interface as inputs
Requirements
- The users is responsible for the API endpoint being updated with the an up to date values.
- GitLab should be able to hit that endpoint and receives that information to be used as part of our inputs interpolation so if the endpoint returns
{"id": "my_params", "my_value": "fgh", "another_one": "ijk", }. Then$[[ parameters.my_params.my_value ]]will evaluate tofgh.
Proposal
Allow users to read inputs from a file in the following manner.
spec:
include: # just like our standard include syntax
- remote: https://example.com/inputs.yml
inputs:
# standard inputs
spec:
include: # just like our standard include syntax
- local: ci/config/inputs.yml
inputs:
# standard inputs
The included file would look like this:
inputs:
job-prefix:
description: "Define a prefix for the job name"
job-stage:
default: test
environment:
options: ['test', 'staging', 'production']
We will allow a mix and match between multiple input files and existing spec: input configuration
spec:
include: # just like our standard include syntax
- remote: https://example.com/inputs.yml
- local: ci/config/inputs.yml
inputs:
# standard inputs
job-prefix:
description: "Define a prefix for the job name"
job-stage:
default: test
environment:
options: ['test', 'staging', 'production']
WIP Proposal (not final)
# components/my_component:
spec:
inputs:
my_static_value:
my_dynamic_value_1:
my_dynamic_value_2:
---
test:
script:
- echo $[[ inputs.my_static_value ]]
- echo $[[ inputs.my_dynamic_value_1 ]]
- echo $[[ inputs.my_dynamic_value_2 ]]
# my .gitlab-ci.yml
include:
- local: 'components/my_component'
inputs:
my_static_value: 1234
my_dynamic_value_1: $[[ repository.file('inputs.abc.yaml').my_dynamic_value ]] # Read input from a file
my_dynamic_value_2: $[[ parameters.json('somewhere').something ]] # read input from JSON
Edited by Dov Hershkovitch