Tekton running pipeline via passing parameter

5/5/2021

I have a Tekton Pipeline and PipelineRun definitions. But, I couldn't achieve to run Pipeline via passing parameter.

apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
  generateName: build-deploy-
  labels:
    tekton.dev/pipeline: build-deploy
spec:
  serviceAccountName: tekton-build-bot
  pipelineRef:
    name: build-deploy
  params:
    - name: registry-address
      value: $(REG_ADDRESS)
    - name: repo-address
      #value: $(REPO_ADDRESS)
      value: $(REPO_ADDRESS)
    - name: repo-name
      value: $(REPO_NAME)
    - name: version
      value: $(VERSION)
  workspaces:
    - name: source
      persistentVolumeClaim:
        claimName: my-pvc

How can I pass while parameters while trying to run that runner with following command kubectl create -f pipelinerun.yaml?

Example:

value: $(REG_ADDRESS) -> I wanted to pass registry address as right before the running pipeline instead of giving hard-coded constant.

Any ideas?

-- jdev
kubectl
kubernetes
tekton
tekton-pipelines

1 Answer

5/5/2021

You cannot pass those parameters when using kubectl create.

There are two alternatives:

Use tkn cli

You can use tkn, a purpose made CLI for Tekton. Then you can start a run of a Pipeline with, e.g.:

tkn pipeline start build-deploy \
	--param registry-address=yay \
	--param repo-name=nay \
	--workspace name=source,claimName=my-pvc

Initiate pipeline with Trigger

You can setup a Trigger that initiates runs of your Pipeline on certain events, e.g. when you push to Git.

Then your PipelineRun template with parameter mapping is done using a TriggerTemplate

-- Jonas
Source: StackOverflow