繁体   English   中英

如何从 Jenkinsfile 检查其他目录中存在的文件,而不是工作区中的文件

[英]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 以获取非零退出代码。 (如果遇到EOFread有一个非零退出代码,这正是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM