# Swift 빌드 및 테스트

CI(연속 통합) 워크플로를 만들어 Swift 프로젝트를 빌드하고 테스트하는 방법을 알아보세요.

> \[!NOTE]
> GitHub Enterprise Server 호스트 실행기는 현재 GitHub에서 지원되지 않습니다.

## 소개

이 가이드에서는 Swift 패키지를 빌드하고 테스트하는 방법을 보여 줍니다.

GitHub-hosted runners에는 사전 설치된 소프트웨어가 있는 도구 캐시가 있으며, Ubuntu 및 macOS 실행기는 Swift 패키지를 빌드하기 위한 종속성을 포함합니다. 최신 소프트웨어 및 사전 설치된 버전의 Swift와 Xcode에 대한 전체 목록은 [GitHub 호스팅 실행기](/ko/enterprise-server@3.22/actions/concepts/runners/github-hosted-runners#preinstalled-software-for-github-owned-images)을(를) 참조하세요.

## 필수 조건

YAML 구문과 이 구문이 사용되는 GitHub Actions방법에 대해 이미 잘 알고 있어야 합니다. 자세한 내용은 [GitHub Actions에 대한 워크플로 구문](/ko/enterprise-server@3.22/actions/reference/workflows-and-actions/workflow-syntax)을(를) 참조하세요.

Swift 패키지를 기본적으로 이해하는 것이 좋습니다. 자세한 내용은 Apple 개발자 설명서의 [Swift 패키지](https://developer.apple.com/documentation/xcode/swift-packages)를 참조하세요.

## Swift 워크플로 템플릿 사용

빠르게 시작하려면 워크플로 템플릿을 리포지토리의 `.github/workflows` 디렉터리에 추가합니다.

GitHub 는 대부분의 Swift 프로젝트에서 작동해야 하는 Swift에 대한 워크플로 템플릿을 제공합니다. 이 가이드의 후속 섹션에서는 이 워크플로 템플릿을 사용자 지정하는 방법에 대한 예시를 제공합니다.

1. GitHub에서 리포지토리의 기본 페이지로 이동합니다.

2. 리포지토리 이름에서 **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-play" aria-label="play" role="img"><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path></svg> 작업**을 클릭합니다.

   !["github/docs" 리포지토리의 탭 스크린샷. "작업" 탭은 주황색 윤곽선으로 강조 표시됩니다.](/assets/images/help/repository/actions-tab-global-nav-update.png)

3. 리포지토리에 워크플로가 이미 있는 경우 **새 워크플로**를 클릭합니다.

4. "워크플로 선택" 페이지에는 권장되는 워크플로 템플릿의 선택 항목이 표시됩니다. "swift"를 검색합니다.

5. **지속적 통합**을 클릭하여 워크플로 선택을 필터링합니다.

6. "Swift" 워크플로에서 **구성**을 클릭합니다.

   “Swift” 워크플로 템플릿을 찾을 수 없는 경우 다음 워크플로 코드를 리포지토리의 `swift.yml` 디렉터리에 있는 이름이 `.github/workflows`인 새 파일에 복사합니다.

   ```yaml copy
   name: Swift

   on:
     push:
       branches: [ "main" ]
     pull_request:
       branches: [ "main" ]

   jobs:
     build:
       runs-on: macos-latest

       steps:
       - uses: actions/checkout@v6
       - name: Build
         run: swift build -v
       - name: Run tests
         run: swift test -v
   ```

7. 필요에 따라 워크플로를 편집합니다. 예를 들어, 워크플로가 실행될 브랜치를 변경합니다.

8. **변경 내용 커밋**을 클릭합니다.

## Swift 버전 지정

호스팅된 GitHub 실행기에서 미리 설치된 특정 버전의 Swift를 사용하려면 `swift-actions/setup-swift` 작업을 사용하세요. 이 작업은 실행기의 도구 캐시에서 특정 버전의 Swift를 찾고 필수 이진 파일을 `PATH`에 추가합니다. 이러한 변경 내용은 작업의 나머지 부분에 대해 유지됩니다. 자세한 내용은 [`swift-actions/setup-swift`](https://github.com/marketplace/actions/setup-swift) 작업을 참조하세요.

자체 호스트 실행기를 사용하는 경우 원하는 Swift 버전을 설치하고 `PATH`에 추가해야 합니다.

아래 예시에서는 `swift-actions/setup-swift` 작업을 사용하는 방법을 보여 줍니다.

### 여러 Swift 버전 사용

행렬에서 여러 버전의 Swift를 사용하도록 작업을 구성할 수 있습니다.

```yaml copy

# 이 워크플로는 GitHub에서 인증되지 않은 작업을 사용합니다.
# 작업은 타사에서 제공하며
# 별도의 서비스 약관, 개인정보처리방침, 지원 설명서에서 규정됩니다.
# 참조하세요.

# 커밋 SHA에 작업을 고정하는 것이 좋습니다.
# 최신 버전을 얻으려면 SHA를 업데이트해야 합니다.
# 태그 또는 분기를 참조할 수도 있지만 경고 없이 작업이 변경될 수 있습니다.

name: Swift

on: [push]

jobs:
  build:
    name: Swift ${{ matrix.swift }} on ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest]
        swift: ["5.2", "5.3"]
    runs-on: ${{ matrix.os }}
    steps:
      - uses: swift-actions/setup-swift@65540b95f51493d65f5e59e97dcef9629ddf11bf
        with:
          swift-version: ${{ matrix.swift }}
      - uses: actions/checkout@v6
      - name: Build
        run: swift build
      - name: Run tests
        run: swift test
```

### 단일 특정 Swift 버전 사용

`5.3.3`과 같은 특정 버전의 Swift를 사용하도록 작업을 구성할 수 있습니다.

```yaml copy
# 이 워크플로는 GitHub에서 인증되지 않은 작업을 사용합니다.
# 작업은 타사에서 제공하며
# 별도의 서비스 약관, 개인정보처리방침, 지원 설명서에서 규정됩니다.
# 참조하세요.
steps:
  - uses: swift-actions/setup-swift@65540b95f51493d65f5e59e97dcef9629ddf11bf
    with:
      swift-version: "5.3.3"
  - name: Get swift version
    run: swift --version # Swift 5.3.3
```

## 코드 빌드 및 테스트

로컬에서 사용하는 것과 동일한 명령으로 Swift를 사용하여 코드를 빌드하고 테스트할 수 있습니다. 이 예시에서는 작업에서 `swift build` 및 `swift test`를 사용하는 방법을 보여 줍니다.

```yaml copy
# 이 워크플로는 GitHub에서 인증되지 않은 작업을 사용합니다.
# 작업은 타사에서 제공하며
# 별도의 서비스 약관, 개인정보처리방침, 지원 설명서에서 규정됩니다.
# 참조하세요.
steps:
  - uses: actions/checkout@v6
  - uses: swift-actions/setup-swift@65540b95f51493d65f5e59e97dcef9629ddf11bf
    with:
      swift-version: "5.3.3"
  - name: Build
    run: swift build
  - name: Run tests
    run: swift test
```