Answers:
维基百科对此问题有很好的答案。伪像,有时也被称为派生对象,是一些的产物施加过程的代码库。它们最初被称为Build Artifacts,但是随着除了build之外还应用了更多流程来创建它们,第一个单词被简单地删除了。
主要区别在于,只要保留了应用流程的环境,就可以使用相同的流程从代码存储库重新创建工件。由于此过程可能很耗时,并且无法完美地保留环境以能够以完全相同的方式重建工件,因此我们开始将它们存储在Artifact存储库中。
将其与代码存储库分开存储在工件存储库中是DevOps工程师的一项设计决策。一些公司,即Perforce,建议也将其代码存储库用作工件存储库。每个存储库在访问,审核,对象大小,对象标记和可伸缩性方面都有不同的要求,因此根据情况,通常最好使用两种不同的产品。例如Git存储库将全部复制到每台开发机器,因此将工件存储在代码存储库中会超出所有原因而增加其大小,尽管最近有缓解该问题的方法。另一个决定是要存储哪些工件。一些公司甚至将中间工件存储为单独的目标文件,以加快重建速度,而另一些公司仅存储最终的二进制文件。并非所有的工件都具有相同的值。发布版本生成的工件可能与开发人员生成的工件具有不同的要求。
最常见的工件是以下过程的结果:配置,预处理,编译,链接,自动化测试,归档,打包,媒体文件创建和处理,数据文件生成,文档解析,代码分析,QA等。
“人工制品”一词有两种用法,一种使源代码成为人工制品,而第二种使源代码成为非人工制品:这的确令人困惑!
“艺术品”是具体事物,而不是理想事物 –这是“人类制造的物体,通常是文化或历史利益之一”一词的常见含义,而不是技术术语。这是一个技术方面的示例:调试软件时,您会了解有关该软件的知识。将这种学习转变成软件产品(例如回归测试)通常是一笔宝贵的投资。否则,这种学习将被遗忘,并且浪费在学习上的精力将被浪费掉。在这种意义上,源代码被视为人工制品。
“人工制品”是由配方产生的东西 –这个含义使用了炼金术士的流行形象,即使用一些深奥的配方来制造通常称为人工制品的神奇装置。这是技术术语,用于区分对应于炼金术士的隐喻中的配方的源代码和源自该源代码的,对应于炼金术士的隐喻中的人工制品的任何内容。例如,我只是自动化了我的plop-fizz程序的人工制品生产,现在只需一个命令就可以实例化源tarball,签名文件,DEB和RPM软件包! 此含义不能将源代码识别为伪造品,因为该术语用于表示从该源代码产生的内容。
我想答案可能会因地方而异。目前我在哪里工作,工件是其他实体消耗的任何东西,但用于开发的源代码除外-这将进入源代码控制。
这包括产品或其他所需产品的二进制文件,库,目标文件,测试工件(如媒体文件或测试数据)。
源代码不被视为工件。除非它与“由...使用”的定义匹配-在我们的情况下包括第三方库,用于测试或其他目的的脚本代码(但不包括开发版本本身)。
在文化方面的侧面说明。虽然在DevOps中,我们将“工件存储库”的概念视为给定情况,但似乎与组织过程没有太多联系。
文化问题:如果组织使用ITIL,那么经过认证的人员会说:“我们需要拥有一个定义媒体库,这样的存储库才能放置我们生产的软件配置项目”。因此,关心结构良好的IT流程的人不知道哪些工具(支持非管理工具)支持并正在使用该工具。反之亦然,如果您需要为Nexus或Artifactory语言辩护,则根据组织的不同,可能很难解释。
进一步阅读:https : //en.wikipedia.org/wiki/Definitive_Media_Library