it-swarm.com.de

So erhalten Sie den absoluten Pfad einer Datei (aus dem Arbeitsbereich) im Jenkins-Pipeline-Skript (in der Windows-Umgebung)

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"
0
Chids

Vielleicht nur:

new File(env.WORKSPACE, pomPath).getParent() 

0