Details
-
Suggestion
-
Resolution: Unresolved
-
None
-
None
-
0
-
2
-
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
- 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
- Add a capability.
- Select Mercurial or Git in the Capability type field.
- Bamboo will auto-populate the Path field with the following:
- For Mercurial: system.hg.executable.
- For Git: system.git.executable.
- 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:
- Bamboo Server: <bamboo-installation-directory>/atlassian-bamboo/WEB-INF/classes.
- 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').