如何在Jenkins管道脚本(Windows环境下)中获取文件的绝对路径(来自工作区)
文件位置(文件从 Git 签出,Jenkinsfile2.nprd 将具有 groovy 管道脚本):
C:/Program Files (x86)/Jenkins/workspace/dev-my-api/my-data-api/my-data-api/pom.xml C:/Program Files (x86)/Jenkins/workspace/dev-my-api/my-data-api/Jenkinsfile2.nprd
脚本:
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
}
}
}
}
输出:
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
所需路径:
C:/Program Files (x86)/Jenkins/workspace/dev-my-api/my-data-api
如何在 Jenkins pipeline 脚本中获取上述所需路径而不需要硬编码?
pomPath = findFiles(glob: "**/$pomFile")[0].path
env.WORKSPACE = pwd()
def projectName = new File(pomPath).parent
baseDir = "${env.WORKSPACE}/$projectName"
我能够获得所需的路径。但正在寻找更清洁的解决方案。
尝试以下操作(查找 pom.xml 相对路径并获取完整路径)
def pomPath = findFiles(glob: "**/pom.xml")[0].path
echo new File(env.WORKSPACE, pomPath).getParent() +"\pom.xml"