什么是人工制品?


53

有很多关于人工制品 ”的问题答案

如果它与有关,我不会感到惊讶。

我的问题

  • 什么是“人工工厂”(在DevOps中)?
  • 为什么使用人工制品?

对于我想成为一个基本问题的答案,有很多有趣的答案。有趣的是,它们都使我想起了旧的大型机环境中的类似概念(DevOps的根源是……以及许多DevOps概念似乎源于此)。
Pierre.Vriens

Answers:


65

Artifactory是JFrog的产品,用作二进制存储库管理器。就是说,很多时候人们会使用“人工工厂”作为更通用的二进制存储库的代名词,就像许多人使用Frigidaire或冰箱来表示冰箱一样,无论它是否为Frigidaire品牌。

二进制存储库是对源代码存储库的自然扩展,因为它将存储构建过程的结果,通常表示为工件。在大多数情况下,人们不会直接使用二进制存储库,而是通过所选技术随附的程序包管理器来使用。

在大多数情况下,它们将存储各个应用程序组件,这些组件随后可组装成完整的产品-这样就可以将构建分解为较小的块,从而更有效地利用资源,减少构建时间,更好地跟踪二进制调试数据库等。

以下是一些可以使用二进制存储库管理的最受欢迎的软件包管理器:

  • Java:jar,ear,war等具有Maven和官方的MavenCentral。还有许多其他软件包管理器也将使用maven二进制存储库格式(ivygradle等)。
  • .Net:.NET组件(DLL和EXE)的nuget,但也可以用作Windows rugrugh系统(如Chocolatey)下的分发机制。Powershell的较新版本也可以利用它来分发Powershell模块,尽管Powershell 画廊可以使用二进制存储库和nuget格式的存储库构建本地发行版。如果您对Windows分发管理感兴趣,也请检查OneGet
  • 在JavaScript中:npm是最受欢迎的npm之一,将需要nodejs
  • 在python中:有pip和官方程序包索引pypi,它也可以通过支持该格式的二进制存储库创建一个本地实例。

该列表远非完整,只是给出了其中的一个概念。

二进制存储库可以将所有这些托管在一个屋顶下,从而使团队的管理更加简单。请注意,您不需要庞大的团队就可以开始从二进制软件包管理中受益。最初的投资不是很大,并且可以立即感受到收益。尤其是现在,越来越多的平台,框架和语言将这种依赖性管理直接集成到它们中。但是,我发现它们的最大优点是创建一个让程序员自然而舒适的环境,使其成为必不可少的环境。它可以帮助您作为开发人员创建可靠的工具链,并帮助他们使整体体验自然地适合他们的选择范围。

就像我之前说的,有很多产品可以用作二进制软件包管理器,在目标用途上比其他产品更通用,在可访问性和价格上也相差很大。

我个人认为二进制存储库与源代码存储库或持续集成一样,对于设计良好的devops设置至关重要。


Merci也提供这个有趣的答案。出于某种原因,所有这些使我觉得像“嗯,所以这就像我们通常在良好的大型机环境中所说的那样,例如包含可执行文件的加载库(用于运行CICS / IMS / IDMS区域)……” 。
Pierre.Vriens

1
要添加的一件事是公共存储库(如Maven Central等)的兴起 -这些资源通常是软件项目的供应来源,这些项目越来越成为这些组件以及自定义胶水/前端代码以及客户特定业务的总装逻辑。
彼得

1
从来没有听说modulecounts.com,但是现在该网站已经关闭,我稍后再检查。
Newtopian '17

1
冰箱与冰箱的有趣比喻:)
Ravi Tiwari

6

它最初帮助我理解的方式是,源代码存储库和二进制存储库之间的区别在于:* Github或Bitbucket可用于维护所有“代码” * Jfrog Artifactory可用于维护内置的“二进制”至少直到我对这些条款感到满意为止!

此外,可以将Devips的“一次构建,始终部署”的理念与Artifactory的重要性相结合。在持续集成中,一旦构建二进制文件,将其放入Artifactory,然后从那里调用它,以部署到所有不同的环境中,将有很长的路要走。这样,我们可以确保在Dev中工作的代码是推送到Prod的代码,并且将在那里工作。


有趣的解释,谢谢!
Pierre.Vriens

5

Artifactory是Jfrog提供的Binary Repository Manager产品。

您是对的-作为二进制存储库管理器,它通常用于管理在软件开发过程中生成和使用的存储。

Artifactory的主要网页

作为市场上第一个也是唯一的通用Artifact Repository Manager,JFrog Artifactory完全支持由任何语言或技术创建的软件包。

...

... Artifactory提供了端到端的自动化防弹解决方案,用于跟踪从开发到生产的工件。

您提到的用法表明,对于DevOps中的通用商标而言,它可能非常受欢迎。


1
Merci Dan,您以某种方式确认了Artifactory就像Artifac ts与Reposi tory的组合。我想知道的另一个问题是:生产中使用的不是二进制文件的工件(例如PHP代码,CSS文件,bash脚本等)如何处理?
Pierre.Vriens

1
对于应用程序代码,他们的源代码版本与CVS,SVN,GIT中,水银系统。而对于配置代码,配置管理和发布系统,如木偶,厨师,ansible,盐..
彼得·

@ Pierre.Vriens我以前不是这样想的,总有人首先想到“工厂” :)但是我现在完全明白了。谢谢!
丹·科尼莱斯库

@ J.Doe merci进行了补充,只是为了进一步扩展您的意见……在大型机上,它们具有诸如“ ChangeMan ZMF”,“ Endevor SCM”等工具。这些工具用于您提到的所有功能(版本控制,分发等,还涉及与所有这些相关的工作流,安全性等)。
Pierre.Vriens

因此,如果我们仅重新发明msinframe,那它们可能有什么问题呢?
彼得

4

我认为使事情复杂化是当今每个人都赞赏的事物。我将尽力回答这个问题。

源存储库用于存储代码及其版本,而工件则用于存储作为这些代码输出的可执行程序[二进制文件-dll,jar,war,ear,msi,exe文件等]

现在,您想将它们分别放置在与代码不同的存储库中的原因可能有很多-从安全访问,黑客威胁,恶意代码检入,或者只是为只需要代码的客户提供单独途径二进制文件。

SCM的技术本来可以让自己创建两种用户(一种具有开发人员特权,可以访问源代码,另一种具有客户端权限,可以访问二进制文件)。但这没有走那条路!所以现在我们有了人工制品。


2

神器

是由特定过程生产/生成/制作的东西

从Java项目构建中提取Jar。

头脑中的问题

汽车出厂

新歌

仓库

是存放事物的容器

Github用于Java项目。

StackExchange解决您的艰巨问题

从理论上讲,一个神器 - ORY是神器,他们都坚持和整个生命周期管理的存储库。

在DevOps的上下文中,Artifactory是管理二进制工件的产品。它存储和管理您从构建中产生的不同类型(Jar,Python和npm包等),并在编译或部署时重新使用。


有趣的解释,谢谢!
Pierre.Vriens

ca fait plaisir!
gumol '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.