So erhalten Sie den absoluten Pfad einer Datei (aus dem Arbeitsbereich) im Jenkins-Pipeline-Skript (in der Windows-Umgebung)
Dateispeicherorte (Die Dateien werden von Git ausgecheckt und Jenkinsfile2.nprd hat das groovige Pipeline-Skript):
C:/Programmdateien (x86) /Jenkins/workspace/dev-my-api/my-data-api/my-data-api/pom.xml C:/Programmdateien (x86)/Jenkins/Arbeitsbereich/dev-my-api/my-data-api/Jenkinsfile2.nprd
Skript:
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
}
}
}
}
Ausgabe:
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
Erforderlicher Pfad:
C:/Programme (x86)/Jenkins/Arbeitsbereich/dev-my-api/my-data-api
Wie erhalte ich den oben genannten Pfad in Jenkins Pipeline-Skript ohne harte Codierung?
pomPath = findFiles(glob: "**/$pomFile")[0].path
env.WORKSPACE = pwd()
def projectName = new File(pomPath).parent
baseDir = "${env.WORKSPACE}/$projectName"
Ich kann den erforderlichen Pfad bekommen. Aber auf der Suche nach einer saubereren Lösung.
Probieren Sie folgendes aus (finden Sie den relativen Pfad von pom.xml und erhalten Sie den vollständigen Pfad.)
def pomPath = findFiles(glob: "**/pom.xml")[0].path
echo new File(env.WORKSPACE, pomPath).getParent() +"\pom.xml"
Vielleicht nur:
new File(env.WORKSPACE, pomPath).getParent()