Feature Request: Using ConfigMap Values For Params
#1,744 opened on Dec 12, 2019
Repository metrics
- Stars
- (9,013 stars)
- PR merge metrics
- (PR metrics pending)
Description
Expected Behavior
When defining parameters for a Task in my Pipeline, I would like to use values for the parameters which I defined in a ConfigMap, instead of hardcoding them in the Pipeline.
A cool solution would look like the use of ConfigMaps when defining environment variables in a Pod, there I am able to do this:
env:
- name: SOME_ENV_VARIABLE
valueFrom:
configMapKeyRef:
name: my-config
key: my-key
if params could work the same way it would be like this:
params:
- name: some-parameter
valueFrom:
configMapKeyRef:
name: pipeline-config
key: some-key
Actual Behavior
If I want to use a ConfigMap I can only use it on a Step level, and I can't directly access its values, this becomes an issue in the following Task:
apiVersion: tekton.dev/v1alpha1
kind: Task
metadata:
name: pmd-test
spec:
inputs:
resources:
- name: git-source-code
type: git
params:
- name: image
type: string
description: The image that will be used in the test
default: rawdee/pmd
- name: command
type: string
description: The command that will be used in the test
default: pmd
- name: args
type: string
description: The args that will be used in the test
default: -language java -dir /workspace/git-source-code -rulesets ./my-rulesets.xml
steps:
- name: test-pmd
image: $(input.params.image)
command: ["$(input.params.command)"]
args: ['$(input.params.args)']
in this example, I want to have the possibility configure the entire Step based on the ConfigMap, but currently it would look like this:
apiVersion: tekton.dev/v1alpha1
kind: Task
metadata:
name: pmd-test
spec:
volumes:
- name: config-volume
configMap:
name: pipeline-config
inputs:
resources:
- name: git-source-code
type: git
steps:
- name: test-pmd
volumeMounts:
- name: config-volume
mountPath: /my-path
image: $(cat /my-path/my-image)
command: ["$(cat /my-path/my-command)"]
args: ['$(cat /my-path/my-args)]
Note that this wouldn't work for the image since I'm only able to use variable substitution there.