

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

# 使用和发布 Swift 程序包
<a name="swift-publish-consume"></a>

## 使用来自的 Swift 包 CodeArtifact
<a name="consume-swift-packages"></a>

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

**使用 CodeArtifact 存储库中的 Swift 软件包**

1. 如果还没有，请按照中的[配置 Swift Package Manager CodeArtifact](configure-swift.md)步骤将 Swift Package Manager 配置为使用具有正确凭据的 CodeArtifact 存储库。
**注意**  
生成的授权令牌有效期为 12 小时。如果自创建令牌以来已过去 12 小时，则需要创建一个新的令牌。

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

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

   1. 在 `Package.swift` 文件的 `dependencies` 部分，通过添加程序包标识符来添加要使用的程序包。程序包标识符包含作用域和程序包名称，中间用句点分隔。有关示例，请参阅后续步骤之后的代码段。
**提示**  
要查找软件包标识符，您可以使用 CodeArtifact 控制台。找到要使用的特定程序包版本，并参考程序包版本页面上的**安装快捷方式**说明。

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

   1. 在 `targets` 部分中，添加需要使用依赖项的目标。

      以下代码段是一个示例代码段，显示了 `Package.swift` 文件中已配置的 `dependencies` 和 `targets` 部分：

      ```
      ...
          ],
          dependencies: [
              .package(id: "my_scope.package_name", from: "1.0.0")
          ],
          targets: [
            .target(
               name: "MyApp",
               dependencies: ["package_name"]
            ),...
          ],
      ...
      ```

1. 现在，所有内容都已配置完毕，请使用以下命令从中下载软件包依赖关系 CodeArtifact。

   ```
   swift package resolve
   ```

## 使用 Xcode CodeArtifact 中的 Swift 软件包
<a name="consume-swift-packages-xcode"></a>

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

**在 Xcode 中使用 CodeArtifact 存储库中的 Swift 软件包**

1. 如果还没有，请按照中的[配置 Swift Package Manager CodeArtifact](configure-swift.md)步骤将 Swift Package Manager 配置为使用具有正确凭据的 CodeArtifact 存储库。
**注意**  
生成的授权令牌有效期为 12 小时。如果自创建令牌以来已过去 12 小时，则需要创建一个新的令牌。

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

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

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

   1. 找到程序包后，选择程序包并选择**添加程序包**。

   1. 验证程序包后，选择要添加为依赖项的程序包产品，然后选择**添加程序包**。

如果您在 Xcode 中使用存储 CodeArtifact 库时遇到问题，[Swift 故障排除](swift-troubleshooting.md)请参阅，了解常见问题和可能的修复方法。

## 将 Swift 包发布到 CodeArtifact
<a name="publish-swift-packages"></a>

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

### 使用`swift package-registry publish`命令发布 CodeArtifact 软件包
<a name="publish-swift-packages-publish-command"></a>

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

1. 如果还没有，请按照中的[配置 Swift Package Manager CodeArtifact](configure-swift.md)步骤将 Swift Package Manager 配置为使用具有正确凭据的 CodeArtifact 存储库。
**注意**  
生成的授权令牌有效期为 12 小时。如果自创建令牌以来已过去 12 小时，则需要创建一个新的令牌。

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

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

   ```
   swift package-registry publish packageScope.packageName packageVersion
   ```

   例如：

   ```
   swift package-registry publish myScope.myPackage 1.0.0
   ```

1. 您可以通过在控制台中检查或按如下所示使用 `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 发布软件包
<a name="publish-swift-packages-curl"></a>

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

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

1. 如果还没有创建和更新环境变量，请按照[配置 Swift Package Manager CodeArtifact](configure-swift.md)中的步骤创建和更新 `CODEARTIFACT_AUTH_TOKEN` 和 `CODEARTIFACT_REPO` 环境变量。
**注意**  
授权令牌有效期为 12 小时。如果 `CODEARTIFACT_AUTH_TOKEN` 环境变量自创建以来已过去 12 小时，则需要使用新的凭证刷新环境变量。

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

   ```
   mkdir testDir && cd testDir
   swift package init
   git init .
   swift package archive-source
   ```

1. 使用以下 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"
   ```

------

1. 您可以通过在控制台中检查或按如下所示使用 `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
<a name="publish-swift-packages-from-github"></a>

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

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

1. 如果还没有，请按照中的[配置 Swift Package Manager CodeArtifact](configure-swift.md)步骤将 Swift Package Manager 配置为使用具有正确凭据的 CodeArtifact 存储库。
**注意**  
生成的授权令牌有效期为 12 小时。如果自创建令牌以来已过去 12 小时，则需要创建一个新的令牌。

1. 使用以下 `git clone` 命令克隆要提取并重新发布的 Swift 程序包的 Git 存储库。有关克隆 GitHub 仓库的信息，请参阅 GitHub 文档[中的克隆仓库](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository)。

   ```
   git clone repoURL
   ```

1. 导航到您刚刚克隆的存储库：

   ```
   cd repoName
   ```

1. 创建软件包并将其发布到 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
      ```

   1. 如果您使用的 Swift 版本早于 5.9，则必须使用 `swift archive-source` 命令创建程序包，然后使用 Curl 命令来发布程序包。

      1. 如果您尚未配置 `CODEARTIFACT_AUTH_TOKEN` 和 `CODEARTIFACT_REPO` 环境变量，或者自配置以来已过去 12 小时，请按照[不使用 login 命令配置 Swift](configure-swift.md#configure-swift-without-login-command)中的步骤进行操作。

      1. 使用 `swift package archive-source` 命令创建 Swift 程序包：

         ```
         swift package archive-source
         ```

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

      1. 使用以下 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"
         ```

------

1. 您可以通过在控制台中检查或按如下所示使用 `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
   ```