groovy 如何在Jenkins pipeline脚本中获取文件的绝对路径(从工作区)(在Windows环境中)

aoyhnmkz  于 2022-11-01  发布在  Jenkins
关注(0)|答案(2)|浏览(378)

如何在Jenkins pipeline脚本(在Windows环境中)中获取文件的绝对路径(从工作区)
文件位置(文件从Git中 checkout ,Jenkinsfile2.nprd将包含groovy管道脚本):

C:/程序文件(x86)/Jenkins/工作区/设备我的应用程序/我的数据应用程序/我的数据应用程序/pom.xml C:/程序文件(x86)/Jenkins/工作区/设备我的应用程序/我的数据应用程序/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:/程序文件(x86)/Jenkins/工作区/开发我的API/我的数据API
如何在Jenkins pipeline脚本中获得上述所需路径而无需硬编码?

wgxvkvu9

wgxvkvu91#

尝试以下操作(查找pom.xml相对路径并获取完整路径)

def pomPath = findFiles(glob: "**/pom.xml")[0].path
 echo new File(env.WORKSPACE, pomPath).getParent() +"\pom.xml"
bogh5gae

bogh5gae2#

pomPath = findFiles(glob: "**/$pomFile")[0].path
env.WORKSPACE = pwd()
def projectName = new File(pomPath).parent
baseDir = "${env.WORKSPACE}/$projectName"

我能够得到所需的路径。但寻找一个更干净的解决方案。

相关问题