Python工件存储库的简介

111 阅读4分钟

一般来说,工件库提供了存储 "构建 "软件的能力,并使其可被其他系统、流程或终端用户使用。大多数工件库(如JFrog Artifactory、Sonatype Nexus、Google Artifact Registry等)支持多种开源语言(Python、Java、JavaScript等)和工件(从容器到编译的应用程序到tarballs)。

相比之下,ActiveState Artifact Repository只支持Python语言和Python工件(轮子)。 那么,为什么你会选择它而不是一个成熟的工件库呢?简单地说: 供应链安全

传统的工件库会摄取你所指向的任何东西。当涉及到Python时,目标通常是Python Package Index (PyPI),它对其提供的预置包的安全性和完整性没有任何保证。另外,源可能是一个内部构建系统,它从源代码中创建 Python 包。不幸的是,大多数 Python 软件包构建系统:

  • 要么创建一次性的构建,这意味着代码库从未被更新过,这就导致了长期以来的错误和脆弱的应用程序,或
  • 由于实施和维护多个构建系统的成本,产生高额的运营开销,每个操作系统都需要一个构建系统,而你的开发者和部署系统都需要。

虽然从源代码构建所有的Python依赖项比隐含地信任PyPI要好,但 如果没有适当的控制措施,仍然不能保证你不会成为 下一个Solarwinds

ActiveState Artifact Repository关键是包括使用我们基于云、多操作系统的 安全构建服务从源代码(包括链接的C库)自动构建Python包的能力 ,然后使其可用于分发:

  • 确保你的开发者所使用的Python依赖项的安全性和完整性。
  • 消除创建和维护多个构建环境的开销,为您的Windows、Mac和Linux开发人员工作的每个操作系统创建一个环境。
  • 通过使用安全的、基于云的构建服务,消除了定期审计内部构建系统的需要。
  • 在发现漏洞时跟踪并通知用户,同时自动构建解决漏洞的新依赖版本。

以Python为中心的组织,如果担心销售自己的依赖性的成本,以及Python供应链的安全性,可能会想调查ActiveState Artifact Repository可以帮助他们解决关键用例的方式。

神器库用例

在整个软件生命周期中,工件库可以为各种目的服务。一般来说,存储库在以下方面有关键作用:

  • 开发:提供一个中心位置来管理在开发过程中使用的经批准的开放源码和其他第三方工件的集合。
  • CI/CD:提供一个地方来存储从CI/CD系统输出的构建工件,以及从一个源头拉取输入,如预先构建的容器或运行时。
  • 生产:提供一个中心位置,用于向客户分发构建的软件工件,如补丁、更新和应用程序。

具体来说,ActiveState Artifact Repository可以在一些常见的用例中增加价值,包括:

  • 促进开源供应链安全 --客户可以使用ActiveState平台从源代码安全地构建Python包(包括本地库),然后从ActiveState Artifact Repository分发,而不是从PyPI导入不安全的预建包。
  • 启用开发团队 - 为了确保可重复的环境,ActiveState Platform作为一个单一的中心位置,可以通过ActiveState Artifact Repository构建、更新和分发开源语言运行环境。开发人员、QA、DevOps等可以提取预先构建的Python包,以创建他们的开发环境、CI/CD容器和测试环境,消除 "在我的机器上工作 "和环境配置问题。
  • 创建一个集中的、精心策划的目录 --为了确保开发人员只使用经过批准的Python包,ActiveState平台作为一个单一的中心位置,让所有的利益相关者快速评估新的依赖性,然后自动构建并通过ActiveState Artifact Repository提供给他们使用,极大地缩短了审批和可用性过程。
  • 标准化应用程序的可扩展性 --确保客户可以将您的应用程序与他们的系统集成,或者通过创建一个标准的Python部署来更好地满足他们的需求,该部署由一套经批准的软件包支持,客户可以从ActiveState Artifact Repository提取。这使您的技术支持团队能够更容易地重现问题,而不需要对环境配置进行故障排除。
  • 简化Python包的维护 --对代码库的更新经常导致构建的中断,但未更新的代码库会增加安全和性能/稳定性的风险,因为未解决的漏洞和错误不断积累。ActiveState可以代表您维护您的应用程序所需的Python依赖性,使您能够恢复以前花在管理和维护依赖性上的时间和资源损失。

ActiveState Artifact Repository中的所有工件都是作为标准的Python wheels创建的,这意味着你的团队可以使用Python的默认包管理器pip来安装它们,就像他们从更安全的PyPI版本中安装一样。