# Compilar y probar Swift

Aprende a crear un flujo de trabajo de integración continua (CI) para compilar y probar tu proyecto de Swift.

> \[!NOTE]
> Actualmente los ejecutores hospedados por GitHub Enterprise Server no se admiten en GitHub.

## Introducción

Esta guía te muestra cómo crear y probar un paquete de Swift.

GitHubLos ejecutores hospedados tienen una memoria caché de herramientas con software preinstalado y los ejecutores de Ubuntu y macOS incluyen las dependencias para compilar paquetes Swift. Para obtener una lista completa de software actualizado y las versiones preinstaladas de Swift y Xcode, consulta [Ejecutores hospedados en GitHub](/es/enterprise-server@3.22/actions/concepts/runners/github-hosted-runners#preinstalled-software-for-github-owned-images).

## Requisitos previos

Ya debería estar familiarizado con la sintaxis de YAML y cómo se usa con GitHub Actions. Para más información, consulta [Sintaxis del flujo de trabajo para Acciones de GitHub](/es/enterprise-server@3.22/actions/reference/workflows-and-actions/workflow-syntax).

Te recomendamos que tengas un entendimiento básico de los paquetes de Swift. Para más información, consulta [Paquetes de Swift](https://developer.apple.com/documentation/xcode/swift-packages) en la documentación para desarrolladores de Apple.

## Uso de una plantilla de flujo de trabajo de Swift

Para comenzar rápidamente, agregue una plantilla de flujo de trabajo al directorio `.github/workflows` del repositorio.

GitHub proporciona una plantilla de flujo de trabajo para Swift que debe funcionar para la mayoría de los proyectos de Swift. En las secciones siguientes de esta guía se proporcionan ejemplos de cómo puede personalizar esta plantilla de flujo de trabajo.

1. En GitHub, navegue hasta la página principal del repositorio.

2. En el nombre del repositorio, haz clic en **<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**.

   ![Captura de pantalla de las pestañas del repositorio "github/docs". La pestaña "Proyectos" aparece resaltada con un contorno naranja.](/assets/images/help/repository/actions-tab-global-nav-update.png)

3. Si ya tiene un flujo de trabajo en su repositorio, haga clic en **New workflow** (Nuevo flujo de trabajo).

4. En la página "Elegir un flujo de trabajo" se muestra una selección de plantillas de flujo de trabajo recomendadas. Busca «Swift».

5. Filtra la selección de flujos de trabajo con un clic en **Integración continua**.

6. En el flujo de trabajo “Swift”, haga clic en **Configurar**.

   Si no encuentra la plantilla de flujo de trabajo "Swift", copie el siguiente código de flujo de trabajo en un nuevo archivo llamado `swift.yml` en el directorio `.github/workflows` del repositorio.

   ```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. Edita el flujo de trabajo según sea necesario. Por ejemplo, cambia la rama en la que se ejecutará el flujo de trabajo.

8. Haga clic en **Commit changes** (Confirmar cambios).

## Especificar una versión de Swift

Para usar una versión específica preinstalada de Swift en un runner alojado en GitHub, use la acción `swift-actions/setup-swift`. Esta acción busca una versión específica de Swift en la caché de herramientas en el ejecutor y agrega los binarios necesarios a `PATH`. Estos cambios persistirán durante el resto de un trabajo. Para más información, vea la acción [`swift-actions/setup-swift`](https://github.com/marketplace/actions/setup-swift).

Si usa un ejecutor autohospedado, debe instalar las versiones de Swift deseadas y agregarlas a `PATH`.

En los ejemplos siguientes se muestra cómo usar la acción `swift-actions/setup-swift`.

### Utilizar versiones múltiples de Swift

Puedes configurar el trabajo para que use múltiples versiones de Swift en una matriz.

```yaml copy

# Este flujo de trabajo usa acciones que no GitHub no certifica.
# Estas las proporcionan entidades terceras y las gobiernan
# condiciones de servicio, políticas de privacidad y documentación de soporte
# en línea.

# GitHub recomienda anclar acciones a un SHA de confirmación.
# Para obtener una versión más reciente, debes actualizar el SHA.
# También puedes hacer referencia a una etiqueta o rama, pero la acción puede cambiar sin ninguna advertencia.

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

### Utilizar solo una versión específica de Swift

Puede configurar el trabajo para que use una versión concreta de Swift, por ejemplo, `5.3.3`.

```yaml copy
# Este flujo de trabajo usa acciones que no GitHub no certifica.
# Estas las proporcionan entidades terceras y las gobiernan
# condiciones de servicio, políticas de privacidad y documentación de soporte
# en línea.
steps:
  - uses: swift-actions/setup-swift@65540b95f51493d65f5e59e97dcef9629ddf11bf
    with:
      swift-version: "5.3.3"
  - name: Get swift version
    run: swift --version # Swift 5.3.3
```

## Construir y probar tu código

Puedes utilizar los mismos comandos que usas localmente para compilar y probar tu código utilizando Swift. En este ejemplo se muestra cómo usar `swift build` y `swift test` en un trabajo:

```yaml copy
# Este flujo de trabajo usa acciones que no GitHub no certifica.
# Estas las proporcionan entidades terceras y las gobiernan
# condiciones de servicio, políticas de privacidad y documentación de soporte
# en línea.
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
```