Uploaded image for project: 'Bamboo Data Center'
  1. Bamboo Data Center
  2. BAM-16435

Path should not be auto-populated when adding a Git or Mercurial capability

    XMLWordPrintable

Details

    • Suggestion
    • Resolution: Unresolved
    • None
    • Capabilities
    • None
    • 0
    • 2
    • Our product teams collect and evaluate feedback from a number of different sources. To learn more about how we use customer feedback in the planning process, check out our new feature policy.

    Description

      Problem

      Users may find themselves trying to understand why their Git and Mercurial builds are failing, even after setting up the Git and Mercurial capabilities on the Bamboo Server and remote agent with the default configuration. The path should not be auto-populated with a variable when adding a Git or Mercurial capability.

      Steps to reproduce
      1. Go to Bamboo administration >> Build resources >> Server capabilities.
        • If you're running builds using a remote agent, go to Bamboo administration >> Agents >> agent name >> Capabilities
      2. Add a capability.
      3. Select Mercurial or Git in the Capability type field.
      4. Bamboo will auto-populate the Path field with the following:
        • For Mercurial: system.hg.executable.
        • For Git: system.git.executable.
      5. Save.

      If the user set up a build plan to checkout code from a Git/Mercurial repository, the build will fail with an error message similar to this one:

      com.atlassian.bamboo.repository.RepositoryException: java.lang.RuntimeException: com.atlassian.bamboo.plugins.git.GitCommandException: command system.git.executable version failed with code -1. Working directory was [/]., stderr:
      
      	at com.atlassian.bamboo.v2.trigger.DefaultChangeDetectionManager.collectChangesSinceLastBuildInternal(DefaultChangeDetectionManager.java:466)
      	at com.atlassian.bamboo.v2.trigger.DefaultChangeDetectionManager.collectChangesSinceRevisions(DefaultChangeDetectionManager.java:306)
      	at com.atlassian.bamboo.v2.trigger.DefaultChangeDetectionManager.collectChangesSinceRevisions(DefaultChangeDetectionManager.java:198)
      	at com.atlassian.bamboo.v2.trigger.DefaultChangeDetectionManager.collectAllChangesSinceLastBuild(DefaultChangeDetectionManager.java:155)
      	at com.atlassian.bamboo.v2.trigger.ManualBuildDetectionAction.performDelayedChangeDetection(ManualBuildDetectionAction.java:172)
      	at com.atlassian.bamboo.chains.ChainExecutionManagerImpl$2.getChainState(ChainExecutionManagerImpl.java:225)
      	at com.atlassian.bamboo.chains.ChainExecutionManagerImpl.tryStartChainState(ChainExecutionManagerImpl.java:278)
      	at com.atlassian.bamboo.chains.ChainExecutionManagerImpl.delayedStart(ChainExecutionManagerImpl.java:214)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:606)
      	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
      	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
      	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
      	at com.sun.proxy.$Proxy145.delayedStart(Unknown Source)
      	at com.atlassian.bamboo.plan.PlanExecutionManagerImpl$2$1$1$1.run(PlanExecutionManagerImpl.java:430)
      	at com.atlassian.bamboo.util.CacheAwareness$2.call(CacheAwareness.java:83)
      	at com.atlassian.bamboo.util.CacheAwareness$2.call(CacheAwareness.java:79)
      	at com.atlassian.bamboo.util.CacheAwareness.whileReadingThroughCaches(CacheAwareness.java:101)
      	at com.atlassian.bamboo.util.CacheAwareness.whileReadingThroughCaches(CacheAwareness.java:78)
      	at com.atlassian.bamboo.util.CacheAwareness.whileReadingThroughCaches(CacheAwareness.java:118)
      	at com.atlassian.bamboo.plan.PlanExecutionManagerImpl$2$1$1.call(PlanExecutionManagerImpl.java:425)
      	at com.atlassian.bamboo.plan.PlanExecutionManagerImpl$2$1$1.call(PlanExecutionManagerImpl.java:417)
      	at com.atlassian.util.concurrent.ManagedLocks$ManagedLockImpl.withLock(ManagedLocks.java:312)
      	at com.atlassian.bamboo.plan.PlanExecutionLockServiceImpl.lock(PlanExecutionLockServiceImpl.java:85)
      	at com.atlassian.bamboo.plan.PlanExecutionManagerImpl.doWithProcessLock(PlanExecutionManagerImpl.java:800)
      	at com.atlassian.bamboo.plan.PlanExecutionManagerImpl.access$300(PlanExecutionManagerImpl.java:129)
      	at com.atlassian.bamboo.plan.PlanExecutionManagerImpl$2$1.run(PlanExecutionManagerImpl.java:411)
      	at com.atlassian.bamboo.utils.BambooRunnables$1.run(BambooRunnables.java:49)
      	at com.atlassian.bamboo.security.ImpersonationHelper.runWith(ImpersonationHelper.java:31)
      	at com.atlassian.bamboo.security.ImpersonationHelper.runWithSystemAuthority(ImpersonationHelper.java:20)
      	at com.atlassian.bamboo.security.ImpersonationHelper$1.run(ImpersonationHelper.java:52)
      	at java.lang.Thread.run(Thread.java:745)
      Caused by: java.lang.RuntimeException: com.atlassian.bamboo.plugins.git.GitCommandException: command system.git.executable version failed with code -1. Working directory was [/]., stderr:
      
      	at com.atlassian.bamboo.executor.RetryingTaskExecutor.rerun(RetryingTaskExecutor.java:132)
      	at com.atlassian.bamboo.executor.RetryingTaskExecutor.runTask(RetryingTaskExecutor.java:88)
      	at com.atlassian.bamboo.executor.RetryingTaskExecutor.retry(RetryingTaskExecutor.java:191)
      	at com.atlassian.bamboo.executor.RetryingTaskExecutor.retry(RetryingTaskExecutor.java:176)
      	at com.atlassian.bamboo.v2.trigger.DefaultChangeDetectionManager.handleRepositoryExceptionForDeletedBranchWithRetry(DefaultChangeDetectionManager.java:603)
      	at com.atlassian.bamboo.v2.trigger.DefaultChangeDetectionManager.collectionChangesWithRetry(DefaultChangeDetectionManager.java:557)
      	at com.atlassian.bamboo.v2.trigger.DefaultChangeDetectionManager.access$400(DefaultChangeDetectionManager.java:76)
      	at com.atlassian.bamboo.v2.trigger.DefaultChangeDetectionManager$3.call(DefaultChangeDetectionManager.java:414)
      	at com.atlassian.bamboo.v2.trigger.DefaultChangeDetectionManager$3.call(DefaultChangeDetectionManager.java:358)
      	at com.atlassian.bamboo.variable.CustomVariableContextImpl.withVariableSubstitutor(CustomVariableContextImpl.java:215)
      	at com.atlassian.bamboo.v2.trigger.DefaultChangeDetectionManager.collectChangesSinceLastBuildInternal(DefaultChangeDetectionManager.java:357)
      	... 36 more
      Caused by: com.atlassian.bamboo.plugins.git.GitCommandException: command system.git.executable version failed with code -1. Working directory was [/]., stderr:
      
      	at com.atlassian.bamboo.plugins.git.GitCommandProcessor.runCommand(GitCommandProcessor.java:550)
      	at com.atlassian.bamboo.plugins.git.GitCommandProcessor$1.load(GitCommandProcessor.java:177)
      	at com.atlassian.bamboo.plugins.git.GitCommandProcessor$1.load(GitCommandProcessor.java:168)
      	at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3568)
      	at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2350)
      	at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2313)
      	at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2228)
      	at com.google.common.cache.LocalCache.get(LocalCache.java:3965)
      	at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3969)
      	at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4829)
      	at com.atlassian.bamboo.plugins.git.GitCommandProcessor.checkGitExistenceInSystem(GitCommandProcessor.java:203)
      	at com.atlassian.bamboo.plugins.git.NativeGitOperationHelper.<init>(NativeGitOperationHelper.java:90)
      	at com.atlassian.bamboo.plugins.git.GitOperationHelperFactory.createGitOperationHelper(GitOperationHelperFactory.java:25)
      	at com.atlassian.bamboo.plugins.git.GitRepository.collectChangesSinceLastBuild(GitRepository.java:226)
      	at com.atlassian.bamboo.plugins.git.GitRepository.collectChangesSinceLastBuild(GitRepository.java:216)
      	at com.atlassian.bamboo.plugins.hg.BitbucketRepository.collectChangesSinceLastBuild(BitbucketRepository.java:310)
      	at com.atlassian.bamboo.v2.trigger.DefaultChangeDetectionManager$5.call(DefaultChangeDetectionManager.java:608)
      	at com.atlassian.bamboo.v2.trigger.DefaultChangeDetectionManager$5.call(DefaultChangeDetectionManager.java:604)
      	at com.atlassian.bamboo.executor.RetryingTaskExecutor.rerun(RetryingTaskExecutor.java:108)
      	... 46 more
      Caused by: com.atlassian.utils.process.ProcessNotStartedException: system.git.executable could not be started
      	at com.atlassian.utils.process.ExternalProcessImpl.start(ExternalProcessImpl.java:332)
      	at com.atlassian.utils.process.ExternalProcessImpl.execute(ExternalProcessImpl.java:113)
      	at com.atlassian.bamboo.plugins.git.GitCommandProcessor.runCommand(GitCommandProcessor.java:541)
      	... 64 more
      Caused by: java.io.IOException: Cannot run program "system.git.executable" (in directory "/"): error=2, No such file or directory
      	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047)
      	at com.atlassian.utils.process.ExternalProcessImpl.createDefaultProcess(ExternalProcessImpl.java:367)
      	at com.atlassian.utils.process.ExternalProcessImpl.createProcess(ExternalProcessImpl.java:375)
      	at com.atlassian.utils.process.ExternalProcessImpl.start(ExternalProcessImpl.java:329)
      	... 66 more
      Caused by: java.io.IOException: error=2, No such file or directory
      	at java.lang.UNIXProcess.forkAndExec(Native Method)
      	at java.lang.UNIXProcess.<init>(UNIXProcess.java:184)
      	at java.lang.ProcessImpl.start(ProcessImpl.java:130)
      	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1028)
      	... 69 more
      

      This is happening because the Git/Mercurial capability was set to a variable that Bamboo doesn't recognize unless the user configures Bamboo and/or the remote agent to load the capabilities from the bamboo-capabilities.properties file.

      The bamboo-init.properties file can be found in the following directories:

      1. Bamboo Server: <bamboo-installation-directory>/atlassian-bamboo/WEB-INF/classes.
      2. Remote Agent: <bamboo-agent-home>/bin.
        • The file doesn't exist in this directory by default, so the user must copy it over from the Bamboo Server installation.
      Resolution

      When configuring the Git and Mercurial capabilities in Bamboo, please make sure to add the full path to the Git/Mercurial executable (e.g. 'C:\Program Files (x86)\Git\git.exe' or '/usr/local/git/bin/git').

      Attachments

        Activity

          People

            Unassigned Unassigned
            brosa Bruno Rosa
            Votes:
            2 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: