Jenkins Zip 文件缺少 .gitignore 和 .gitattributes

Jenkins Zip file missing .gitignore and .gitattributes

我正在尝试使用存档功能,但无法下载所有文件。例如,在詹金斯我看到:

但是,在单击 link 将所有文件下载为 zip,然后解压缩文件后,我看到:

我不确定为什么 .gitignore 和 .gitattributes 在我下载时从 zip 文件中丢失,但存在于 Jenkins 中列出的工件中。

我使用以下命令来归档工件:

archiveArtifacts artifacts: "portfolios-deployment_${PACKAGE_VERSION}/**/*", onlyIfSuccessful: true, defaultExcludes: false

archiveArtifacts选项:

Archives the build artifacts (for example, distribution zip files or jar files) so that they can be downloaded later. Archived files will be accessible from the Jenkins webpage.

这意味着它从工作区获取工件的副本并将它们与控制器上的构建日志一起存储。预计工作区是短暂的,或者其内容将在下一次迭代中被覆盖,因此它们与日志一起保留,直到日志被删除。

archiveArifacts 有一个 高级 ... 选项:
[X] 使用默认排除

如果展开帮助,您将看到详细信息:

Artifact archiver uses Ant org.apache.tools.ant.DirectoryScanner which excludes by default the following patterns: /%*%,/.git/,/SCCS,/.bzr,/.hg/,/.bzrignore,/.git,/SCCS/,/.hg,/.#*,/vssver.scc,/.bzr/,/._*,/##,**/~,/CVS,/.hgtags,/.svn/,/.hgignore,/.svn,/.gitignore,/.gitmodules,/.hgsubstate,/.gitattributes,/CVS/,/.hgsub,/.DS_Store,**/.cvsignore

This option allows to enable or disable the default Ant exclusions.

关闭它,它应该会接收它们,但也可能包含更多。考虑使用以下模式:
要归档的文件 [**,.gitignore,.gitattributes].

正在下载

然而,"(所有文件在 zip 中)" 是 Jenkins UI 标准 DirectoryBrowserSupport capability. Any directory displayed within the "Browse Workspace" has the option displayed to download the content of that page. That "(all files in zip)" is also provided by the org.apache.tools.zip 功能的一部分使用相同的 Ant FileSet 排除。这同样适用于 Browse WorkspaceBrowse Artifacts 页面。但是,由于此功能内置于 Jenkins UI 层中,因此似乎没有对工件的任何覆盖。您只需要单独手动下载它们。

可能值得 filing a ticket (for component:core, label archive) 下载“所有 zip 文件”尊重“浏览工件”中显示的内容。 (对于工作区本身而言,这不是理想的行为)。


更一般地说:

正如帮助所说,它基于 default Ant exclusions (a list which is modifiable). See also Ant FileSet 其他约定。

Ant 又基于 unix 约定,其中以点“.”开头的文件是“隐藏文件”,通常被认为是“配置文件”和 not generally of interest。Ant 列表是更具体地说,排除作为通用源代码控制系统一部分的配置文件(例如,不需要不断存档 .git)。默认情况下,“点文件”不会显示在 ls -l 中;你需要 运行 ls -la (全部)。该逻辑也扩展到其他命令。

另请注意,虽然 unix 区分大小写,但 Ant 的默认设置是 includes/excludes 不区分大小写,如果(出于某些愚蠢的原因)您有 Foo.java,这可能会导致问题和 foo.java,但随后在 archiveArtifacts 选项中默认启用。