Favicon

You are here: Home > Distribución de Apps > CI/CD > Jenkins

Jenkins

Integra Jenkins con Applivery para automatizar la subida de Builds y agilizar tu flujo de trabajo CI/CD de distribución de apps móviles.

10 min read

TL;DR

Integra Jenkins con Applivery para subir nuevas builds automáticamente tras cada ejecución del pipeline, optimizando tu flujo de CI/CD.

jenkins

Integración con Jenkins

Jenkins es un servidor de automatización de código abierto ampliamente utilizado para la integración y entrega continuas. Orquesta las etapas de compilación, prueba, empaquetado y despliegue de un pipeline de entrega de software.

La integración de Applivery con Jenkins te permite subir automáticamente una nueva Build a Applivery al final de cada ejecución del pipeline, haciendo que los binarios recién compilados estén inmediatamente disponibles para los equipos de QA, las partes interesadas o los usuarios internos sin ningún paso manual.

Note

Applivery no tiene un plugin dedicado para Jenkins. La integración usa el plugin HTTP Request estándar de Jenkins para llamar directamente a la API de subida de Applivery. Este enfoque es más sencillo, más fácil de mantener y funciona con cualquier versión de Jenkins.


Requisitos previos

Antes de configurar la integración, asegúrate de tener:

  • Una instancia de Jenkins con el plugin HTTP Request instalado.
  • Un App API Token de Applivery. Encuéntralo en Ajustes de la App → Token API en el panel de Applivery, o consulta Integration API Token para instrucciones sobre cómo crearlo.
  • Un pipeline de Jenkins que genere un artefacto de Build (.ipa, .apk, .aab u otro formato compatible).

1
Guardar el App Token como credencial de Jenkins

Nunca escribas tu token de Applivery directamente en el Jenkinsfile. Guárdalo como credencial secreta en Jenkins y referencíala mediante una variable de entorno.

  1. Ve a Jenkins → Manage Jenkins → Credentials.
  2. Añade una nueva credencial de tipo Secret text.
  3. Establece el ID como APPLIVERY_TOKEN (o cualquier nombre que prefieras; úsalo de forma consistente).
  4. Pega tu App API Token de Applivery como valor secreto.

En tu Jenkinsfile, expón la credencial como variable de entorno:

environment {
    APPLIVERY_TOKEN = credentials('APPLIVERY_TOKEN')
}
2
Añadir la etapa de subida a tu pipeline

Añade una etapa Applivery Upload después de tu paso de compilación. La etapa usa el paso httpRequest del plugin HTTP Request para llamar a la API de subida de Applivery con multipart/form-data.

stage('Applivery Upload') {
    def response = httpRequest(
        url: 'https://upload.applivery.io/v1/integrations/builds',
        httpMode: 'POST',
        consoleLogResponseBody: true,
        wrapAsMultipart: true,
        customHeaders: [
            [
                maskValue: true,
                name: 'Authorization',
                value: "Bearer ${env.APPLIVERY_TOKEN}"
            ]
        ],
        formData: [
            // Archivo de Build
            [
                name: 'build',
                fileName: 'app.ipa',
                uploadFile: './app.ipa',
                contentType: 'application/octet-stream'
            ],
            // Metadatos de la Build
            [name: 'versionName',        value: "${env.BUILD_TAG}"],
            [name: 'changelog',          value: "${env.GIT_COMMIT_MSG}"],
            [name: 'tags',               value: 'jenkins, ci'],
            // Notificaciones
            [name: 'notifyCollaborators', value: 'true'],
            [name: 'notifyEmployees',     value: 'false'],
            [name: 'notifyMessage',       value: 'Nueva Build disponible desde Jenkins'],
            [name: 'notifyLanguage',      value: 'es'],
            // Filtro de grupo de notificación (opcional)
            // Para notificar a usuarios en group1 Y group2, O group3:
            [name: 'filter[0][0]',        value: 'group1'],
            [name: 'filter[0][1]',        value: 'group2'],
            [name: 'filter[1][0]',        value: 'group3'],
            // Metadatos CI/CD — aparecen en el panel de Applivery
            [name: 'deployer.name',                   value: 'Jenkins'],
            [name: 'deployer.info.commitMessage',      value: "${env.GIT_COMMIT_MSG}"],
            [name: 'deployer.info.commit',             value: "${env.GIT_COMMIT}"],
            [name: 'deployer.info.branch',             value: "${env.GIT_BRANCH}"],
            [name: 'deployer.info.buildUrl',           value: "${env.BUILD_URL}"],
            [name: 'deployer.info.buildNumber',        value: "${env.BUILD_NUMBER}"],
            [name: 'deployer.info.repositoryUrl',      value: "${env.GIT_URL}"]
        ]
    )

    echo "Respuesta de subida a Applivery: ${response}"
}

Ejemplo completo de Jenkinsfile

Aquí tienes un ejemplo completo de pipeline para una Build iOS:

pipeline {
    agent any

    environment {
        APPLIVERY_TOKEN = credentials('APPLIVERY_TOKEN')
    }

    stages {
        stage('Checkout') {
            steps {
                checkout scm
            }
        }

        stage('Build') {
            steps {
                // Reemplaza con tu comando de compilación real
                sh 'xcodebuild -scheme MyApp -configuration Release archive -archivePath build/MyApp.xcarchive'
                sh 'xcodebuild -exportArchive -archivePath build/MyApp.xcarchive -exportPath build/ -exportOptionsPlist ExportOptions.plist'
            }
        }

        stage('Applivery Upload') {
            steps {
                script {
                    def response = httpRequest(
                        url: 'https://upload.applivery.io/v1/integrations/builds',
                        httpMode: 'POST',
                        consoleLogResponseBody: true,
                        wrapAsMultipart: true,
                        customHeaders: [
                            [
                                maskValue: true,
                                name: 'Authorization',
                                value: "Bearer ${env.APPLIVERY_TOKEN}"
                            ]
                        ],
                        formData: [
                            [
                                name: 'build',
                                fileName: 'MyApp.ipa',
                                uploadFile: './build/MyApp.ipa',
                                contentType: 'application/octet-stream'
                            ],
                            [name: 'versionName',                    value: "${env.BUILD_TAG}"],
                            [name: 'changelog',                      value: "Build #${env.BUILD_NUMBER} — ${env.GIT_BRANCH}"],
                            [name: 'notifyCollaborators',             value: 'true'],
                            [name: 'notifyMessage',                   value: 'Nueva Build lista para pruebas'],
                            [name: 'notifyLanguage',                  value: 'es'],
                            [name: 'deployer.name',                   value: 'Jenkins'],
                            [name: 'deployer.info.commit',            value: "${env.GIT_COMMIT}"],
                            [name: 'deployer.info.branch',            value: "${env.GIT_BRANCH}"],
                            [name: 'deployer.info.commitMessage',     value: "${env.GIT_COMMIT_MSG}"],
                            [name: 'deployer.info.buildUrl',          value: "${env.BUILD_URL}"],
                            [name: 'deployer.info.buildNumber',       value: "${env.BUILD_NUMBER}"],
                            [name: 'deployer.info.repositoryUrl',     value: "${env.GIT_URL}"]
                        ]
                    )
                    echo "Respuesta de subida a Applivery: ${response}"
                }
            }
        }
    }

    post {
        failure {
            echo 'La compilación o la subida han fallado.'
        }
    }
}

Referencia de parámetros clave

El array formData se corresponde directamente con los parámetros de la API de subida de Applivery. Los más utilizados:

Parámetro Descripción
build El archivo binario a subir. Usa uploadFile para la ruta local y fileName para el nombre que Applivery registrará.
versionName Etiqueta legible para la Build. Usar ${env.BUILD_TAG} o ${env.BUILD_NUMBER} facilita su trazabilidad en Applivery.
changelog Notas de la versión mostradas en el panel de Applivery y en los emails de notificación.
tags Etiquetas separadas por comas para filtrar Builds. Por ejemplo: jenkins, staging.
notifyCollaborators Establece como true para enviar un email a los Colaboradores de la App cuando se suba la Build.
notifyEmployees Establece como true para enviar un email a los empleados de la tienda.
notifyMessage Mensaje personalizado incluido en el email de notificación.
notifyLanguage Idioma del email de notificación. Valores admitidos: en, es, fr, de, it, zh, pt, ru.
filter[N][M] Filtro de notificación por grupos. Cada array interno es una cláusula AND; cada índice externo es un OR.
deployer.name Nombre de la plataforma CI mostrado en el panel de Applivery. Por ejemplo: Jenkins.
deployer.info.commit SHA del commit de Git.
deployer.info.branch Nombre de la rama de Git.
deployer.info.buildNumber Número de Build de Jenkins.
deployer.info.buildUrl URL directa a la ejecución de Build en Jenkins.
deployer.info.repositoryUrl URL del repositorio de origen.

Para la referencia completa de parámetros, consulta POST – Subir una Build.


Variables de entorno de Jenkins

Los ejemplos de pipeline anteriores usan variables de entorno integradas de Jenkins, disponibles en cualquier pipeline sin configuración adicional:

Variable Descripción
BUILD_NUMBER El número de Build actual.
BUILD_TAG Cadena con el formato jenkins-<job>-<número>. Útil como nombre de versión.
BUILD_URL URL completa a la Build actual en la interfaz de Jenkins.
GIT_COMMIT SHA del commit de Git actual (requiere el plugin de Git).
GIT_BRANCH Nombre de la rama de Git actual (requiere el plugin de Git).
GIT_URL URL del repositorio de Git (requiere el plugin de Git).
Warning

GIT_COMMIT_MSG no es una variable integrada de Jenkins. Para usar el mensaje de commit en la subida, captúralo primero con un paso de shell:

env.GIT_COMMIT_MSG = sh(script: 'git log -1 --pretty=%B', returnStdout: true).trim()

La integración usa el plugin HTTP Request de Jenkins para llamar directamente a la API de subida de Applivery, subiendo nuevas Builds automáticamente.

Necesitas una instancia de Jenkins con el plugin HTTP Request, un App API Token de Applivery y un pipeline de Jenkins que genere un artefacto de Build.

Guarda tu token de Applivery como credencial de tipo «Secret text» en Jenkins y referencíala mediante una variable de entorno en tu Jenkinsfile.

El parámetro «build» especifica el archivo binario a subir. Usa «uploadFile» para la ruta local y «fileName» para el nombre del archivo en Applivery.

Establece el parámetro `notifyCollaborators` como `true` en el array `formData` del paso `httpRequest`.

Usa el parámetro `tags` en el array `formData`, proporcionando una lista de etiquetas separadas por comas (por ejemplo: `jenkins, staging`).

Las más útiles son `BUILD_NUMBER`, `BUILD_TAG`, `BUILD_URL`, `GIT_COMMIT`, `GIT_BRANCH` y `GIT_URL`.

Consulta la documentación de [POST – Subir una Build](https://docs.applivery.com/en/app-distribution/api/builds/upload-build/).

Last updated: June 8, 2026