# Создание и тестирование для Swift

Узнайте, как создать рабочий процесс непрерывной интеграции (CI) для создания и тестирования проекта Swift.

## Введение

В этом руководстве описано, как создавать и тестировать пакет Swift.

GitHub, размещенных в runner, имеют кэш средств с предварительно установленным программным обеспечением, а средства запуска Ubuntu и macOS включают зависимости для создания пакетов Swift. Полный список актуального программного обеспечения и предварительно установленных версий Swift и Xcode см. в разделе [Средства выполнения тестов, размещенные в GitHub](/ru/actions/using-github-hosted-runners/about-github-hosted-runners#supported-software).

## Необходимые компоненты

Вы уже должны быть знакомы с синтаксисом YAML и его использованием с GitHub Actions. Дополнительные сведения см. в разделе [Синтаксис рабочего процесса для GitHub Actions](/ru/actions/using-workflows/workflow-syntax-for-github-actions).

Рекомендуется иметь базовое представление о пакетах Swift. Дополнительные сведения см. в документации [разработчика Apple по пакетам Swift](https://developer.apple.com/documentation/xcode/swift-packages) .

## Использование шаблона рабочего процесса Swift

Чтобы быстро приступить к работе, добавьте шаблон рабочего процесса в `.github/workflows` каталог репозитория.

GitHub предоставляет шаблон рабочего процесса для Swift, который должен работать для большинства проектов Swift. В последующих разделах этого руководства приведены примеры настройки этого шаблона рабочего процесса.

1. На GitHubперейдите на главную страницу репозитория.
   данных repositories.repositories.actions-tab %} 1. Если в вашем репозитории уже используется рабочий процесс, нажмите кнопку **Создать рабочий процесс**.

2. На странице "Выбор рабочего процесса" показан выбор рекомендуемых шаблонов рабочих процессов. Найдите "swift".

3. Отфильтруйте выбор рабочих процессов, щелкнув **"Непрерывная интеграция**".

4. В рабочем процессе Swift нажмите кнопку **"Настроить**".

5. Измените рабочий процесс по мере необходимости. Например, измените ветвь, в которой будет выполняться рабочий процесс.

6. Щелкните **Зафиксировать изменения**.

Файл `swift.yml` рабочего процесса добавляется в `.github/workflows` каталог репозитория.

## Указание версии Swift

Чтобы использовать конкретную предварительно установленную версию Swift в размещенном в GitHub средстве выполнения тестов, примените действие `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.
# Они предоставляются сторонним поставщиком, и на них распространяются
# отдельные условия обслуживания, политика конфиденциальности и поддержка
# документации.

# 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

Вы можете настроить задание для использования одной конкретной версии Swift, например `5.3.3`.

```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
```