Debug School

Cover image for How to Trigger a Jenkins job in Tekton
Suyash Sambhare
Suyash Sambhare

Posted on

How to Trigger a Jenkins job in Tekton

The following task can be used to trigger a Jenkins job using CURL request from a Tekton Task.

Task Installation

kubectl apply -f https://api.hub.tekton.dev/v1/resource/tekton/task/trigger-jenkins-job/0.1/raw

Available Params

  • JENKINS_HOST_URL: The URL on which Jenkins is running (Required)

  • JOB_NAME: The Job name which needs to be triggered (Required)

  • JENKINS_SECRETS: The name of the secret containing the username and API token for authenticating the Jenkins (Default: jenkins-credentials) (Required)

  • JOB_PARAMS: Extra parameters which needs to be appended in the CURL request. (Default: ""). JOB_PARAMS is of type array so multiple arguments can be appended. JOB_PARAMS can be provided as follows:-

    params:
      - name: JOB_PARAMS
        value: |
          - FILE_LOCATION_AS_SET_IN_JENKINS=@PATH_TO_FILE
    

Source Workspaces

  • source: In case any file needs to be provided to the Jenkins Job. (DefaultemptyDir: {})

Sharing Secrets

Secrets containing username,API token and crumb that are used in the task for making the CURL request.

Crumb can be obtained using following command :-

$ wget -q --auth-no-challenge --user username --password password --output-document - 'http://${Jenkins_URL}/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)'

This will give you something like Jenkins-Crumb:44e7033af70da95a47403c3bed5c10f8. Without crumb information, running curl command will result in example errors such as HTTP/1.1 403 Forbidden or Error 403 No valid crumb was included in the request.

apiVersion: v1
kind: Secret
metadata:
  name: jenkins-credentials
type: Opaque
stringData:
  username: username
  apitoken: api-token
  crumb: crumb
Enter fullscreen mode Exit fullscreen mode

Tekton

How to use

  1. Without JOB_PARAMS parameters
apiVersion: tekton.dev/v1beta1
kind: TaskRun
metadata:
  name: trigger-jenkins-job-run
spec:
  taskRef:
    name: trigger-jenkins-job
  params:
    - name: JENKINS_HOST_URL
      value: "http://localhost:8080"
    - name: JOB_NAME
      value: tekton
  workspaces:
    - name: source
      emptyDir: {}
Enter fullscreen mode Exit fullscreen mode
  1. With JOB_PARAMS parameters
apiVersion: tekton.dev/v1beta1
kind: TaskRun
metadata:
  name: trigger-jenkins-job-run
spec:
  taskRef:
    name: trigger-jenkins-job
  params:
    - name: JENKINS_HOST_URL
      value: "http://localhost:8080"
    - name: JOB_NAME
      value: tekton
    - name: JOB_PARAMS
      value:
        - id=123
        - verbosity=high
  workspaces:
    - name: source
      emptyDir: {}
Enter fullscreen mode Exit fullscreen mode

Ref: https://hub.tekton.dev/tekton/task/trigger-jenkins-job

Top comments (0)