在我的公司中,尝试使用Jenkins中的Artifactory插件进行下载时遇到了麻烦,因为我们的存储库中有很多小文件,而且显然该插件在单个线程中工作,因此要花很长时间。我们测试了JFrog CLI,可以在其中设置下载线程的数量,并且实际上效果很好。不过,我们确实确实需要使用原始插件。

对此有任何解决方法吗?也许与Artifactory服务器配置有关?

注意:我们有很多小文件,因为这恐怕是公司中进行开发的方式。我们曾考虑过在存储所有文件之前先对其进行归档,但这在存储方面可能不经济,因为每个上载的zip文件都可能具有不同的校验和。

评论

通常,在上载到工件之前,应先打包应用程序。我只是想知道在您的开发过程中如何使用人工制品,使用了什么平台或语言,以及如何使用这些文件。对过程进行更全面的了解可以帮助我们找到仅关注下载问题时可能并不明显的潜在解决方案。

#1 楼

如果您使用的是Jenkinsfile语法,则可以尝试并行运行人工文件上传:https://github.com/jenkinsci/pipeline-examples/blob/master/pipeline-examples/parallel-from-list/parallelFromList.groovy

如果您只有固定数量的要并行执行的事情,那么这是一个并行运行事情的简单示例:
>这可以包含在node内,在这种情况下,它们将共享相同的工作空间,或者每个命令都可以在任务代码中定义node,以运行到另一个节点,在这种情况下,每个任务的工作空间将不同。 >

评论


嗨,迈克尔!我在谈论更多关于下载文件而不是上传的信息。如果我是通过下载完成的,那么它不会将文件保存在不同的节点上,而不是保存在单个工作区中吗?

–阿萨夫·海姆(Asaf Haim)
17年5月5日在7:40

不一定,我稍后会给您一个更好的例子

–迈克尔·佩雷拉(Michael Pereira)
17年5月5日在13:03

不确定是否与我的情况相符,因为当我下载工件时,我不知道工件的确切数量(使用类似ant的语法来下载整个存储库)

–阿萨夫·海姆(Asaf Haim)
17年5月10日在12:38

在这种情况下,请查看jenkins.io/doc/pipeline/examples/#jobs-in-parallel您可以重复使用相同的代码,只需将循环计数器更改为必须下载的元素数,然后替换构建从人工制品下载的作业线

–迈克尔·佩雷拉(Michael Pereira)
17年5月10日在15:25

但是,如果我不知道下载的文件数量怎么办?我使用双星号(**)递归下载我的所有存储库,因此我既不知道有多少存储库,也不知道它们的名称。

–阿萨夫·海姆(Asaf Haim)
17年5月14日在9:03