how to checkout only specific folder from git repo((monorepo)) and build
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).
Related videos on Youtube
gamechanger17
Updated on September 18, 2022Comments
-
gamechanger17 over 1 year
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' } }
-
Argyle about 4 yearsIt's hard to assist if we don't know what your Jenkinsfile is currently doing. Can you at least post the code block relevant to your question?
-
gamechanger17 about 4 years@Argyle: I know this jenkinsfile will not work. but this is something I need to do. whenever there is a change is sub-folder. it should build only that subfolder's app.
-