# Fastlane

> Automatiza el lanzamiento de apps iOS y Android con Fastlane y el plugin de Applivery. Simplifica la compilación, las pruebas y la distribución.

Source: https://docs.applivery.com/es/app-distribution/ci-cd/fastlane/  •  Last updated: 2026-06-08

**Answers:** ¿Qué es el plugin de Applivery para Fastlane? · ¿Cómo instalo el plugin de Applivery para Fastlane? · ¿Cuál es el parámetro obligatorio del plugin? · ¿Cómo guardo el token de Applivery de forma segura?

---

**TL;DR:** Automatiza el lanzamiento de tus apps iOS y Android a Applivery usando el plugin de Fastlane, simplificando el proceso de distribución.

![fastlane](https://www.applivery.com/wp-content/uploads/2021/12/fastlane.png "fastlane | Applivery")

[Fastlane](https://fastlane.tools/) es una herramienta de automatización de código abierto para desarrolladores de iOS y Android que gestiona la compilación, las pruebas, la firma de código y la publicación de Apps. El [plugin de Applivery para Fastlane](https://github.com/fastlane-community/fastlane-plugin-applivery) extiende Fastlane con una acción `applivery` que sube el binario compilado a Applivery, adjunta metadatos de CI (commit, rama, tag, URL del repositorio) y envía notificaciones opcionales, todo en un solo paso.

---

## Requisitos previos

- [Fastlane instalado](https://docs.fastlane.tools/#getting-started) en tu sistema o agente de CI.
- Un App API Token de Applivery. Encuéntralo en **Ajustes de la App → Token API** en el panel de Applivery, o consulta [Apps API Token](https://docs.applivery.com/en/app-distribution/api/app-api-token/).
- Un `Fastfile` en tu proyecto con al menos un lane definido.

---

**Instalar el plugin**

En el directorio de tu proyecto, ejecuta:

```bash
fastlane add_plugin applivery
```

Esto añade el plugin a tu `Pluginfile` y lo instala. Haz commit del `Pluginfile` y el `Gemfile.lock` actualizados en tu repositorio para que el plugin esté disponible automáticamente en CI.

**Configurar tu Fastfile**

Añade una acción `applivery` a cualquier lane de tu `Fastfile`. El único parámetro obligatorio es `app_token`. El resto son opcionales.

### Ejemplo iOS

```ruby
platform :ios do
  lane :deploy do
    # Compilar la app
    gym(
      scheme: "MyApp",
      export_method: "enterprise"   # o "ad-hoc"
    )

    # Subir a Applivery
    applivery(
      app_token: ENV["APPLIVERY_TOKEN"],
      name: "v#{get_version_number} (#{last_git_commit[:abbreviated_commit_hash]})",
      changelog: last_git_commit[:message],
      notify_collaborators: true,
      notify_message: "Nueva Build lista para pruebas",
      tags: "ios, staging"
    )

    puts "Build subida. ID: #{lane_context[SharedValues::APPLIVERY_BUILD_ID]}"
  end
end
```

### Ejemplo Android

```ruby
platform :android do
  lane :deploy do
    # Compilar el APK
    gradle(task: "assembleRelease")

    # Subir a Applivery
    applivery(
      app_token: ENV["APPLIVERY_TOKEN"],
      name: "v#{android_get_version_name}",
      changelog: last_git_commit[:message],
      notify_collaborators: true,
      notify_message: "Nueva Build de Android disponible",
      tags: "android, staging"
    )
  end
end
```
### Ejecutar el lane

```bash
fastlane ios deploy
fastlane android deploy
```

## Parámetros del plugin

| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| `app_token` | String | **Sí** | Tu App API Token de Applivery. Disponible en **Ajustes de la App → Token API**. |
| `name` | String | No | Nombre legible de la Build mostrado en el panel de Applivery. Por ejemplo: `RC 1.0`, `v2.4.0-beta`. |
| `changelog` | String | No | Notas de la versión o descripción de los cambios de esta Build. |
| `notify_collaborators` | Boolean | No | Envía una notificación por email a los Colaboradores de la App tras la subida. Por defecto: `false`. |
| `notify_employees` | Boolean | No | Envía una notificación por email a los empleados de la tienda tras la subida. Por defecto: `false`. |
| `notify_message` | String | No | Mensaje personalizado incluido en el email de notificación. |
| `tags` | String | No | Etiquetas separadas por comas para identificar la Build. Por ejemplo: `"staging, sprint-42"`. |
| `filter` | String | No | Filtro de grupo para notificaciones. Separado por comas para AND, por barra vertical para OR. Por ejemplo: `"group1,group2\|group3"` significa (group1 AND group2) OR (group3). |
| `build_path` | String | No | Ruta explícita al binario a subir. Por defecto usa la ruta generada por `gym()` (iOS) o `gradle()` (Android). |

---

## Valores compartidos

Tras una subida exitosa, el plugin expone el ID de Build resultante como valor compartido de Fastlane. Puedes usarlo en pasos posteriores del lane, por ejemplo para desencadenar automatizaciones adicionales, actualizar una Publicación o registrar el resultado.

```ruby
applivery(
  app_token: ENV["APPLIVERY_TOKEN"]
)

build_id = lane_context[SharedValues::APPLIVERY_BUILD_ID]
puts "ID de Build subida: #{build_id}"
```

---

## Guardar el token de forma segura

Nunca escribas tu App Token directamente en el `Fastfile`. Usa una de estas opciones según tu configuración:

**Variable de entorno (recomendado para CI):**

```ruby
applivery(
  app_token: ENV["APPLIVERY_TOKEN"]
)
```

Define `APPLIVERY_TOKEN` como variable de entorno secreta en tu plataforma de CI (Bitrise, Azure Pipelines, GitHub Actions, Jenkins, etc.).

**Archivo `.env` de Fastlane (recomendado para desarrollo local):**

Crea un archivo `.env` en tu directorio `fastlane/` (añádelo a `.gitignore`):

```
APPLIVERY_TOKEN=tu_token_aquí
```

Fastlane carga los archivos `.env` automáticamente. Referencia la variable de la misma forma: `ENV["APPLIVERY_TOKEN"]`.

---

## Ejemplo completo de Fastfile

Un `Fastfile` real con lanes de despliegue separados para iOS y Android, usando metadatos de Git para el changelog y el nombre de la Build:

```ruby
# fastlane/Fastfile

default_platform(:ios)

platform :ios do
  desc "Compilar y desplegar en Applivery"
  lane :deploy do
    increment_build_number(build_number: number_of_commits)

    gym(
      scheme: "MyApp-Staging",
      export_method: "enterprise",
      output_directory: "./build",
      output_name: "MyApp.ipa"
    )

    applivery(
      app_token: ENV["APPLIVERY_TOKEN"],
      name: "#{get_version_number} (#{last_git_commit[:abbreviated_commit_hash]})",
      changelog: last_git_commit[:message],
      notify_collaborators: true,
      notify_message: "Nueva Build de iOS — #{git_branch}",
      tags: "ios, #{git_branch}"
    )

    puts "✅ Subida a Applivery. ID de Build: #{lane_context[SharedValues::APPLIVERY_BUILD_ID]}"
  end
end

platform :android do
  desc "Compilar y desplegar en Applivery"
  lane :deploy do
    gradle(
      task: "assemble",
      build_type: "Release"
    )

    applivery(
      app_token: ENV["APPLIVERY_TOKEN"],
      name: "#{android_get_version_name} (#{last_git_commit[:abbreviated_commit_hash]})",
      changelog: last_git_commit[:message],
      notify_collaborators: true,
      notify_message: "Nueva Build de Android — #{git_branch}",
      tags: "android, #{git_branch}"
    )

    puts "✅ Subida a Applivery. ID de Build: #{lane_context[SharedValues::APPLIVERY_BUILD_ID]}"
  end
end
```
