什么是“人工工厂”(在DevOps中)?
为什么使用人工制品?
#1 楼
Artifactory是JFrog的产品,用作二进制存储库管理器。就是说,很多时候人们会使用“人工工厂”作为更通用的二进制存储库的代名词,就像许多人使用Frigidaire或冰箱来表示冰箱一样,无论它是否为Frigidaire品牌。二进制存储库是对源代码存储库的自然扩展,因为它将存储构建过程的结果,通常表示为工件。大多数情况下,人们不会直接使用二进制存储库,而是通过所选技术附带的程序包管理器来使用。
在大多数情况下,它们将存储单个应用程序组件,这些组件随后可组装成完整的产品。 -这样就可以将构建分解为较小的块,从而更有效地利用资源,减少构建时间,更好地跟踪二进制调试数据库等。使用二进制存储库进行管理:
Java:jar,ear,war等具有Maven和官方的MavenCentral。还有许多其他程序包管理器也将使用Maven二进制存储库格式(ivy,gradle等)。像Chocolatey这样的Windows thorugh系统。较新版本的Powershell也可以利用它来分发Powershell模块,尽管Powershell库可以使用二进制存储库和nuget格式的存储库构建本地发行版。如果您对Windows发行版管理感兴趣,也请检查OneGet。
在JavaScript中:我们最受欢迎的npm之一是npm,需要nodejs。 pypi,它也可以通过二进制存储库创建一个支持该格式的本地实例。 >二进制存储库可以将所有这些托管在一个屋顶下,从而使团队的管理更加简单。请注意,您不需要庞大的团队就可以开始从二进制软件包管理中受益。最初的投资不是很大,并且可以立即感受到收益。尤其是现在越来越多的平台,框架和语言将这种依赖关系管理直接集成到它们中。它可以帮助您作为开发人员创建牢固的工具链,并且可以帮助他们使整体体验自然地适合他们的选择。二进制软件包管理器,在目标用途上比其他软件包管理器更为通用,在可访问性和价格方面也存在很大差异。源代码存储库或持续集成。
评论
Merci这个有趣的答案(也是)。出于某种原因,所有这些使我觉得像“嗯,所以这就像我们通常在良好的大型机环境中所说的那样,例如包含可执行文件的加载库(用于运行CICS / IMS / IDMS区域)……” 。
– Pierre.Vriens♦
17年8月31日在17:03
要添加的一件重要事情是公共存储库的兴起,例如Maven Central等modulecounts.com-这些通常是软件项目的供应来源,这些项目越来越成为这些组件以及定制胶水/前端代码以及客户特定业务的总装逻辑。
– Peter Muryshkin
17年8月31日在18:05
从来没有听说modulecounts.com,但是现在该网站已经关闭,我稍后再检查。
– Newtopian
17年8月31日在18:17
冰箱与冰箱的有趣比喻:)
–拉维·蒂瓦里(Ravi Tiwari)
18/09/5在20:12
那么,这与提供二进制文件而非HTML的经过身份验证的Web服务器有何不同?为什么要使用单独的服务器?
–安东尼
20 Jan 14 '23:11
#2 楼
它最初帮助我理解的方式是,源代码存储库和二进制存储库之间的区别是这样想的:维护构建的“二进制文件”,直到我对这些术语感到满意为止!总是”。在持续集成中,一旦构建二进制文件,将其放入Artifactory,然后从那里进行调用,以部署到所有不同的环境中,将有很大的帮助。这样,我们可以确保在Dev中工作的代码是推送到Prod的代码,并且将在那里工作。
评论
有趣的解释,谢谢!
– Pierre.Vriens♦
18年8月20日在20:46
#3 楼
Artifactory是Jfrog提供的Binary Repository Manager产品。您是对的-作为二进制存储库管理器,它通常用于管理在软件开发过程中生成和使用的工件的存储。
从Artifactory的主页上: br />
作为市场上第一个也是唯一的通用Artifact Repository Manager,JFrog Artifactory完全支持由
任何语言或技术创建的软件包。 >
...
... Artifactory提供了端到端的自动化防弹解决方案,用于跟踪从开发到生产的工件。
您提到的用法表明它对于DevOps中的通用商标可能已经足够流行。
评论
Merci Dan,您以某种方式确认了Artifactory就像是Artifacts与Repository一词的组合。我想知道的另一个问题是:生产中使用的不是二进制文件的工件(例如PHP代码,CSS文件,bash脚本等)如何处理?
– Pierre.Vriens♦
17年8月31日在17:03
对于应用程序代码,它们具有源代码版本控制系统,例如cvs,svn,git,mercurial。对于配置代码,则具有配置管理和分发系统,例如木偶,厨师,ansible,盐。
– Peter Muryshkin
17年8月31日在18:04
@ Pierre.Vriens我以前不是这样想的,总有人首先想到“工厂” :)但是我现在完全明白了。谢谢!
–丹·科尼莱斯库(Dan Cornilescu)
17年8月31日在18:20
@ J.Doe merci进行了补充,只是为了进一步扩展您的意见……在大型机上,它们具有诸如“ ChangeMan ZMF”,“ Endevor SCM”等工具。这些工具用于您提到的所有功能(版本控制,分发等,但也涉及所有相关的工作流程,安全性等)。
– Pierre.Vriens♦
17年8月31日在18:50
因此,如果我们仅重新发明msinframe,那它们可能有什么问题呢?
– Peter Muryshkin
17年8月31日在19:17
#4 楼
我认为,复杂的事情是当今每个人都越来越欣赏的东西。我将尝试简短地回答这个问题。源存储库用于存储代码及其版本,而工件则用于存储作为这些代码输出的可执行程序。 ,战争,耳朵,msi,exe文件等]
现在,您想将它们分别放置在与您的代码不同的存储库中的原因可能有很多-从安全访问,黑客威胁,恶意代码签入,或者只是为需要二进制文件的客户提供单独的途径。
SCM的技术本来可以自己创建两种用户(一种具有开发人员特权,可以访问源代码,另一种可以作为客户端,可以访问二进制文件)。 。但这没有走那条路!所以现在我们有了人工制品。
评论
二进制存储(无论它是否是存储库)的主要原因是,您不能像对源代码那样创建二进制更改的“文本差异补丁”。那就是您不能存储'diff'来节省空间并让用户看到文本文件(或源代码)如何更改。例如,Git在“格式文档”的“版本”方面存在主要问题,尽管我不知道情况是否仍然如此。
–安东尼
20年1月14日在23:24
@anthony,如果要执行jar,为什么要“文本差异补丁”?您处理二进制文件的全部原因是您不必理会其代码。
–矛A1
20年1月30日在18:58
#5 楼
工件是由特定过程生产/生成/制作的东西
只是出于Java项目构建而已。
问题不在您的脑海
汽车出厂时
新歌
存储库
是存放事物的容器
用于Java项目的Github。
对于您的艰巨问题,
在理论中,人工制品将是人工制品的存储库,在整个生命周期中对其进行持久化和管理。
在DevOps中,人工制品是一种产品管理二进制工件。它存储和管理您从构建中产生的不同类型(Jar,Python和npm包等),并在编译或部署时重新使用。
评论
有趣的解释,谢谢!
– Pierre.Vriens♦
18年8月20日在20:46
ca fait plaisir!
– gmolaire
18年8月21日在2:04
评论
对于我想成为一个基本问题的答案,有很多有趣的答案。有趣的是,它们都使我想起了旧的大型机环境中的类似概念(DevOps的根源是……而且似乎有许多DevOps概念起源于此)。