I have defined a Custom Tool Tesseract, which extracts a ZIP file.
In my Scripted Pipeline, I have this code:
withEnv([
"gsExec=$gsPath",
"compareExec=$comparePath",
"Path+TESSERACT=${tool name: 'Tesseract', type:
'com.cloudbees.jenkins.plugins.customtools.CustomTool'}"
]) {
configFileProvider([configFile(fileId:
GeneralVariables.mavenGlobalSettings, variable: 'MAVEN_SETTINGS')]) {
withMaven(jdk: GeneralVariables.JDK_VERSION, maven:
GeneralVariables.Maven) {
sh 'echo $PATH'
sh "mvn --global-settings ${MAVEN_SETTINGS.replace '\\', '/'}
--no-transfer-progress --batch-mode install " +
"--activate-profiles test -DgsExec=\"$gsPath\"
-DcompareExec=\"$comparePath\" -Dmaven.repo.local=.repository"
}
}
In my Jenkins Console Log, I see this output:
provisioning config files...
copy managed file [MyGlobalSettings] to
file:/C:/Users/jenkins/workspace/run-cross-module-tests-java-QA-11580@tmp/config12082685466158235325tmp
[withMaven] Options: []
[withMaven] Available options:
[withMaven] using JDK installation jdk-8-oracle
[withMaven] using Maven installation 'M3'
+ echo
/c/Users/jenkins/tools/hudson.model.JDK/jdk-8-oracle/bin:/c/Users/jenkins/workspace/run-cross-module-tests-java-QA-11580@tmp/withMavend1394d3e:/c/Users/jenkins/tools/com.cloudbees.jenkins.plugins.customtools.CustomTool/Tesseract/Tesseract-OCR:/mingw64/bin:/c/program
files/powershell/7:/c/Program
Files/ImageMagick-7.0.11-Q16-HDRI:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0:/c/Windows/System32/OpenSSH:/c/Program
Files/Amazon/cfn-bootstrap:/c/ProgramData/chocolatey/bin:/c/Program
Files/OpenSSH-Win64:/c/Program
Files/dotnet:/cmd:/mingw64/bin:/usr/bin:/c/Program
Files/OpenJDK/openjdk-11.0.10_9/bin:/c/ProgramData/chocolatey/lib/maven/apache-maven-3.6.3/bin:/c/Program
Files/PowerShell/7:/c/Program
Files/OpenJDK/openjdk-8u282-b08/bin:/c/Program
Files/nodejs:/bin:/c/Windows/system32/config/systemprofile/AppData/Local/Microsoft/WindowsApps:/c/Users/jenkins/AppData/Local/Microsoft/WindowsApps
/c/Users/jenkins/tools/hudson.model.JDK/jdk-8-oracle/bin:/c/Users/jenkins/workspace/run-cross-module-tests-java-QA-11580@tmp/withMavend1394d3e:/c/Users/jenkins/tools/com.cloudbees.jenkins.plugins.customtools.CustomTool/Tesseract/Tesseract-OCR:/mingw64/bin:/c/program
files/powershell/7:/c/Program
Files/ImageMagick-7.0.11-Q16-HDRI:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0:/c/Windows/System32/OpenSSH:/c/Program
Files/Amazon/cfn-bootstrap:/c/ProgramData/chocolatey/bin:/c/Program
Files/OpenSSH-Win64:/c/Program
Files/dotnet:/cmd:/mingw64/bin:/usr/bin:/c/Program
Files/OpenJDK/openjdk-11.0.10_9/bin:/c/ProgramData/chocolatey/lib/maven/apache-maven-3.6.3/bin:/c/Program
Files/PowerShell/7:/c/Program
Files/OpenJDK/openjdk-8u282-b08/bin:/c/Program
Files/nodejs:/bin:/c/Windows/system32/config/systemprofile/AppData/Local/Microsoft/WindowsApps:/c/Users/jenkins/AppData/Local/Microsoft/WindowsApps
+ mvn --global-settings
C:/Users/jenkins/workspace/run-cross-module-tests-java-QA-11580@tmp/config12082685466158235325tmp
--no-transfer-progress --batch-mode install --activate-profiles test
'-DgsExec=C:/Program Files/gs/gs9.53.3/bin/gswin64c.exe'
'-DcompareExec=C:/Program Files/ImageMagick-7.0.11-Q16-HDRI/compare.bat'
-Dmaven.repo.local=.repository
The PATH variable contains the Tesseract directory,
/c/Users/jenkins/tools/com.cloudbees.jenkins.plugins.customtools.CustomTool/Tesseract/Tesseract-OCR
.
I don't see anything in the log that actually tells me that a CustomTool is
actually installed.
Further down in the logging, I see that Tesseract isn't found:
***REDACTED***.tesseract4.TesseractHelper ERROR Command failed: Cannot run
program "tesseract": CreateProcess error=2, The system cannot find the file
specified
***REDACTED***.tesseract4.Tesseract4ExecutableOcrEngine ERROR Tesseract
failed. Please check that tesseract is installed and provided path to
tesseract executable directory is correct
Indeed, when I verify the directories on the node itself, I see that the
Tesseract directory is missing:
ls
C:\Users\jenkins\tools\com.cloudbees.jenkins.plugins.customtools.CustomTool\
Directory:
C:\Users\jenkins\tools\com.cloudbees.jenkins.plugins.customtools.CustomTool
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 3/5/2021 6:39 PM InspectHeaders
So let me repeat this very clearly: the PATH value is correct, but the
actual directory does not exist.
InspectHeaders is the only CustomTool that is installed (earlier in the
pipeline, with a shell script). Tesseract, which should be extracted from a
ZIP file, is not installed.
I have several other nodes: on Linux, it is successfully installed with apt-get
install; and on another Windows node, it is also successfully installed
from a ZIP file.
Already tried: replace installation from ZIP with installation from shell
script:
#!/bin/sh
set -e
TOOL=Tesseract-OCR.zip
if test ! -x "${TOOL}" ; then
curl https://repo.itextsupport.com/files/tools/"${TOOL}" --output
"${TOOL}" --silent
unzip "${TOOL}"
fi
Same result: CustomTool is added to the PATH, but isn't actually installed.
My question is: how do I tell Jenkins to install this CustomTool, no matter
what?
--
You received this message because you are subscribed to the Google Groups
"Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/jenkinsci-users/df187239-7f48-4967-b973-fbd41664018en%40googlegroups.com.