Transfer data between stages on Jenkins Pipeline

Viewed 286

Am I able somehow to copy data from one stage for usage on another?

For example, I have one stage where I want to clone my repo, and on another run the Kaniko which will copy (on dockerfile) all data to container and build it

How to do this? Because

  • Stages are independent and I not able to operate via the same data on both
  • on Kaniko I not able to install the GIT to clone it there Thanks in advance

Example of code :

pipeline {
  agent none
  stages {
    stage('Clone repository') {
      agent {
        label 'builder'
      }
      steps {
        sh 'git clone ssh://git@myrepo.com./repo.git'
        sh 'cd repo'
      }
    }
    stage('Build application') {
      agent {
        docker {
          label 'builder'
          image 'gcr.io/kaniko-project/executor:debug'
          args '-u 0 --entrypoint=""'
        }
      }
      steps {
        sh '''#!/busybox/sh
          /kaniko/executor -c `pwd` -f Dockerfile"
        '''
      }
    }
  }
}

P.S. On dockerfile I using such as

ADD . /
1 Answers

You can try to use stash:

stage('Clone repository') {
  agent {
    label 'builder'
  }
  steps {
    sh 'git clone ssh://git@myrepo.com./repo.git'
    script {
      stash includes: 'repo/', name: 'myrepo'
    }
  }
}
stage('Build application') {
  agent {
    docker {
      label 'builder'
      image 'gcr.io/kaniko-project/executor:debug'
      args '-u 0 --entrypoint=""'
    }
  }
  steps {
    script {
      unstash 'myrepo'
    }
    sh '''#!/busybox/sh
      /kaniko/executor -c `pwd` -f Dockerfile"
    '''
  }
Related