首页 > 解决方案 > Jenkins无法将带有fileExists的文件复制到多个目录

问题描述

我在 Jenkins 凭据管理器中有一个文件,如果该文件夹存在,我想将其复制到多个目录中。

但是,fileExists 命令似乎只适用于一个文件夹而不能适用于其他文件夹。我已经尝试了一切,从使用 Java 的文件命令,使用绝对路径似乎对我没有任何作用。

我尝试将环境变量指向与要检查的目录相同的级别,但在目录内部似乎没有任何效果。

dir("${DIRECTORY_PATH_NO_SPACES}"){
                    //checks to see if the folder in harris-gallery exists 
                    script {
                        if (fileExists("/project1"))
                        {
                            withCredentials([file(credentialsId: "${KEYSTORE_PROPERTIES_FILE_ID}", variable: 'FILE')]) {
                                bat("copy /y $FILE keystore.properties")
                            }
                        }
                    }
                }

                dir("${WORKSPACE_PATH_NO_SPACES}"){
                    //checks to see if the folder in project2 exists      
                    script {
                        if (fileExists("/project2"))
                        {
                            withCredentials([file(credentialsId: "${KEYSTORE_PROPERTIES_FILE_ID}", variable: 'FILE')]) {
                                bat("copy /y $FILE keystore.properties")
                            }
                            bat("echo test")
                        }
                    }

                }


                dir("${DIRECTORY_PATH_NO_SPACES_project2_PROTOCOL}"){
                    //checks to see if the folder in project2 protocol exists  
                    script {
                        if (fileExists("/project3"))
                        {
                            withCredentials([file(credentialsId: "${KEYSTORE_PROPERTIES_FILE_ID}", variable: 'FILE')]) {
                                bat("copy /y $FILE keystore.properties")
                            }
                        }
                    }

                }
            }

标签: jenkinsjenkins-pluginsjenkins-groovyjenkins-job-dsl

解决方案


在我看来,您正在尝试检查是否${DIRECTORY_PATH_NO_SPACES}/project1存在,但实际上是在检查是否/project1存在于机器的根目录而不是DIRECTORY_PATH_NO_SPACES.

我会尝试检查完整路径“/${DIRECTORY_PATH_NO_SPACES}/project1”

最后你可以在这里使用普通批处理

                dir("${DIRECTORY_PATH_NO_SPACES}"){
                    //checks to see if the folder in harris-gallery exists 
                    script {
                            withCredentials([file(credentialsId: "${KEYSTORE_PROPERTIES_FILE_ID}", variable: 'FILE')]) {
                                bat("if exist /project1 copy /y $FILE keystore.properties")
                            }
                        }
                }

推荐阅读