Skip to main content
New to Testkube? Unleash the power of cloud native testing in Kubernetes with Testkube. Get Started >

Testkube Tekton Integration

Tekton is a powerful and flexible open-source framework for creating CI/CD systems, allowing developers to build, test, and deploy across cloud providers and on-premise systems.

The Testkube Tekton integration facilitates the installation of Testkube and allows the execution of any Testkube CLI command within a Tekton pipeline.The integration offers a versatile approach to align with your pipeline requirements and is compatible with Testkube, Testkube On-Prem, and the open-source Testkube platform. It enables Tekton users to leverage the powerful features of Testkube directly within their CI/CD pipelines, ensuring efficient and flexible Test Workflow execution.

Pre-requisites

How to configure Testkube CLI for Testkube and run a Test Workflow

To use the below Tekton Task with Testkube, you need to create an API token. Then, pass the organization and environment IDs, along with the token and other parameters specific for your use case.

How to setup Tekton CI/CD Pipeline and run a Testkube Test Workflow

To integrate Testkube with Tekton, please take a look at the example that runs a Test Workflow. If a Test Workflow is already created, you can run it using the command testkube run testworkflow TEST_WORKFLOW_NAME -f . However, if you need to create a Test Workflow in this workflow, please add a creation command, e.g.: testkube create testworkflow -f EXAMPLE_FILE.yaml. This will include the spec, steps and script necessary to execute the workflow.

Create a Tekton Task

This Tekton Task creates testkube Task on a Kubernetes cluster and integrates Testkube CLI. To connect to the self-hosted instance, you need to have kubectl configured for accessing your Kubernetes cluster, and pass an optional namespace, if Testkube is not deployed in the default testkube namespace. You can run all Testkube CLI commands using this Task.

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: testkube
spec:
description: >-
Run testkube cli commands with tekton
params:
- name: tkc-env
description: testkube cloud environment name
type: string
- name: tkc-org
description: testkube cloud org name
type: string
- name: api-key
description: api key for testkube account
type: string
- name: tkc-command
description: Command to run with testkube
type: string
steps:
- name: run-testkube-cli
image: "kubeshop/testkube-cli:latest"
script: |
#!/bin/sh
testkube set context -c cloud --env-id $(params.tkc-env) --org-id $(params.tkc-org) -k $(params.api-key)
testkube $(params.tkc-command)

Create Tekton Pipeline

This Tekton Pipelibe configures the CI/CD pipeline.

apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
name: testkube-pipeline # Name of the Pipeline
spec:
params: # Parameters that the Pipeline expects
- name: tkc-env
description: testkube cloud environment name
type: string
- name: tkc-org
description: testkube cloud org name
type: string
- name: api-key
description: "The API key for Testkube"
type: string
- name: tkc-command
description: Command to run with testkube
type: string
tasks: # Tasks to be executed as part of this Pipeline
- name: testkube-cli
taskRef: # Reference to a previously defined Task
name: testkube # Name of the Task being referenced is 'testkube'
params:
- name: tkc-env
value: $(params.tkc-env)
- name: tkc-org
value: $(params.tkc-org)
- name: api-key
value: $(params.api-key)
- name: tkc-command
value: $(params.tkc-command)

Create a Tekton PipelineRun

This Tekton PipelineRun instantiate the Pipeline. The Testkube CLI command can be added to tkc-command parameter. This example runs a Test Workflow.

apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
name: testkube-pipeline-run
spec:
pipelineRef:
name: testkube-pipeline
params:
- name: tkc-env
value: "tkcenv_34xxxxxxxxxxxxx"
- name: tkc-org
value: "tkcorg_b8xxxxxxxxxxxxxx"
- name: api-key
value: "tkcapi_58xxxxxxxxxxxxxxx"
- name: tkc-command
value: "run testworkflow TEST_WORKFLOW_NAME --watch"

It is recommended that sensitive values should never be stored as plaintext in workflow files, but rather as Secrets. Secrets can be configured at the organization, repository, or environment level, and allow you to store sensitive information in Tekton.