程序包概念
以下是您在 CodeCatalyst 中管理、发布或使用程序包时需要了解的一些概念和术语。
程序包
程序包是一种捆绑包,其中包含安装软件和解析依赖关系所需的软件和元数据。CodeCatalyst 支持 npm 程序包格式。
程序包中包括:
程序包命名空间
某些程序包格式支持分层程序包名称,用于将程序包组织成逻辑组,有助于避免名称冲突。具有相同名称的程序包可以存储在不同的命名空间中。例如,npm 支持作用域,而 npm 程序包 @types/node
的作用域为 @types
,名称为 node
。@types
作用域中还有许多其他的程序包名称。在 CodeCatalyst 中,作用域(“types”)称为程序包命名空间,名称(“node”)称为程序包名称。对于 Maven 程序包,程序包命名空间与 Maven GroupId 相对应。Maven 程序包 org.apache.logging.log4j:log4j
的 groupID(程序包命名空间)为 org.apache.logging.log4j
,artifactID(程序包名称)为 log4j
。某些程序包格式(例如 Python)不支持其概念类似于 npm 作用域或 Maven groupID 的分层名称。如果无法对程序包名称进行分组,则可能更难避免名称冲突。
程序包版本
程序包版本标识程序包的特定版本,例如 @types/node@12.6.9
。版本号格式和语义因不同的程序包格式而异。例如,npm 程序包版本必须符合语义版本控制规范
资产
资产是在 CodeCatalyst 中存储且与程序包版本相关联的单个文件,例如 npm .tgz
文件或 Maven POM 和 JAR 文件。
程序包存储库
CodeCatalyst 程序包存储库包含一组包含程序包版本的程序包,每个程序包都映射到一组资产。程序包存储库是多语言的,这意味着单个存储库可以包含任何受支持类型的程序包。每个程序包存储库都公开端点,以便使用各种工具提取和发布程序包,例如 NuGet CLI(nuget
、dotnet
)、npm
CLI、Maven CLI(mvn
)和 Python CLI(pip
和 twine
)。有关 CodeCatalyst 中的程序包配额的信息,包括可在每个空间中创建的程序包存储库的数量,请参阅程序包配额。
您可以通过将一个程序包存储库设置为上游来将它链接到另一个程序包存储库。在将存储库设置为上游时,可以使用来自该上游的任何程序包以及链中的任何其他上游存储库。有关更多信息,请参阅上游存储库。
网关存储库是一种特殊类型的程序包存储库,用于从官方外部程序包授权机构处拉取和存储程序包。有关更多信息,请参阅网关存储库。
上游存储库
可以使用 CodeCatalyst 在两个程序包存储库之间创建上游关系。当可以从下游存储库的程序包存储库端点访问其中的程序包版本时,一个程序包存储库将为另一个程序包存储库的上游。利用上游关系,可从客户端的角度有效地合并两个程序包存储库的内容。
例如,如果程序包管理器请求的程序包版本未位于存储库中,则 CodeCatalyst 将在配置的上游存储库中搜索该程序包版本。按上游存储库的配置顺序搜索这些存储库,在找到程序包后,CodeCatalyst 将停止搜索。
网关存储库
网关存储库是一种特殊类型的程序包存储库,它与支持的外部官方程序包授权机构相连。在将网关存储库添加为上游存储库时,可以从相应的官方程序包授权机构处使用程序包。您的下游存储库不与公有存储库进行通信,相反,所有内容都由网关存储库进行中继。通过此方式使用的程序包同时存储在网关存储库和收到原始请求的下游存储库中。
网关存储库是预定义的,但必须在要使用的每个项目中创建它们。以下列表包含可以在 CodeCatalyst 中创建的每个网关存储库以及它们连接到的程序包授权机构。
-
npm-public-registry-gateway 提供来自 npmjs.com 的 npm 程序包。
-
maven-central-gateway 提供来自 Maven Central 存储库的 Maven 程序包。
-
google-android-gateway 提供来自 Google Android 的 Maven 程序包。
-
commonsware-gateway 提供来自 CommonsWare 的 Maven 程序包。
-
gradle-plugins-gateway 提供来自 Gradle Plugins 的 Maven 程序包。
-
nuget-gallery-gateway 提供来自 NuGet Gallery 的 NuGet 程序包。
-
pypi-gateway 提供来自 Python 包索引的 Python 程序包。