snippetMinor
how to checkout only specific folder from git repo((monorepo)) and build
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:
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:
This is the strcuture of my GIT repo:
root
|->app1
| |->jenkinsfile
| |->dockerfile1
|->app2
|->jenkinsfile
|->dockerfile2I 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
You will, of course, need to set the variables
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.