

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Swift 패키지 사용 및 게시
<a name="swift-publish-consume"></a>

## CodeArtifact에서의 Swift 패키지 사용
<a name="consume-swift-packages"></a>

다음 절차에 따라 a AWS CodeArtifact 리포지토리의 Swift 패키지를 사용합니다.

**CodeArtifact 리포지토리에서 Swift 패키지를 사용하려면**

1. 아직 구성하지 않았다면, [CodeArtifact를 사용하여 Swift Package Manager 설정](configure-swift.md)의 단계에 따라 적절한 보안 인증과 함께 CodeArtifact 리포지토리를 사용하도록 Swift Package Manager를 구성합니다.
**참고**  
생성된 권한 부여 토큰은 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)의 단계에 따라 적절한 보안 인증과 함께 CodeArtifact 리포지토리를 사용하도록 Swift Package Manager를 구성합니다.
**참고**  
생성된 권한 부여 토큰은 12시간 동안 유효합니다. 토큰이 생성된 후 12시간이 경과한 경우 새 토큰을 생성해야 합니다.

1. 패키지를 Xcode의 프로젝트에 종속 항목으로 추가합니다.

   1. **파일 > 패키지 추가**를 선택합니다.

   1. 검색 창을 사용하여 패키지를 검색합니다. 검색은 `package_scope.package_name` 형식으로 합니다.

   1. 패키지를 찾으면 패키지를 선택한 다음 **패키지 저장**을 선택합니다.

   1. 패키지가 확인되면 종속 항목으로 추가할 패키지 제품을 선택한 다음 **패키지 추가**를 선택합니다.

CodeArtifact 리포지토리를 Xcode와 함께 사용할 때 문제가 발생하는 경우 일반적인 문제 및 가능한 해결 방법은 [Swift 문제 해결](swift-troubleshooting.md)를 참조하세요.

## CodeArtifact에 Swift 패키지 게시
<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를 사용하여 CodeArtifact 리포지토리에 Swift 패키지를 게시할 수 있습니다.

1. 아직 구성하지 않았다면, [CodeArtifact를 사용하여 Swift Package Manager 설정](configure-swift.md)의 단계에 따라 적절한 보안 인증과 함께 CodeArtifact 리포지토리를 사용하도록 Swift Package Manager를 구성합니다.
**참고**  
생성된 권한 부여 토큰은 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을 사용하여 CodeArtifact에 Swift 패키지를 게시할 수도 있습니다.

다음 절차에 따라 Curl을 사용하여 Swift 패키지를 a AWS CodeArtifact 리포지토리에 게시합니다.

1. 아직 업데이트하지 않았다면 [CodeArtifact를 사용하여 Swift Package Manager 설정](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 명령을 사용하여 CodeArtifact에 Swift 패키지를 게시합니다.

------
#### [ 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>

다음 절차를 사용하여 GitHub에서 Swift 패키지를 가져와서 CodeArtifact 리포지토리에 다시 게시할 수 있습니다.

**Swift 패키지를 GitHub에서 가져와서 CodeArtifact에 다시 게시하려면**

1. 아직 구성하지 않았다면, [CodeArtifact를 사용하여 Swift Package Manager 설정](configure-swift.md)의 단계에 따라 적절한 보안 인증과 함께 CodeArtifact 리포지토리를 사용하도록 Swift Package Manager를 구성합니다.
**참고**  
생성된 권한 부여 토큰은 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. 5.9 이전의 Swift 버전을 사용하는 경우 `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 명령을 사용하여 CodeArtifact에 Swift 패키지를 게시합니다.

------
#### [ 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}}
   ```