Hi
Very weird. I've been using QB for a decade+ with Linux, Mac, and Win. I've never seen a problem like that. This is my first use with FreeBSD. I installed the agent manually. It runs as root. I set up everything the same way I've been doing it for years with Linux, Win, and Mac.
The first job that I try fails to clone the repository with the error:
Cannot run program "git" (in directory "/root/qba7/buildagent/workspace/71/qmark"): error=2, No such file or directory
2025-06-23 09:15:08,987 [pool-2-thread-2] ERROR com.pmease.quickbuild.DefaultBuildEngine - Error processing build request 6b8d9709-bf11-40cb-9f64-76825a6956f0
java.lang.RuntimeException: Error executing check condition job.
at com.pmease.quickbuild.CheckConditionTask.reduce(CheckConditionTask.java:39)
at com.pmease.quickbuild.CheckConditionTask.reduce(CheckConditionTask.java:16)
at com.pmease.quickbuild.grid.GridTaskFuture.get(GridTaskFuture.java:178)
at com.pmease.quickbuild.DefaultBuildEngine.process(DefaultBuildEngine.java:418)
at com.pmease.quickbuild.DefaultBuildEngine$4.run(DefaultBuildEngine.java:1387)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: com.pmease.quickbuild.QuickbuildException: Cannot run program "git" (in directory "/root/qba7/buildagent/workspace/71/qmark"): error=2, No such file or directory
at com.pmease.quickbuild.execution.Commandline.execute(Commandline.java:326)
at com.pmease.quickbuild.execution.Commandline.execute(Commandline.java:232)
at com.pmease.quickbuild.plugin.scm.git.GitCli.create(GitCli.java:182)
at com.pmease.quickbuild.plugin.scm.git.GitCli.doSync(GitCli.java:70)
at com.pmease.quickbuild.plugin.scm.helper.ScmCli.sync(ScmCli.java:66)
at com.pmease.quickbuild.plugin.scm.git.GitRepository.getGit(GitRepository.java:508)
at com.pmease.quickbuild.plugin.scm.git.GitRepository.getHeadRevision(GitRepository.java:157)
at com.pmease.quickbuild.plugin.scm.git.GitRepository$$EnhancerByCGLIB$$b478171d.CGLIB$getHeadRevision$17(<generated>)
at com.pmease.quickbuild.plugin.scm.git.GitRepository$$EnhancerByCGLIB$$b478171d$$FastClassByCGLIB$$5d0228a7.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
at com.pmease.quickbuild.DefaultScriptEngine$Interpolator.intercept(DefaultScriptEngine.java:267)
at com.pmease.quickbuild.plugin.scm.git.GitRepository$$EnhancerByCGLIB$$b478171d.getHeadRevision(<generated>)
at com.pmease.quickbuild.plugin.scm.git.GitRepository.getHeadRevision(GitRepository.java:53)
at com.pmease.quickbuild.plugin.scm.git.GitRepository$$EnhancerByCGLIB$$b478171d.CGLIB$getHeadRevision$18(<generated>)
at com.pmease.quickbuild.plugin.scm.git.GitRepository$$EnhancerByCGLIB$$b478171d$$FastClassByCGLIB$$5d0228a7.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
at com.pmease.quickbuild.DefaultScriptEngine$Interpolator.intercept(DefaultScriptEngine.java:267)
at com.pmease.quickbuild.plugin.scm.git.GitRepository$$EnhancerByCGLIB$$b478171d.getHeadRevision(<generated>)
at com.pmease.quickbuild.repositorysupport.Repository.takeSnapshot(Repository.java:384)
at com.pmease.quickbuild.plugin.scm.git.GitRepository$$EnhancerByCGLIB$$b478171d.CGLIB$takeSnapshot$81(<generated>)
at com.pmease.quickbuild.plugin.scm.git.GitRepository$$EnhancerByCGLIB$$b478171d$$FastClassByCGLIB$$5d0228a7.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
at com.pmease.quickbuild.DefaultScriptEngine$Interpolator.intercept(DefaultScriptEngine.java:267)
at com.pmease.quickbuild.plugin.scm.git.GitRepository$$EnhancerByCGLIB$$b478171d.takeSnapshot(<generated>)
at com.pmease.quickbuild.setting.configuration.snapshot.TakeReferencedSnapshots.takeSnapshot(TakeReferencedSnapshots.java:15)
at com.pmease.quickbuild.model.Configuration.takeSnapshot(Configuration.java:2287)
at com.pmease.quickbuild.CheckConditionJob.execute(CheckConditionJob.java:35)
at com.pmease.quickbuild.grid.GridJob.run(GridJob.java:141)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
The directory mentioned in the error does exist. It contains only .qbcache directory, nothing else. The .qbcache/qb-scm.xml file has this:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<entry key="pushurl">[email protected]:ops/qmark</entry>
<entry key="fetchurl">[email protected]:ops/qmark</entry>
</properties>
The URLs listed in the file are correct. I can clone the repository with this exact URL manually without problems on that same agent into the same directory:
root@qba7:~/qba7/buildagent/workspace/71 # git clone [email protected]:ops/qmark
Cloning into 'qmark'...
remote: Enumerating objects: 14, done.
remote: Counting objects: 100% (14/14), done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 14 (delta 3), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (14/14), done.
Resolving deltas: 100% (3/3), done.
This means that git exists, the keys, access rights, etc are set up correctly.
BTW, that exact repository clones without problems on a Linux agent. There's something about FreeBSD, or the agent installation that makes it fail.
FreeBSD: VERSION="14.2-RELEASE"
java: OpenJDK Runtime Environment (build 17.0.14+7-1)
git is in /usr/local/bin
echo $PATH: /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/root/bin
What could be wrong?
Thank you so much.