jenkins - 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")
}
}
}
}
}
解决方案
在我看来,您正在尝试检查是否${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")
}
}
}
推荐阅读
- python - Python Pandas Double 提高循环效率
- material-ui - 如何将意外升级的@material-ui/core 从 v3 降级回 v1?
- vue.js - 如何在 vuejs 中添加一个类然后删除同一个类?
- java - 按下按钮时如何从另一个类运行方法?
- android - 如何反弹两个移动的物体
- owasp - 如何将 ModSecurity 引擎配置为针对单一攻击类型为 ON,而针对所有其他攻击类型为 DetectionOnly?
- azure - 错误:提供程序配置别名无效
- file-io - 遍历文件夹时出现“资源无效:必须是不引用父目录的绝对路径”错误
- java - 如何从 Android 上 Firestore 的子集合中获取数据?
- sql - QueryException SQLSTATE [42S22]:找不到列:1054