Skip to main content

Swift 빌드 및 테스트

CI(연속 통합) 워크플로를 만들어 Swift 프로젝트를 빌드하고 테스트할 수 있습니다.

참고: GitHub 호스트 실행기는 현재 GitHub Enterprise Server에서 지원되지 않습니다. GitHub public roadmap에 예정된 향후 지원에 대해 자세히 알아볼 수 있습니다.

소개

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

GitHub 호스트 실행기에는 소프트웨어가 사전 설치된 도구 캐시가 있으며, Ubuntu 및 macOS 실행기에는 Swift 패키지를 빌드하기 위한 종속성이 포함되어 있습니다. 최신 소프트웨어 및 사전 설치된 버전의 Swift와 Xcode에 대한 전체 목록은 "GitHub 호스팅 실행기 사용" 항목을 참조하세요.

필수 조건

YAML 구문과 이를 GitHub Actions와 함께 사용하는 방법에 대해 잘 알고 있어야 합니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문" 항목을 참조하세요.

Swift 패키지를 기본적으로 이해하는 것이 좋습니다. 자세한 내용은 Apple 개발자 설명서의 “Swift 패키지”를 참조하세요.

Swift 워크플로 템플릿 사용

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

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

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

  2. 리포지토리 이름 아래에서 작업을 클릭합니다.

    "github/docs" 리포지토리의 탭 스크린샷. "작업" 탭은 주황색 윤곽선으로 강조 표시됩니다.

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

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

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

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

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

    YAML
    name: Swift
    
    on:
      push:
        branches: [ "main" ]
      pull_request:
        branches: [ "main" ]
    
    jobs:
      build:
        runs-on: macos-latest
    
        steps:
        - uses: actions/checkout@v4
        - 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 작업을 참조하세요.

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

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

여러 Swift 버전 사용

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

YAML

# 이 워크플로는 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@v4
      - name: Build
        run: swift build
      - name: Run tests
        run: swift test

단일 특정 Swift 버전 사용

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

YAML
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 buildswift test를 사용하는 방법을 보여 줍니다.

YAML
steps:
  - uses: actions/checkout@v4
  - uses: swift-actions/setup-swift@65540b95f51493d65f5e59e97dcef9629ddf11bf
    with:
      swift-version: "5.3.3"
  - name: Build
    run: swift build
  - name: Run tests
    run: swift test