使用和发布 Swift 程序包 - CodeArtifact

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用和发布 Swift 程序包

使用来自的 Swift 包 CodeArtifact

使用以下过程使用 AWS CodeArtifact 存储库中的 Swift 软件包。

使用 CodeArtifact 存储库中的 Swift 软件包
  1. 如果还没有,请按照中的配置 Swift Package Manager CodeArtifact步骤将 Swift Package Manager 配置为使用具有正确凭据的 CodeArtifact 存储库。

    注意

    生成的授权令牌有效期为 12 小时。如果自创建令牌以来已过去 12 小时,则需要创建一个新的令牌。

  2. 编辑应用程序项目文件夹中的 Package.swift 文件来更新项目要使用的程序包依赖项。

    1. 如果 Package.swift 文件不包含任何 dependencies 部分,请添加这个部分。

    2. Package.swift 文件的 dependencies 部分,通过添加程序包标识符来添加要使用的程序包。程序包标识符包含作用域和程序包名称,中间用句点分隔。有关示例,请参阅后续步骤之后的代码段。

      提示

      要查找软件包标识符,您可以使用 CodeArtifact 控制台。找到要使用的特定程序包版本,并参考程序包版本页面上的安装快捷方式说明。

    3. 如果 Package.swift 文件不包含任何 targets 部分,请添加这个部分。

    4. targets 部分中,添加需要使用依赖项的目标。

      以下代码段是一个示例代码段,显示了 Package.swift 文件中已配置的 dependenciestargets 部分:

      ... ], dependencies: [ .package(id: "my_scope.package_name", from: "1.0.0") ], targets: [ .target( name: "MyApp", dependencies: ["package_name"] ),... ], ...
  3. 现在,所有内容都已配置完毕,请使用以下命令从中下载软件包依赖关系 CodeArtifact。

    swift package resolve

使用 Xcode CodeArtifact 中的 Swift 软件包

使用以下过程在 Xcode 中使用 CodeArtifact 存储库中的 Swift 软件包。

在 Xcode 中使用 CodeArtifact 存储库中的 Swift 软件包
  1. 如果还没有,请按照中的配置 Swift Package Manager CodeArtifact步骤将 Swift Package Manager 配置为使用具有正确凭据的 CodeArtifact 存储库。

    注意

    生成的授权令牌有效期为 12 小时。如果自创建令牌以来已过去 12 小时,则需要创建一个新的令牌。

  2. 在 Xcode 中将这些程序包作为依赖项添加到项目中。

    1. 选择文件 > 添加程序包

    2. 使用搜索栏来搜索程序包。搜索必须采用 package_scope.package_name 形式。

    3. 找到程序包后,选择程序包并选择添加程序包

    4. 验证程序包后,选择要添加为依赖项的程序包产品,然后选择添加程序包

如果您在 Xcode 中使用存储 CodeArtifact 库时遇到问题,Swift 故障排除请参阅,了解常见问题和可能的修复方法。

将 Swift 包发布到 CodeArtifact

CodeArtifact 推荐 Swift 5.9 或更高版本,并使用swift package-registry publish命令发布 Swift 软件包。如果您使用的是早期版本,则必须使用 Curl 命令将 Swift 软件包发布到 CodeArtifact。

使用swift package-registry publish命令发布 CodeArtifact 软件包

在 Swift 5.9 或更高版本中使用以下过程使用 Swift Package Manager 将 Swift 软件包发布到 CodeArtifact 存储库。

  1. 如果还没有,请按照中的配置 Swift Package Manager CodeArtifact步骤将 Swift Package Manager 配置为使用具有正确凭据的 CodeArtifact 存储库。

    注意

    生成的授权令牌有效期为 12 小时。如果自创建令牌以来已过去 12 小时,则需要创建一个新的令牌。

  2. 导航到包含程序包的 Package.swift 文件的 Swift 项目目录。

  3. 运行以下 swift package-registry publish 命令来发布程序包。该命令创建软件包源存档并将其发布到您的 CodeArtifact 存储库。

    swift package-registry publish packageScope.packageName packageVersion

    例如:

    swift package-registry publish myScope.myPackage 1.0.0
  4. 您可以通过在控制台中检查或按如下所示使用 aws codeartifact list-packages 命令来确认已发布程序包并存在于存储库中:

    aws codeartifact list-packages --domain my_domain --repository my_repo

    您可以按如下所示使用 aws codeartifact list-package-versions 命令来列出程序包的单个版本:

    aws codeartifact list-package-versions --domain my_domain --repository my_repo \ --format swift --namespace my_scope --package package_name

使用 Cur CodeArtifact l 发布软件包

虽然建议使用 Swift 5.9 或更高版本附带的swift package-registry publish命令,但你也可以使用 Curl 将 Swift 软件包发布到。 CodeArtifact

使用以下过程使用 Curl 将 Swift 软件包发布到 AWS CodeArtifact 存储库。

  1. 如果还没有创建和更新环境变量,请按照配置 Swift Package Manager CodeArtifact中的步骤创建和更新 CODEARTIFACT_AUTH_TOKENCODEARTIFACT_REPO 环境变量。

    注意

    授权令牌有效期为 12 小时。如果 CODEARTIFACT_AUTH_TOKEN 环境变量自创建以来已过去 12 小时,则需要使用新的凭证刷新环境变量。

  2. 首先,如果您没有创建 Swift 程序包,则可以通过运行以下命令来创建:

    mkdir testDir && cd testDir swift package init git init . swift package archive-source
  3. 使用以下 Curl 命令将你的 Swift 软件包发布到 CodeArtifact:

    macOS and Linux
    curl -X PUT --user "aws:$CODEARTIFACT_AUTH_TOKEN" \ -H "Accept: application/vnd.swift.registry.v1+json" \ -F source-archive="@test_dir_package_name.zip" \ "${CODEARTIFACT_REPO}my_scope/package_name/packageVersion"
    Windows
    curl -X PUT --user "aws:%CODEARTIFACT_AUTH_TOKEN%" \ -H "Accept: application/vnd.swift.registry.v1+json" \ -F source-archive="@test_dir_package_name.zip" \ "%CODEARTIFACT_REPO%my_scope/package_name/packageVersion"
  4. 您可以通过在控制台中检查或按如下所示使用 aws codeartifact list-packages 命令来确认已发布程序包并存在于存储库中:

    aws codeartifact list-packages --domain my_domain --repository my_repo

    您可以按如下所示使用 aws codeartifact list-package-versions 命令来列出程序包的单个版本:

    aws codeartifact list-package-versions --domain my_domain --repository my_repo \ --format swift --namespace my_scope --package package_name

从中获取 Swift 软件包 GitHub 并重新发布到 CodeArtifact

使用以下过程从中获取 Swift 软件包 GitHub 并将其重新发布到 CodeArtifact 存储库。

从中获取 Swift 软件包 GitHub 并将其重新发布到 CodeArtifact
  1. 如果还没有,请按照中的配置 Swift Package Manager CodeArtifact步骤将 Swift Package Manager 配置为使用具有正确凭据的 CodeArtifact 存储库。

    注意

    生成的授权令牌有效期为 12 小时。如果自创建令牌以来已过去 12 小时,则需要创建一个新的令牌。

  2. 使用以下 git clone 命令克隆要提取并重新发布的 Swift 程序包的 Git 存储库。有关克隆 GitHub 仓库的信息,请参阅 GitHub 文档中的克隆仓库

    git clone repoURL
  3. 导航到您刚刚克隆的存储库:

    cd repoName
  4. 创建包并将其发布到 CodeArtifact。

    1. 推荐:如果您使用的是 Swift 5.9 或更高版本,则可以使用以下swift package-registry publish命令创建软件包并将其发布到您配置的 CodeArtifact 存储库中。

      swift package-registry publish packageScope.packageName versionNumber

      例如:

      swift package-registry publish myScope.myPackage 1.0.0
    2. 如果您使用的 Swift 版本早于 5.9,则必须使用 swift archive-source 命令创建程序包,然后使用 Curl 命令来发布程序包。

      1. 如果您尚未配置 CODEARTIFACT_AUTH_TOKENCODEARTIFACT_REPO 环境变量,或者自配置以来已过去 12 小时,请按照不使用 login 命令配置 Swift中的步骤进行操作。

      2. 使用 swift package archive-source 命令创建 Swift 程序包:

        swift package archive-source

        如果成功,您会在命令行中看到 Created package_name.zip

      3. 使用以下 Curl 命令将 Swift 软件包发布到 CodeArtifact:

        macOS and Linux
        curl -X PUT --user "aws:$CODEARTIFACT_AUTH_TOKEN" \ -H "Accept: application/vnd.swift.registry.v1+json" \ -F source-archive="@package_name.zip" \ "${CODEARTIFACT_REPO}my_scope/package_name/packageVersion"
        Windows
        curl -X PUT --user "aws:%CODEARTIFACT_AUTH_TOKEN%" \ -H "Accept: application/vnd.swift.registry.v1+json" \ -F source-archive="@package_name.zip" \ "%CODEARTIFACT_REPO%my_scope/package_name/packageVersion"
  5. 您可以通过在控制台中检查或按如下所示使用 aws codeartifact list-packages 命令来确认已发布程序包并存在于存储库中:

    aws codeartifact list-packages --domain my_domain --repository my_repo

    您可以按如下所示使用 aws codeartifact list-package-versions 命令来列出程序包的单个版本:

    aws codeartifact list-package-versions --domain my_domain --repository my_repo \ --format swift --namespace my_scope --package package_name