Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-52735

checkoutToSubdirectory() ignored on first commit of new branch

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Not A Defect
    • Icon: Minor Minor
    • None

      I have a multibranch pipeline with a Jenkinsfile that contains the following git options :

       

       

      options {
      gitLabConnection('gitlab')
      gitlabBuilds(builds: ['Checkout', 'Installation', 'Build', 'Cleanup'])
      timestamps()
      checkoutToSubdirectory('MyApplicationName')
      }
      

       

       

      The checkoutToSubDirectory() option has been added early 2018 : JENKINS-44277.

       

      When I create a new branch, the first build fails because the checkout is not performed in the subdirectory mentionned above. 

       

      Here are logs for the first commit in a new branch :

       

       

      Running on tl-node-jenkins in /home/jenkins/workspace/Lab_tp-224-why-does-it-fail-UX4MQZ4M5EQBNID3TXQESLPPCTZG72YJT3JLH5JK74R6J3HSTBMA
      [Pipeline] {
      [Pipeline] dir
      Running in /home/jenkins/workspace/Lab_tp-224-why-does-it-fail-UX4MQZ4M5EQBNID3TXQESLPPCTZG72YJT3JLH5JK74R6J3HSTBMA/MyApplicationName
      [Pipeline] {
      [Pipeline] stage
      [Pipeline] { (Declarative: Checkout SCM)
      [Pipeline] checkout
      Cloning the remote Git repository
      Cloning with configured refspecs honoured and without tags
      Cloning repository git@gitlab.mycompany.net:sw/MyApplicationName.git
       > git init /home/jenkins/workspace/Lab_tp-224-why-does-it-fail-UX4MQZ4M5EQBNID3TXQESLPPCTZG72YJT3JLH5JK74R6J3HSTBMA/MyApplicationName # timeout=10
      Fetching upstream changes from git@gitlab.mycompany.net:sw/MyApplicationName.git
       > git --version # timeout=10
      using GIT_SSH to set credentials Use to clone repositories from Gitlab
       > git fetch --no-tags --progress git@gitlab.mycompany.net:sw/MyApplicationName.git +refs/heads/*:refs/remotes/origin/*
       > git config remote.origin.url git@gitlab.mycompany.net:sw/MyApplicationName.git # timeout=10
       > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10
       > git config remote.origin.url git@gitlab.mycompany.net:sw/MyApplicationName.git # timeout=10
      Fetching without tags
      Fetching upstream changes from git@gitlab.mycompany.net:sw/MyApplicationName.git
      using GIT_SSH to set credentials Use to clone repositories from Gitlab
       > git fetch --no-tags --progress git@gitlab.mycompany.net:sw/MyApplicationName.git +refs/heads/*:refs/remotes/origin/*
      Checking out Revision 21dd54ff667c95907e96ba9fa0593a740e5e018c (tp-224-why-does-it-fail)
       > git config core.sparsecheckout # timeout=10
       > git checkout -f 21dd54ff667c95907e96ba9fa0593a740e5e018c
      Commit message: "..."
      First time build. Skipping changelog.
      [Pipeline] }
      [Pipeline] // stage
      [Pipeline] }
      [Pipeline] // dir
      [Pipeline] withEnv
      [Pipeline] {
      [Pipeline] gitlabBuilds
      [Pipeline] {
      [Pipeline] timestamps
      [Pipeline] {
      [Pipeline] stage
      [Pipeline] { (Checkout)
      [Pipeline] gitlabCommitStatus
      [Pipeline] {
      [Pipeline] checkout
      11:05:45 Cloning the remote Git repository
      11:05:45 Cloning with configured refspecs honoured and without tags
      11:05:45 Cloning repository git@gitlab.mycompany.net:sw/MyApplicationName.git
      11:05:45 > git init /home/jenkins/workspace/Lab_tp-224-why-does-it-fail-UX4MQZ4M5EQBNID3TXQESLPPCTZG72YJT3JLH5JK74R6J3HSTBMA # timeout=10
      11:05:45 Fetching upstream changes from git@gitlab.mycompany.net:sw/MyApplicationName.git
      11:05:45 > git --version # timeout=10
      11:05:45 using GIT_SSH to set credentials Use to clone repositories from Gitlab
      11:05:45 > git fetch --no-tags --progress git@gitlab.mycompany.net:sw/MyApplicationName.git +refs/heads/*:refs/remotes/origin/*
      11:05:48 > git config remote.origin.url git@gitlab.mycompany.net:sw/MyApplicationName.git # timeout=10
      11:05:48 > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10
      11:05:48 > git config remote.origin.url git@gitlab.mycompany.net:sw/MyApplicationName.git # timeout=10
      11:05:48 Fetching without tags
      11:05:48 Fetching upstream changes from git@gitlab.mycompany.net:sw/MyApplicationName.git
      11:05:48 using GIT_SSH to set credentials Use to clone repositories from Gitlab
      11:05:48 > git fetch --no-tags --progress git@gitlab.mycompany.net:sw/MyApplicationName.git +refs/heads/*:refs/remotes/origin/*
      11:05:48 Checking out Revision 21dd54ff667c95907e96ba9fa0593a740e5e018c (tp-224-why-does-it-fail)
      11:05:48 > git config core.sparsecheckout # timeout=10
      11:05:48 > git checkout -f 21dd54ff667c95907e96ba9fa0593a740e5e018c
      11:05:48 Commit message: "..."
       
      

       

      The repository is checkout twice, the second time ignoring the subdirectory name provided. This behavior is only exhibited for the first commit in a new branch.

       

       

            jtaboada Jose Blas Camacho Taboada
            jenkinsedupuis Étienne Dupuis
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: