Bower:使用二进制存储库管理器进行前端开发的9个理由
前端web开发包的可用性在某种程度上落后于后端系统。获得一个包(如jquery或Bootstrap)是一个艰巨的过程,包括搜索互联网,下载一个包并验证与项目中其他包的兼容性,手动解压缩并将相关文件插入到项目中,然后重复整个过程以管理更新。Bower的出现消除了使用包进行前端web开发的痛苦。现在您所需要做的就是在您的凉亭中配置所需的包。json文件和Bower完成其余的工作。真的是这样吗?
Bower可能能够为您找到合适的软件包,但是如果您在凌晨2点试图赶在最后期限之前遇到连接问题,该怎么办?为什么鲍尔似乎有那么多坏指针?您如何确保组织中使用包的10个人都在使用相同的版本?Artifactory可以为您解决这类问题。
Artifactory对版本控制系统的支持使它能够代理帮你登记为了克服与使用软件包相关的问题。您所需要做的就是创建一个远程存储库来代理任何操作Git存储库您希望访问并收集所有这些远程存储库虚拟存储库.现在,把你的Bower命令指向Artifactory。Artifactory实现了Bower API,并为您透明地替换了Bower Registry。当你请求一个组件时,Artifactory会将该请求委托给Bower,然后将右指针指向GitHub,然后将请求的文件下载并压缩到一个单独的包中,连同相应的Bower。json文件。对于您,开发人员,所有这些都在后台透明地发生,因此当Artifactory完成获取包并保持更新的所有工作时,您可以继续保持高效。
本白皮书描述了同时使用Bower和Artifactory的好处。
虚拟存储库
虚拟存储库封装了任意数量的本地和远程存储库,并将它们表示为从单个URL访问的统一存储库。它为您提供了一种管理开发人员访问哪些存储库的方法,因为您可以自由地混合、匹配和修改虚拟存储库中包含的实际存储库。您还可以通过定义底层存储库顺序来优化工件解析,这样Artifactory将首先查看本地存储库,然后查看远程存储库缓存,只有这样Artifactory才会通过网络并直接从远程资源请求工件。对于开发人员来说,这很简单。只需请求包,Artifactory将根据您组织的策略安全且优化地访问它。
1.可靠且一致地访问组件
鲍尔有几个潜在的故障点。如果Bower Registry或GitHub宕机,你就不能下载或更新你的包。同样,网络问题可能会让你的工作陷入停顿。
Artifactory通过在远程存储库中按需缓存前端包来克服这些问题,因此您独立于GitHub, Bower Registry和网络。如果其中任何一个出现故障,您的软件包仍然可用,您可以继续工作,而不考虑任何外部问题。
远程存储库
远程存储库作为在远程站点(如GitHub)管理的存储库的缓存代理。工件根据控制缓存和代理行为的各种配置参数在远程存储库中存储和更新。

2.减少网络流量并优化构建
由于您的大部分代码可能是组装而不是构建的,因此您希望确保从外部资源下载的包的使用得到了优化。2022世界杯阿根廷预选赛赛程两个(或200个)开发人员使用相同的包分别下载它是没有意义的。
除了可靠性之外,远程存储库的另一个好处是减少了网络连接。一旦下载了包,组织中的所有其他开发人员就可以在本地使用它(从而减少网络流量)。当然,这对每个开发人员都是透明的。一旦通过Artifactory访问包,开发人员就可以继续做她最擅长的工作,而把其余的工作留给Artifactory。如果我们从一个角度来看网络流量构建服务器这样做的好处是显而易见的。一个典型的项目可能依赖于来自外部资源的数十个(如果不是数百个)包。2022世界杯阿根廷预选赛赛程对于构建这些项目的服务器,所有远程工件必须对服务器环境可用。下载所有这些必需的工件可能会在网络上产生千兆字节的数据流量,这会花费大量的时间来延迟构建过程。通过在本地缓存远程工件,构建过程会更快,并减少网络开销。
3.全面支持Docker
随着Docker技术的不断发展,它的使用也在不断增长。如果您还没有在您的组织中使用Docker,可能很快就会这样做。所以现在,除了管理Bower包,还需要管理Docker映像。但是没有必要安装和维护另一个工具。Artifactory是一个成熟的Docker存储库,支持所有Docker Registry api。这允许Docker客户端直接与Artifactory合作,为企业Docker用户带来了几个好处。
使用本地存储库就可以分发和共享图像在组织内轻松管理不同团队之间的映像。您甚至可以将您的Artifactory Docker存储库复制到Artifactory的远程实例中,以便与地理位置遥远的站点的同事共享映像。
Artifactory提供细粒度访问控制为您组织的映像提供安全的“docker push”和“docker pull”有效提供安全、私有的Docker存储库超出Docker可信注册表提供的安全性。
使用Artifactory,而不是私有存储库码头工人中心,消除了与互联网连接相关的任何问题可靠且一致地访问图像.并与Artifactory运行在一个高可用性配置您的Docker映像具有业界无可比拟的系统稳定性和可用性。
Artifactory的智能搜索可以很容易地找到存储在系统中的任何Docker映像。Docker Registry API支持Docker客户端的基本搜索,但Artifactory提供了更多。内置搜索通过单击操作来回答常见需求,自定义属性提供了满足各种特定需求的灵活性,Artifactory Query Language提供了一种简单的方法来制定复杂的查询,让您可以根据任何标准集找到图像。
无论你是已经开始使用Docker,还是只是在评估如何将它引入到你的组织中,一旦你使用Artifactory来管理你的Bower包,你就已经覆盖了Docker映像。
4.安全
鲍尔登记处本身不提供安全或隐私。如果你想控制对组件的访问,你需要在GitHub上使用私有存储库。但是这样工作的结果是,对于大多数用户来说,Bower Registry中的许多指针都是空白的,因为它们指向其他人的私有存储库。然后,你真的想让你的私人GitHub存储库的指针公开可用吗?
Artifactory为Bower提供了更完整的安全解决方案。作为第一道防线,Artifactory允许您使用命名模式来定义“excluded”和“Includes”进行访问,这样您就可以控制哪些包甚至可以缓存在任何特定的远程存储库中。然后,您可以为用户和组分配不同的权限集,以控制对每个存储库的访问。您甚至可以使用Artifactory与LDAP、Active Directory、SAML、Crowd和其他组件的集成来控制对服务器的访问。实际上,Artifactory成为您自己的私有和安全的内部Bower注册表。
5.智能搜索和人工查询语言(AQL)
考虑到系统中有大量的包,找到特定的包有时会非常复杂。
Artifactory为您提供灵活的搜索功能,以帮助您找到存储在系统中的包。首先,Artifactory支持Bower API,因此您可以使用与使用Bower Registry完全相同的方式来完成最基本的包搜索。然后,你可以根据任何固有属性的组合来查找包,比如名称、版本、时间戳、校验和和更多。但Artifactory通过一组常见的内置搜索提供了更多的功能。例如,您可以轻松地找到任何包的“最新”版本,而无需指定版本号。Artifactory还允许您为组件分配任意一组自定义属性,这些属性稍后可用于搜索。例如,您可以用“已发布”属性标记产品发布中使用的组件的所有特定版本,以便稍后轻松地重新生成已发布的版本。但是,搜索的全部功能伴随着AQL的完全灵活性。使用AQL,您可以将搜索查询定义为提取您正在寻找的正确包所需的任何复杂级别。
有了这些功能,Artifactory允许您使用与您的工作流相关的任何规则集搜索包。
Checksum-based搜索
通过校验和搜索包是Artifactory支持的一个强大功能,这要归功于通过校验和存储文件的独特方法。即使二进制文件已被重命名、移动或甚至部署到组织外部,您也可以将其追溯到原始版本并获得其完整的构建信息。只需通过校验和工具(支持MD5和SHA1)运行包,并在Artifactory中运行“校验和”搜索来检索原始版本。
人工查询语言(AQL)
AQL是一种灵活的查询语言,它提供了一种简单的方法来制定复杂的查询,使用任意数量的搜索条件、过滤器、排序选项和输出字段在存储库中进行搜索。它充分利用了Artifactory独特架构下的数据库,并为您提供了无限的自由度来精确地制定正确的查询,以找到您正在搜索的非常特定的包。这是其他二进制存储库所不能提供的。
6.在您的组织中分发和共享包
如前所述,您希望确保来自远程资源的包只下载一次,然后在整个组织中共享。2022世界杯阿根廷预选赛赛程
同样的原则也适用于您自己的专有包,您希望能够安全地与组织中的其他人共享这些包。通过使用本地存储库,Artifactory为您提供了一个存储内部包的中心位置。当所有团队都知道可以从单个URL访问任何包时,访问本地包和管理不同团队之间的依赖关系就变得非常容易。但是,如果您希望与位于组织地理位置较远的站点的同事共享您的包,该怎么办呢?
Artifactory支持将存储库复制到本地网络之外的另一个Artifactory实例。复制的存储库会定期自动地与它们的源代码同步,这样您的包就可以提供给不同的团队,无论他们位于世界各地。
局部存储库
本地存储库是物理的、本地管理的存储库,您可以在其中部署构件。通常,它们用于部署内部和外部发布以及开发构建,但它们也可以用于存储公共存储库(如第三方商业组件)中不广泛可用的包。使用本地存储库,您的所有内部资源都可以通过一个公共URL从整个组织的单个访问点获得。2022世界杯阿根廷预选赛赛程
7.系统稳定性和可靠性与Artifactory高可用性
在二进制文件管理中扮演这样一个核心角色,您的二进制存储库可以成为组织的关键任务组件,这意味着任何停机都可能产生严重的后果。
Artifactory支持高可用性在同一个局域网上使用2个或更多Artifactory服务器集群的网络配置。冗余网络架构意味着不存在单点故障,只要Artifactory节点中至少有一个处于运行状态,您的系统就可以继续运行。这最大限度地提高了您的正常运行时间,并可以将其提高到“五个九”的可用性水平。此外,您的系统可以在不影响性能的情况下适应更大的负载突发。通过水平服务器可伸缩性,您可以轻松地增加容量,以满足组织增长时的任何负载需求。通过使用具有多个服务器的架构,Artifactory HA允许您在没有系统停机的情况下执行大多数维护任务。
高可用性系统
对于组织来说任务关键的系统可以部署在高可用性配置中,以增加稳定性和可靠性。这是通过复制系统中的节点并将它们部署为冗余集群来实现的,从而消除任何单个节点上的完全可靠性。在高可用性配置中,不存在单点故障。如果任何特定节点宕机,系统将通过剩余的冗余节点继续无缝地、透明地对用户运行,不会停机,也不会降低整个系统的性能。

8.维护和监控
通过当前构建服务器和CI系统的使用,您生成的工件的数量可以快速增长。如果没有适当的管理,您的系统很快就会被旧的和不相关的工件阻塞。
Artifactory通过自动定时清理过程使您的系统有条理,没有杂乱。通过一些简单的设置,您可以安排任务来清理旧的构建和未使用的包。您可以设置限制并监视磁盘空间使用情况,或者定义“监视”,以便在最关键的二进制文件发生更改时接收警报。通过广泛的REST API, Artifactory几乎可以支持您希望在组织的脚本中实现的任何基于规则的清理协议。
9.为所有二进制文件提供通用的端到端解决方案
没有单一的工具或技术足以支持现代组织中的开发。有大量的打包格式、各种各样的构建工具、不同的持续集成系统和其他技术用于构建灵活且可维护的软件开发生态系统。管理所有不同打包格式的二进制文件并与生态系统的所有移动部分集成可能成为维护的噩梦。
Artifactory从头开始设计,以适应任何开发生态系统。Artifactory独特地构建在基于校验和的存储上,支持任何存储库布局,因此可以为任何打包格式提供本地级支持。本质上,无论您使用何种打包格式,Artifactory都可以存储和管理二进制文件,并且对相应的打包客户端是透明的。客户端使用Artifactory的方式与使用本机存储库的方式完全相同。例如,如果你正在使用Docker, Artifactory代理Docker Hub(或任何其他公共Docker注册中心),让你在本地Docker存储库中存储和管理自己的映像,并透明地与Docker客户端一起工作。如果您正在使用Bower, Artifactory代理GitHub(或任何其他公共Bower存储库),让您将自己的包存储在本地Bower存储库中,并透明地与Bower客户端一起工作。类似的Npm, Vagrant, NuGet, Ruby, Debian, YUM, Python等。
但是开发只是软件交付管道的一端。在一个包成为一个产品之前,它需要经历构建和集成的过程。市场上有许多构建和集成工具,但只有一种产品可以与所有工具一起工作。通过一组插件,Artifactory提供了与当今流行的CI系统(如Jenkins、Bamboo和TeamCity)的紧密集成。这些系统在创建构建时使用Artifactory来提供工件和解决依赖关系,并且还将其作为部署构建输出的目标。为了支持您无法应用插件的基于云的CI系统,Artifactory为您使用的构建工具(如Maven和Gradle)提供了插件,这些工具最终提供了相同级别的构建自动化。这涉及到开发和部署,但是一旦软件准备好供使用,如何分发软件呢?这就是Bintray的用武之地。
Bintray是JFrog的云下载中心,提供快速下载、细粒度访问控制、详细的统计数据和日志以及广泛的REST API。从Artifactory推广发行版本只是一个单击或API调用的问题。像Artifactory一样,Bintray与包无关,可以与所有不同的包客户端无缝地工作,因此它可以完全集成到任何持续集成/持续交付生态系统中。
Artifactory是一个通用存储库。它是位于开发生态系统中心的单一工具,与所有不同的技术“对话”,提高了生产力,减少了维护工作,并促进了不同部分之间的自动化集成。Artifactory和Bintray是一个完全自动化的软件分发管道的中心组件。
总结
Artifactory对Bower的支持简化了前端开发,让您可以专注于编写代码,而不必担心Bower Registry的安全性或可用性。其他功能,如智能搜索、AQL、高可用性、维护、监控等,可以帮助您更有效地工作,加快开发周期,最终将您的产品尽快推向市场。


