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

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

> \[!NOTE]
> GitHub Enterprise Serverразмещенные в данный момент средства выполнения не поддерживаются в GitHub.

## Введение

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

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

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

Вы уже должны быть знакомы с синтаксисом YAML и его использованием GitHub Actions. Дополнительные сведения см. в разделе [Синтаксис рабочего процесса для GitHub Actions](/ru/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> Actions**.

   ![Снимок экрана: вкладки для репозитория 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

Чтобы использовать определенную предустановленную версию 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
```