

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用和發佈 Swift 套件
<a name="swift-publish-consume"></a>

## 從 CodeArtifact 取用 Swift 套件
<a name="consume-swift-packages"></a>

使用下列程序從 AWS CodeArtifact 儲存庫取用 Swift 套件。

**從 CodeArtifact 儲存庫使用 Swift 套件**

1. 如果您尚未執行，請依照中的步驟[使用 CodeArtifact 設定 Swift Package Manager](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. 如果您尚未執行，請依照中的步驟[使用 CodeArtifact 設定 Swift Package Manager](configure-swift.md)設定 Swift Package Manager，以使用具有適當登入資料的 CodeArtifact 儲存庫。
**注意**  
產生的授權字符有效期為 12 小時。如果自建立權杖後已經過 12 小時，您將需要建立新的權杖。

1. 在 Xcode 中將套件新增為專案中的相依性。

   1. 選擇**檔案 > 新增套件**。

   1. 使用搜尋列搜尋您的套件。您的搜尋格式必須為 `package_scope.package_name`。

   1. 找到後，選擇套件，然後選擇**新增套件**。

   1. 驗證套件後，請選擇您要新增做為相依性的套件產品，然後選擇**新增套件**。

如果您使用 CodeArtifact 儲存庫搭配 Xcode 時遇到問題，請參閱 [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. 如果您尚未執行，請依照中的步驟[使用 CodeArtifact 設定 Swift Package Manager](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
   ```

### 使用 Curl 發佈 CodeArtifact 套件
<a name="publish-swift-packages-curl"></a>

雖然建議您使用 Swift 5.9 或更新版本隨附的 `swift package-registry publish`命令，但您也可以使用 Curl 將 Swift 套件發佈至 CodeArtifact。

使用下列程序將 Swift 套件發佈至具有 Curl 的 AWS CodeArtifact 儲存庫。

1. 如果您尚未建立，請依照中的步驟建立和更新 `CODEARTIFACT_AUTH_TOKEN`和 `CODEARTIFACT_REPO`環境變數[使用 CodeArtifact 設定 Swift Package Manager](configure-swift.md)。
**注意**  
身分驗證字符的有效期為 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
   ```

## 從 GitHub 擷取 Swift 套件並重新發佈至 CodeArtifact
<a name="publish-swift-packages-from-github"></a>

使用下列程序從 GitHub 擷取 Swift 套件，並將其重新發佈至 CodeArtifact 儲存庫。

**從 GitHub 擷取 Swift 套件並重新發佈至 CodeArtifact**

1. 如果您尚未執行，請依照中的步驟[使用 CodeArtifact 設定 Swift Package Manager](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 小時，請遵循中的步驟[在沒有登入命令的情況下設定 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
   ```