Artifactory,你的Swift包存储库

如果你期待的话WWDC 2022关于斯威夫特的一些激动人心的消息,我们正好有消息。

JFrog现在提供了第一个也是唯一一个Swift二进制包存储库,使开发人员能够使用JFrog Artifactory来解决Swift依赖关系,而不是使用企业源代码控制(Git)系统。Swift开发者可以从中受益Artifactory的健壮的二进制管理以及它有助于稳定和高效的CI/CD、大规模可伸缩性和保护软件供应链的方式。

为什么快?

自2015年作为开源编程语言推出以来,斯威夫特已经迅速取代了Objective-C,成为iOS和所有其他苹果操作系统应用程序开发的首选语言。

但Swift的用途不仅仅是为苹果产品开发。hth华体会最新官方网站作为一种通用语言,Swift也受到了服务器开发者的喜爱,他们用它来构建web服务、无服务器功能等等。除了在Apple和Linux平台上运行外,还有社区移植到Windows、WebAssembly甚至Android。

Swift的设计是为了在可表达性、性能和安全性之间找到平衡。重点是使Swift代码易于阅读和维护,以及确保Swift代码安全快速。Swift没有VM或JIT,这给了它可预测的性能,并且从一开始就被设计为内存安全。

正是由于这些原因,Swift经常进入“十大最受欢迎语言”榜单。在写这篇文章的时候,它目前在排行榜上排名第12位TIOBE索引-尽管预计在WWDC之后会有所提升。

Swift新的基于注册表的依赖管理

中添加了基于注册表的依赖项管理斯威夫特5.7.1提供社区所使用的基于源代码的依赖项管理的替代方案。

使用源代码控制可以让Swift开发人员快速建立并运行一个包生态系统,但也会给开发组织带来不小的挑战,比如:

  1. 基于源代码的依赖关系是可变的,只有在开发人员不强制推送或移动标签的情况下,为版本使用标签才有效。
  2. 使用通用协议与源代码控制系统进行交互,并不像企业规模依赖关系解决所需要的那样高效。
  3. 很难或不可能以可靠的方式将提交与作者联系起来,因此无法保证包及其构造的真实性。
  4. 为了与其他语言(如C和Objective C)互操作,Swift包管理器必须对依赖关系图中的每个包都有一个唯一的标识,当开发人员在系统之间移动东西时,这个标识很容易被破坏。
  5. 开发人员无法在包构件材料旁边存储关于包的元数据。

Swift的包注册选项解决了这些问题,JFrog很幸运成为合作者之一,帮助Swift实现了包注册功能。

今天,在公共源代码控制存储库中有数千个可用的包,并且需要一种将url映射到唯一标识的方法,可能跨多个SCM提供者。值得庆幸的是,Artifactory灵活的元数据系统可以很容易地将各种url映射到单个标识,从而使Swift包管理器能够查询注册表并避免两个标识系统之间的重复。

使用Artifactory将使Swift开发人员能够弃用定制的和复杂的URL映射系统,这些系统必须放置在适当的位置,以解决跨公共和私有分支的唯一身份问题,限制对公共源代码控制系统的影响,依赖关系的信息泄露等。这将提高构建和部署基于swift的系统的生产力和安全性。

Swift知识库入门

将Artifactory设置为您的私有Swift存储库很容易,并有助于确保跨团队的Swift构建不间断的速度和一致性。利用Artifactory的三种存储库类型来管理你的Swift包和依赖解析:

  • 局部存储库-对于你只在你的团队或项目中创建和共享的私有Swift包。
  • 远程存储库-在远程URL上管理注册表的缓存代理。从远程存储库请求的工件(如.zip文件)将按需缓存。您可以从远程存储库缓存中删除下载的构件,但是,您不能手动将构件部署到远程Swift注册中心。
  • 虚拟存储库-虚拟存储库混合了第一方和第三方(本地和远程)包,提供了更大的灵活性和一个单一的URL来部署和依赖解析。

JFrog Artifactory中支持Swift的GA将于6月中旬发布。有关设置这些Swift存储库的简单分步说明,请参阅JFrog用户文档

结论

对于这个相对年轻的语言来说,添加基于注册表的依赖管理是向前迈出的一大步,并且有可能对Swift社区产生巨大的积极影响。
通过利用Artifactory中的Swift存储库,您可以将必要的软件供应链最佳实践投入工作,从而使DevOps获得成功。确保所有Swift开发团队对依赖项和包的一致性,启用快速可靠的CI/CD,使用Artifactory的细粒度权限系统管理团队之间的访问,等等。

自己试试Artifactory的Swift存储库吧!你可以开始把这些方法付诸实践免费JFrog云账户!