HiveBrain v1.2.0
Get Started
← Back to all entries
snippetMinor

how to checkout only specific folder from git repo((monorepo)) and build

Submitted by: @import:stackexchange-devops··
0
Viewed 0 times
howcheckoutbuildfoldergitspecificandmonorepofromonly

Problem

Hey folks I need some help on the jenkinsfile. Below is my usecase

This is the strcuture of my GIT repo:

root
  |->app1
  |   |->jenkinsfile
  |   |->dockerfile1
  |->app2
      |->jenkinsfile
      |->dockerfile2


I am having a monorepo, app1 and app2 in the root folder and when there is a change in app1 folder, only app1 should build and same for app2. I have defined the jenkinsfile in jenkins but when its build. its looking for dockerfile1 in root folder not inside app1.

P.S: I can see some thread where people asking the same question but the answer is in detail.

jenkinsfile:

pipeline {
    agent any

    environment {
        PIPENV_VENV_IN_PROJECT = true
        DEVPI_USER = '\'jenkins_user\''
        DEVPI_PASSWORD = '\'V$5_Z%Bf-:mJ\''
        WORKSPACE="${WORKSPACE}/app1"

    }
    stages {
        stage('Notify Bitbucket') {
            steps {
                bitbucketStatusNotify(buildState: 'INPROGRESS')
            }
        }

        stage('Build Environment') {
            steps {
                sh 'docker build -t app-builder .'
            }
        }

        stage('Test') {

            steps{
                sh 'docker run --rm app-builder pytest'
            }
        }

Solution

You can check out specific files or folders from a repo using git archive. I've done this from a Jenkinsfile using a shell command like so:

sh("git archive --remote=${repo_url} ${ref} ${path} | tar x")


You will, of course, need to set the variables repo_url (the url of the remote repository), ref (the ref/branch/commit/etc. to check out), and path (the path of the file or folder within the repo to check out).

Code Snippets

sh("git archive --remote=${repo_url} ${ref} ${path} | tar x")

Context

StackExchange DevOps Q#10837, answer score: 2

Revisions (0)

No revisions yet.