如何在Artifactory中使用Pub库

如果你是越来越多的客户端应用程序开发人员中的一员Dart编程语言而且颤振而且AngularDart工具包,我们有一些令人兴奋的消息要告诉你!

JFrog现在可以欢迎Dart开发人员使用Artifactory的健壮二进制文件管理以及它有助于持续整合的方式。我们增加了Pub, Dart的包管理器,到Artifactory支持的包类型的长列表对于本地、远程和虚拟存储库。

随着各种移动和web平台的发展,越来越多的客户端应用程序开发人员已经接受了Dart、Flutter和AngularDart,它们是一种比JavaScript更优化、更通用的平台独立编码替代方案。

一年后,Dart获得了什么,GitHub将其列为2019年增长最快的语言#1使用率增加532%?如何在Artifactory中使用Pub存储库来加速软件开发生命周期?

为什么是Dart和Pub?

Dart编程语言由谷歌开发,是JavaScript的替代品,针对web和移动应用程序等客户端开发进行了优化。它是用于UI的开源Flutter工具包和框架以及Angular的基础,这些工具包和框架支持从一个代码库为各种平台(如Android、iOs、Linux和Windows)开发应用程序。

公众酒吧库是Flutter的官方软件包存储库,,以及许多其他为Dart编写的开源软件包。

Dart越来越多地被开发人员采用,并在Stack Overflow的2021年开发者调查中排名前十最受欢迎的技术.GitHub已将其列为10种高需求语言为2022。Flutter自引入以来显著增长,在2021年贡献者显著增加。

Dart的标准由ECMA International管理,为基于客户端的应用程序提供了以下好处:

  • 本地或网络:Dart代码可以为运行时目标编译,也可以转换为可以在任何主要浏览器中运行的JavaScript。
  • 快速启动:Dart程序编译成快照文件,其中包含预解析的代码和准备执行的依赖项。
  • 并发性:Dart应用程序在一个或多个隔离中运行,其中任务运行在具有自己内存的独立环境中。

当与Flutter和/或Angular结合使用时,Dart使开发人员能够快速可靠地开发出基于ui的应用程序,这些应用程序可以在许多移动和基于web的平台上运行。

远程Pub存储库

作为一名Dart开发人员,你将依赖于用于Flutter、Angular和许多其他核心服务的不断增长的pub.dev包存储库。

为了确保你的Dart构建和Flutter或Angular应用在不同团队之间的不间断速度和一致性,请使用Artifactory远程存储库来代理pub.dev。

Artifactory中的远程存储库作为在远程URL上管理的存储库或注册中心的只读缓存代理。远程回购的内容和本地源的内容没有区别。

当你把这最好DevOps实践为了工作,你和你的团队获得:

  • 速度局部性-代理将您经常使用的包拉入并保存到构建发生的计算环境中,无论是在云中还是在预置中,都可以最大限度地减少网络延迟并绕过限制。
  • 连接保护-即使由于连接不佳或中断,或者远程服务器本身没有连接,您的pub.dev代理仍然可用遭遇停机
  • 不变性的执法一旦一个包的版本在代理中,它是不变的,在使用它的每个构建中都是一样的。这可以防止任何东西通过不适当的强制推入或潜入您的构建恶意供应链攻击关于公共回购。

为pub.dev设置远程存储库代理很简单:

  1. 创建一个新的Pub远程存储库在Artifactory
    Artifactory添加Dart Pub存储库

  2. 命名远程存储库并为pub.dev分配URL
    Artifactory添加Dart Pub仓库UI
  3. 为了让Dart从工作站访问您的存储库,您需要生成一个访问令牌来验证您的Artifactory用户帐户。在Artifact Browser中使用“Set Me Up”来获取远程Pub存储库的正确URL,并按照说明将您的访问令牌添加到Pub工具(使用Dart pub令牌添加命令),并通过Pub环境变量将托管依赖项的解析重定向到Artifactory远程repo。
    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中解析。(有关另一种配置,请参阅下面关于虚拟存储库的部分。)

本地酒吧资料库

私人Dart包您将只在您的团队或部门内创建和共享,您应该在Artifactory中维护本地Pub存储库。您可以根据需要创建任意数量的url,并在您的pubspec文件对于依赖项。

例如,一个从事“项目X”的团队可能会建立并使用本地酒吧回购:

  1. 在Artifactory中创建名为“Pub -local-projectx”的本地Pub存储库
  2. 使用Dart pub令牌添加命令将Artifactory访问令牌添加到发布工具。
    dart pub令牌添加https://JFROG_PLATFORM_URL/artifactory/api/pub/pub-local-projectx输入秘密令牌:<在stdin>上输入令牌对“https://JFROG_PLATFORM_URL/artifactory/api/pub/pub-local-projectx”的请求现在将使用秘密令牌进行身份验证。

  3. pubspec.yaml文件的私有包,使用publish_to物业以指定Artifactory的私人回购。然后运行飞镖酒吧出版命令发布你的Dart包Artifactory。
    确保包被发布到Artifactory publish_to: https://JFROG_PLATFORM_URL/artifactory/api/pub/pub_local_projectx

  4. 要在Project X应用程序源代码中使用Artifactory私有回购中的包作为依赖项,请使用主持的关键字依赖源在应用程序的pubspec.yaml文件。
    环境:sdk: >=2.15.0 < 3.0.0依赖:bandersnatch: hosted: https://JFROG_PLATFORM_URL/artifactory/api/pub/pub_local_projectx版本:^1.0.0
你知道吗?
publish_to而且主持属性,如果要将其发布到虚拟存储库,则不需要PUB_HOSTED_URL.更多信息见下文。

虚拟发布库

使用Artifactory,您可以将任何本地和/或远程存储库组合成一个虚拟存储库作为一个单一的逻辑存储库,可以通过一个公共URL访问。

例如,您可以为项目X、项目Y和项目Z维护单独的存储库,但是创建一个虚拟存储库,它可以通过一个安全的URL方便地访问所有三个回购库。您还可以通过创建一个包含项目X和Y的虚拟回购,以及另一个包含项目X和Z的虚拟回购,并使用Artifactory的虚拟回购来平衡便利性和安全性细粒度的权限来控制谁能访问以及如何访问。

Artifactory虚拟仓库Dart Pub

您还可以将任何或所有私有Pub存储库与用于Pub .dev的远程存储库组合到一个虚拟回收中,从而为所有托管依赖项创建一个单访问URL。在本例中,您将设置PUB_HOSTED_URL将虚拟Pub repo的URL设置为环境变量,使其成为解析Dart依赖项的默认值。

由于虚拟回购是一个不同的URL,您还需要将您的Artifactory访问令牌添加到发布工具中Dart pub令牌添加获取那个URL。

例如,使用apub_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虚拟repo $的所有依赖项出口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云帐户!