Manish Iarhovich
Manish Iarhovich

Reputation: 193

Transfer data between stages on Jenkins Pipeline

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

Example of code :

pipeline {
  agent none
  stages {
    stage('Clone repository') {
      agent {
        label 'builder'
      }
      steps {
        sh 'git clone ssh://[email protected]./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 . /

Upvotes: 3

Views: 757

Answers (1)

Marat Gareev
Marat Gareev

Reputation: 427

You can try to use stash:

stage('Clone repository') {
  agent {
    label 'builder'
  }
  steps {
    sh 'git clone ssh://[email protected]./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"
    '''
  }

Upvotes: 2

Related Questions