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
- Kubernetes cluster with Testkube Installed
 - Install Tekton Pipeline on the cluster
 
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.