如何在Artifactory中使用Pub库

如果你是越来越多的客户端应用程序开发人员中的一员飞镖的编程语言而且颤振而且AngularDart工具包,我们有一些激动人心的消息要告诉你!
JFrog现在可以欢迎Dart开发人员使用Artifactory的健壮的二进制文件管理以及它促进持续整合的方式。我们增加了Pub, Dart的包装经理,Artifactory支持的包类型的长列表适用于本地、远程和虚拟存储库。
随着移动和web平台的多样化发展,越来越多的客户端应用程序开发人员已经接受Dart、Flutter和AngularDart,将其作为比JavaScript更优化、更通用的平台独立编码替代方案。
在一年之后,Dart获得了什么,GitHub将其列为2019年增长最快的语言的第一名使用量增长532%?您如何使用Artifactory中的Pub存储库来加速您的软件开发生命周期?
为什么是达特和Pub?
Dart编程语言由谷歌开发,是JavaScript的替代方案,针对web和移动应用程序等客户端开发进行了优化。它是用于UI的开源Flutter工具包和框架的基础,也是Angular的基础,Angular支持从单一的代码库为各种平台(如Android、iOs、Linux和Windows)开发应用程序。
公众酒吧库是Flutter的官方包库,角,以及为Dart编写的许多其他开源包。
Dart已经获得了更多开发者的采用,并在Stack Overflow的2021年开发者调查中上升到前10名最喜欢的技术.GitHub将其列为10高需求的语言为2022。Flutter自引入以来显著增长,在2021年贡献者显著增加。
凭借着由ECMA International管理的标准,Dart为基于客户端的应用程序提供了以下好处:
- 本地或网络:Dart代码可以为运行时目标编译,或者转换为可以在任何主流浏览器中运行的JavaScript。
- 快速启动:编译成快照文件的Dart程序包含可执行的预解析代码和依赖项。
- 并发性:Dart应用程序运行在一个或多个隔离中,其中任务运行在具有自己内存的独立环境中。
当与Flutter和/或Angular结合时,Dart使开发人员能够快速、可靠地开发出基于ui的应用程序,这些应用程序可以在许多移动和基于web的平台上运行。
远程酒吧存储库
作为一名Dart开发人员,您将依赖于用于Flutter、Angular和许多其他核心服务的不断增长的pub.dev包存储库。
为了确保Dart构建和Flutter或Angular应用在团队间的不间断速度和一致性,可以使用Artifactory远程存储库来代理pub.dev。
Artifactory中的远程存储库作为在远程URL管理的存储库或注册中心的只读缓存代理。远程回购的内容和本地源之间没有区别。
当你把它放在最好的时候DevOps实践工作,你和你的团队获得:
- 地点在速度-代理将您经常使用的包拉入并保存到构建发生的计算环境中,无论是在云中还是在on-prem中,从而最小化网络延迟并绕过节流限制。
- 连接保护—即使当pub.dev服务器不是由于糟糕的或中断的连接,或者如果远程服务器本身,您的pub.dev代理仍然可用遭受停机.
- 不变性的执法-一旦一个包的版本在代理中,它是不变的,在每个使用它的构建中都是一样的。这可以防止任何东西通过不适当的强制推入或偷偷进入你的构建恶意供应链攻击关于公开回购。
为pub.dev设置远程存储库代理很简单:
- 创建一个新的Pub远程存储库在Artifactory

- 命名远程存储库并为pub.dev分配URL

- 为了让Dart从工作站访问存储库,您需要生成一个访问令牌以验证您的Artifactory用户帐户。在Artifact Browser中使用“Set Me Up”来获取远程Pub存储库的正确URL,并按照说明将您的访问令牌添加到Pub工具中(使用
Dart pub令牌添加命令),并通过Pub环境变量将托管依赖项的解析重定向到Artifactory远程回购。$dart pub令牌添加https://JFROG_PLATFORM_URL/artifactory/api/pub/pub_remote进入秘密令牌:< stdin>上的类型令牌对“https://JFROG_PLATFORM_URL/artifactory/api/pub/pub_remote”的请求现在将使用秘密令牌进行身份验证。$出口PUB_HOSTED_URL = " https://JFROG_PLATFORM_URL/artifactory/api/pub/pub_remote "
在这个成功的设置之后,所有的Dart依赖关系都将从Artifactory中的代理中解析,而不是直接从pub.dev中解析。(有关另一种配置,请参阅下面关于虚拟存储库的部分。)
本地酒吧仓库
为私人镖包您将只在您的团队或部门中创建和共享的内容,您应该在Artifactory中维护本地Pub存储库。您可以创建您需要的任意多个,并在您的pubspec文件对你的依赖。
例如,一个致力于“Project X”的团队可能会建立并使用当地的Pub repo:
- 在Artifactory中创建名为“Pub -local-projectx”的本地Pub存储库
- 使用
Dart pub令牌添加命令将您的Artifactory访问令牌添加到pub工具。$dart pub令牌添加https://JFROG_PLATFORM_URL/artifactory/api/pub/pub-local-projectx进入秘密令牌:< stdin>上的类型令牌对“https://JFROG_PLATFORM_URL/artifactory/api/pub/pub-local-projectx”的请求现在将使用秘密令牌进行身份验证。 - 在
pubspec.yaml文件的私有包,使用publish_to属性来指定Artifactory中的私有回购。然后运行飞镖酒吧发布命令发布你的Dart包Artifactory。#确保包被发布到Artifactory publish_to: https://JFROG_PLATFORM_URL/artifactory/api/pub/pub_local_projectx - 要使用Artifactory私有回购中的包作为Project X应用程序源代码中的依赖项,请使用
主持关键字,其中指定依赖源在应用程序的pubspec.yaml文件。环境:sdk: >=2.15.0 < 3.0.0 dependencies: bandersnatch: hosted: https://JFROG_PLATFORM_URL/artifactory/api/pub/pub_local_projectx version: ^1.0.0
的
publish_to而且主持属性不需要,如果您要发布到用作您的PUB_HOSTED_URL.更多信息见下文。虚拟酒吧存储库
通过Artifactory,您可以将任何本地和/或远程存储库集合组合到一个虚拟存储库它充当一个可以通过公共URL访问的单一逻辑存储库。
例如,您可以为项目X、项目Y和项目Z维护单独的存储库,但是创建一个虚拟存储库,它可以通过一个安全的URL方便地访问所有三个回购。您还可以通过创建包含项目X和Y的虚拟回购,以及另一个包含项目X和Z的虚拟回购,来平衡便利性和安全性,并使用Artifactory的细粒度的权限来控制谁能访问以及如何访问。

您还可以将您的任何或所有私有Pub存储库与用于Pub .dev的远程存储库合并为虚拟回购,为所有托管依赖项创建一个单一访问URL。在本例中,您将设置PUB_HOSTED_URL环境变量添加到虚拟Pub回购的URL,使其成为解析Dart依赖关系的默认值。
由于虚拟回购是一个不同的URL,您还需要将您的Artifactory访问令牌添加到使用的发布工具中Dart pub令牌添加URL。
例如,要使用pub_virtual的虚拟存储库pub_local_projectx而且pub_remote解析所有托管依赖的存储库:
$dart pub令牌添加https://JFROG_PLATFORM_URL/artifactory/api/pub/pub_virtual进入秘密令牌:< stdin>上的类型令牌对“https://JFROG_PLATFORM_URL/artifactory/api/pub/pub_virtual”的请求现在将使用秘密令牌进行身份验证。#列出我们所有回购凭证$Dart pub令牌列表您有3个包存储库的秘密令牌:https://JFROG_PLATFORM_URL/artifactory/api/pub/pub_local_projectx https://JFROG_PLATFORM_URL/artifactory/api/pub/pub_remote https://JFROG_PLATFORM_URL/artifactory/api/pub/pub_virtual #解析对Pub虚拟回购$的所有依赖出口PUB_HOSTED_URL = " https://JFROG_PLATFORM_URL/artifactory/api/pub/pub_virtual "
如果将从虚拟回购解析所有依赖项,则只有访问令牌
pub_virtual_repo是必要的。但是,为本地和远程回购注册凭据也将使您能够声明必须从特定的Artifactory回购中提取的依赖项主持属性,如果应用程序需要它的话。尽管它们都将使用相同的Artifactory用户令牌,但必须为每个回购的URL添加该令牌。结论
通过Dart开发人员在Artifactory中对Pub的远程、本地和虚拟存储库的战略性使用,您将为您的SDLC提供一些最重要的最佳实践,以实现DevOps的成功。您可以确保所有Dart开发团队对依赖项和包的一致性,使用本地Pub、Flutter和AngularDart支持不会妨碍它们。您还可以使用Artifactory的细粒度权限系统来管理跨团队的访问。
自己试试Artifactory的Pub库吧!你可以开始把这些方法付诸实践免费JFrog云帐户!
