Jenkins 如何从一个文件中检查存在于其他目录中而不在工作区中的文件

Jenkins 如何从一个文件中检查存在于其他目录中而不在工作区中的文件,jenkins,charts,jenkins-pipeline,devops,pipeline,Jenkins,Charts,Jenkins Pipeline,Devops,Pipeline,我在git repo中有一个tar/zip文件。这个tar/zip文件需要放在名为“chart\u directory”的目录中。使用我的Jenkinsfile,我想实现这样一种逻辑,即只有当“chart_directory”不包含git repo中存在的tar/zip文件的副本时,它才会从git repo下载这个tar/zip文件。 在名为“testing.git”的git repo中有一个名为“Charts.tgz”的文件 只有在“chart_目录”中不包含文件“Charts.tgz”时,我

我在git repo中有一个tar/zip文件。这个tar/zip文件需要放在名为“chart\u directory”的目录中。使用我的Jenkinsfile,我想实现这样一种逻辑,即只有当“chart_directory”不包含git repo中存在的tar/zip文件的副本时,它才会从git repo下载这个tar/zip文件。 在名为“testing.git”的git repo中有一个名为“Charts.tgz”的文件
只有在“chart_目录”中不包含文件“Charts.tgz”时,我才需要在“chart_目录”中下载此“Charts.tgz”文件。如果Charts.tgz已存在于“chart_directory”中,则应跳过以下载该文件。

注意:我假设您的Jenkins服务器正在运行Unix操作系统,因为您没有在问题中指定操作系统

您可以使用以下命令检查
Charts.tgz
文件是否存在于
chart\u目录中:

find chart\u目录-type f-name Charts.tgz
-type f
告诉
find
搜索常规文件,
-name Charts.tgz
告诉
find
专门搜索
Charts.tgz

find
如果未找到任何内容,则退出代码为零。为了解决这个问题,如果
find
没有找到任何内容,您可以通过管道连接到
read
以获取非零退出代码。(
read
遇到错误时有一个非零的退出代码,这正是
find
没有找到任何东西时会发生的情况。)

在您的代码中,只有当
chart\u目录中不存在
Charts.tgz
时,才可以下载
Charts.tgz,如下所示:

find chart_目录-type f-name Charts.tgz | read |{
#您可以在此处(在“{”和“}”之间)克隆git repo
#检索Charts.tgz的步骤
}

|
运算符所做的是,只有当右侧的表达式具有非零退出代码时,才会对左侧的表达式求值。在这种情况下,这意味着
{
}
之间的代码只有在
find
没有找到任何内容时才会被计算。

您所说的“获取一个特定文件”是什么意思?您的意思是将文件从文件系统的其他地方复制到工作区吗?你的意思是从某处下载文件吗?我的意思是从其他目录下载文件如果你的Jenkins服务器运行的是Unix操作系统,请使用。如果您的Jenkins服务器运行的是Windows操作系统,请使用.I在git repo中有一个tar/zip文件。这个tar/zip文件需要放在名为“chart\u directory”的目录中。使用我的Jenkinsfile,我想实现这样一种逻辑,即只有当“chart_directory”不包含git repo中存在的tar/zip文件的副本时,它才会从git repo下载tar/zip文件。