Comment obtenir le chemin absolu d'un fichier (depuis un espace de travail) dans un script de pipeline Jenkins (dans un environnement Windows)
Emplacement des fichiers (Les fichiers sont extraits de Git et Jenkinsfile2.nprd aura le script de pipeline groovy):
C:/Program Files (x86) /Jenkins/workspace/dev-my-api/my-data-api/my-data-api/pom.xml espace de travail/dev-mon-api/mes-données-api/Jenkinsfile2.nprd
Script:
stages {
stage('Setup') {
steps {
script {
pomPath = findFiles(glob: "**/pom.xml")[0].path
env.WORKSPACE = pwd()
pomDir = bat(script: "for %%F in ($pomPath) do set dirname=%%~dpF", returnStdout: true).trim()
echo "env.WORKSPACE:" + env.WORKSPACE
echo "pom file path:" + pomPath
echo "pom directory****:" + pomDir
}
}
}
}
Sortie:
env.WORKSPACE:C:\Program Files (x86)\Jenkins\workspace\dev-my-api
pom file path:my-data-api\pom.xml
pom directory****:C:\Program Files (x86)\Jenkins\workspace\my-data-api>for %F in (my-data-api\pom.xml) do set dirname=%~dpF
Chemin requis:
C:/Fichiers de programme (x86)/Jenkins/espace de travail/dev-mon-api/mon-données-api
Comment obtenir le chemin requis ci-dessus dans un script de pipeline Jenkins sans codage dur?
pomPath = findFiles(glob: "**/$pomFile")[0].path
env.WORKSPACE = pwd()
def projectName = new File(pomPath).parent
baseDir = "${env.WORKSPACE}/$projectName"
Je suis capable d'obtenir le chemin requis. Mais chercher une solution plus propre.
Essayez ce qui suit (recherchez le chemin relatif pom.xml et obtenez le chemin complet)
def pomPath = findFiles(glob: "**/pom.xml")[0].path
echo new File(env.WORKSPACE, pomPath).getParent() +"\pom.xml"
Peut-être juste:
new File(env.WORKSPACE, pomPath).getParent()