Home > Software design >  Curl in Kubernetes agent on Jenkins
Curl in Kubernetes agent on Jenkins

Time:06-20

I have a script that uses curl and that script should be run in Kubernetes agent on Jenkins. Here is my original agent configuration:

    pipeline {
        agent {
        kubernetes {
            customWorkspace 'ng-cleaner'
            yaml """
kind: Pod
metadata:
spec:
  imagePullSecrets:
    - name: jenkins-docker
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
          - matchExpressions:
              - key: agentpool
                operator: In
                values:
                  - build
  schedulerName: default-scheduler
  tolerations:
    - key: type
      operator: Equal
      value: jenkins
      effect: NoSchedule
  containers:
    - name: jnlp
      env:
        - name: CONTAINER_ENV_VAR
          value: jnlp
    - name: build
      image: tixartifactory-docker.jfrog.io/baseimages/helm:helm3.2.1-helm2.16.2-kubectl.0
      ttyEnabled: true
      command:
        - cat
      tty: true
"""
        }
    }

The error message is "curl .... /home/jenkins/agent/ng-cleaner@tmp/durable-0d154ecf/script.sh: 2: curl: not found"

What I tried:

  1. added shell step to main "build" container: shell: sh "apk add --no-cache curl", also tried "apt install curl"- didn't help
  2. added new container with curl image: - name: curl image: curlimages/curl:7.83.1 ttyEnabled: true tty: true command: - cat - didn't help as well

Any suggestions on how I can make it work?

CodePudding user response:

I resolved it. It was needed to add shell step to main container:

shell: sh "apk add --no-cache curl"

and then place my script inside container block:

stages {
    stage('MyStage') {
        steps {
            container('build'){
                script {
  • Related