Multiple Step Tekon Task and Script
In many cases, your tasks will have more than one step. This is why the steps field is a list. You can specify multiple steps using various images.
create a file with the name multiple-step-task.yaml with below content
apiVersion: tekton.dev/v1beta1 kind: Task metadata: name: multiple-steps spec: steps: - name: first image: ubuntu command: - /bin/bash - -c - echo "First step" - name: second image: centos command: - /bin/bash - -c - echo "Second step"
For the second task, we can use a different image. In this case, we are using ubuntu image in first step and centos image in second task.
now we are ready to apply this task to our cluster and look at the task's output with multiple steps.
learning-ocean:~ gaurav$ kubectl apply -f multiple-step-task.yaml task.tekton.dev/multiple-steps created learning-ocean:~ gaurav$
Now that the task is created, now we can list it using below command.
learning-ocean:~ gaurav$ tkn task ls NAME DESCRIPTION AGE hello 2 weeks ago multiple-steps 1 minute ago learning-ocean:~ gaurav$
Go ahead and run this task to see the outputs of each echo statement:
learning-ocean:~ gaurav$ tkn task start multiple-steps --showlog TaskRun started: multiple-steps-run-2fgnx Waiting for logs to be available... [first] First step [second] Second step learning-ocean:~ gaurav$
The log prefix is color-coded to make it easier to distinguish between the various steps. If you have a terminal that does not support ANSI color codes, you can disable this feature with the --no-color argument:
learning-ocean:~ gaurav$ tkn task start multiple-steps --showlog --no-color
Apart from the colors, now using your terminal defaults, the results should be the same.
Sometimes, we want to perform an operation that is more complex in your steps' command field. To do so, you can use a script instead of the command you used previously. You can only have a single command or a single script, but not both.
To do so, start with a new YAML file called task-script.yaml with below content
apiVersion: tekton.dev/v1beta1 kind: Task metadata: name: task-script spec: steps: - name: step-with-script image: ubuntu script: | echo "this is multi line" echo "shell script" echo "what we want to execute in single step" echo "Learning-Ocean Happy Learning"
Here, instead of using a command, a script is used, followed by a pipe (|) symbol. All of the lines at the same indentation level are then executed as part of the script.The script's first line used a shebang (#!) to tell the operating system which interpreter to use to parse the script that followed. this is a Bash script that starts with echo statements.
You can then apply this task to your cluster and run it with the Tekton CLI tool to see the output:
Gauravs-MacBook-Air:~ gaurav$ kubectl apply -f task-script.yaml task.tekton.dev/task-script created Gauravs-MacBook-Air:~ gaurav$
let's start the logs and see the logs using the below commands.
learning-ocean:~ gaurav$ tkn task start task-script --showlog TaskRun started: task-script-run-tpwsb Waiting for logs to be available... [step-with-script] this is multi line [step-with-script] shell script [step-with-script] what we want to execute in single step [step-with-script] Learning-Ocean Happy Learning