Artifactory,你的Swift包存储库

如果你期待WWDC 2022关于霉霉的激动人心的消息,我们有个好消息。

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

为什么快?

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

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

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

正是由于这些原因,斯威夫特经常进入“十大最受欢迎的语言”榜单。在撰写本文时,它目前在排行榜上排名第12TIOBE索引-尽管预计在WWDC之后会有一个增长。

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

中添加了基于注册表的依赖管理斯威夫特5.7提供了社区习惯的基于源代码的依赖关系管理的替代方案。

使用源代码控制可以让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云帐户!