Jenkins 如何从一个文件中检查存在于其他目录中而不在工作区中的文件
我在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”的文件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”时,我
只有在“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文件。