2

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'
            }
        }
2
  • It'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?
    – Argyle
    Feb 18, 2020 at 15:03
  • @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. Feb 18, 2020 at 15:09

1 Answer 1

1

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).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.