[英]How can I check for the file that is present in the other directory and not in the workspace from a Jenkinsfile
我在 git 存储库中有一个 tar/zip 文件。 此 tar/zip 文件需要放在名为“chart_directory”的目录中。 使用我的 Jenkinsfile,我想实现它从 git 存储库下载此 tar/zip 文件的逻辑,仅当“chart_directory”尚未包含 git 存储库中存在的 tar/zip 文件的副本时。 例如 - 在名为“testing.git”的 git 存储库中有一个名为“Charts.tgz”的文件,我需要在“chart_directory”中下载这个“Charts.tgz”文件,前提是“chart_directory”尚未包含“Charts”文件.tgz'。 如果 Charts.tgz 已经存在于“chart_directory”中,那么它应该跳过下载文件。
注意:我假设您的 Jenkins 服务器正在运行 Unix 操作系统,因为您没有在问题中指定操作系统。
您可以使用find
命令检查Charts.tgz
文件是否本地存在于chart_directory
中:
find chart_directory -type f -name Charts.tgz
-type f
告诉find
搜索常规文件, -name Charts.tgz
告诉find
专门搜索Charts.tgz
。
如果什么也没找到, find
的退出代码将为零。 要解决此问题,如果find
什么也没找到,您可以read
pipe 以获取非零退出代码。 (如果遇到EOF
, read
有一个非零退出代码,这正是find
没有找到任何东西时会发生的情况。)
在您的代码中,只有chart_directory
Charts.tgz
,您才能下载它,如下所示:
find chart_directory -type f -name Charts.tgz | read || {
# Your code here (between the '{' and '}') to clone the git repo
# to retrieve Charts.tgz
}
什么||
运算符的作用是仅当右侧的表达式具有非零退出代码时才评估左侧的表达式。 在这种情况下,这意味着{
和}
之间的代码只有在find
没有找到任何东西时才会被评估。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.