本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 CodeArtifact 配置 Swift 程序包管理器
要使用 Swift 程序包管理器向 AWS CodeArtifact 发布程序包或使用 CodeArtifact 中的程序包,您首先需要设置访问 CodeArtifact 存储库所需的凭证。使用 CodeArtifact 凭证和存储库端点来配置 Swift 程序包管理器 CLI 的推荐方法是使用 aws codeartifact login 命令。您也可以手动配置 Swift 程序包管理器。
使用 login 命令配置 Swift
使用 aws codeartifact login 命令在 CodeArtifact 中配置 Swift 程序包管理器。
注意
要使用 login 命令,需要使用 Swift 5.8 或更高版本,建议使用 Swift 5.9 或更高版本。
aws codeartifact login 命令将执行以下操作:
-
从 CodeArtifact 提取授权令牌并将其存储在您的环境中。凭证的存储方式取决于环境的操作系统:
macOS:在 macOS 钥匙串应用程序中创建一个条目。
Linux 和 Windows:在
~/.netrc文件中创建一个条目。
在所有操作系统中,如果存在凭证条目,则此命令会用新令牌替换该条目。
提取您的 CodeArtifact 存储库端点 URL 并将其添加到 Swift 配置文件中。该命令将存储库端点 URL 添加到位于
/path/to/project/.swiftpm/configuration/registries.json的项目级配置文件中。
注意
aws codeartifact login 命令会调用 swift package-registry 命令,后面的命令必须从包含 Package.swift 文件的目录中运行。因此,aws codeartifact login 命令必须在 Swift 项目中运行。
使用 login 命令配置 Swift
导航到包含项目
Package.swift文件的 Swift 项目目录。运行以下
aws codeartifact login命令:如果您要访问您拥有的域中的存储库,则无需包括
--domain-owner。有关更多信息,请参阅 跨账户域。aws codeartifact login --toolswift--domainmy_domain\ --domain-owner111122223333--repositorymy_repo\ [--namespacemy_namespace]
--namespace 选项将应用程序配置为仅使用您的 CodeArtifact 存储库中的程序包,前提是这些程序包位于指定命名空间中。CodeArtifact 命名空间是作用域的同义词,用于将代码组织成逻辑组,并防止在代码库包括多个库时可能发生的名称冲突。
调用 login 后的默认授权期为 12 小时,且必须调用 login 来定期刷新令牌。有关使用 login 命令创建的授权令牌的更多信息,请参阅使用 login 命令创建的令牌。
不使用 login 命令配置 Swift
虽然建议您使用 aws codeartifact login 命令来配置 Swift,但您也可以通过手动更新 Swift 程序包管理器配置来配置 Swift 程序包管理器,而不使用 login 命令。
在以下程序中,您将使用 AWS CLI 来执行以下操作:
从 CodeArtifact 提取授权令牌并将其存储在您的环境中。凭证的存储方式取决于环境的操作系统:
macOS:在 macOS 钥匙串应用程序中创建一个条目。
Linux 和 Windows:在
~/.netrc文件中创建一个条目。
提取您的 CodeArtifact 存储库端点 URL。
在
~/.swiftpm/configuration/registries.json配置文件中,添加一个包含存储库端点 URL 和身份验证类型的条目。
不使用 login 命令配置 Swift
在命令行中,使用以下命令来提取 CodeArtifact 授权令牌并将其存储在环境变量中。
将
my_domain替换为您的 CodeArtifact 域名。将
111122223333替换为域所有者的 AWS 账户 ID。如果您要访问您拥有的域中的存储库,则无需包括--domain-owner。有关更多信息,请参阅 跨账户域。
通过运行以下命令来获取 CodeArtifact 存储库的端点。您的存储库端点用于将 Swift 程序包管理器指向您的存储库来使用或发布程序包。
将
my_domain替换为您的 CodeArtifact 域名。将
111122223333替换为域所有者的 AWS 账户 ID。如果您要访问您拥有的域中的存储库,则无需包括--domain-owner。有关更多信息,请参阅 跨账户域。将
my_repo替换为您的 CodeArtifact 存储库名称。
以下 URL 是一个示例存储库端点。
https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/swift/my_repo/注意
要使用双堆栈端点,请使用
codeartifact.端点。region.on.aws重要
当用于配置 Swift 程序包管理器时,必须将
login附加到存储库 URL 端点的末尾。在此程序的命令中为您完成附加。将这两个值存储在环境变量中之后,使用
swift package-registry login命令将它们传递给 Swift,如下所示:接下来,更新您的应用程序使用的程序包注册表,以便从您的 CodeArtifact 存储库中提取所有依赖项。必须在您尝试解析程序包依赖项所在的项目目录中运行此命令:
--scope选项将应用程序配置为仅使用您的 CodeArtifact 存储库中的程序包,前提是这些程序包位于指定作用域中。作用域是 CodeArtifact 命名空间的同义词,用于将代码组织成逻辑组,并防止在代码库包括多个库时可能发生的名称冲突。-
通过在项目目录中运行以下命令,可以查看项目级
.swiftpm/configuration/registries.json文件的内容,从而确认已正确设置配置:$ cat .swiftpm/configuration/registries.json { "authentication" : { }, "registries" : { "[default]" : { "url" : "https://my-domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/swift/my-repo/" } }, "version" : 1 }
您已经为您的 CodeArtifact 存储库配置了 Swift 程序包管理器,现在您可以通过它向存储库发布 Swift 程序包以及使用来自存储库的 Swift 程序包。有关更多信息,请参阅 使用和发布 Swift 程序包。