Soporte de Bouteiller
Bouteiller es una app gratuita para iPhone y iPad con la que puedes seguir y manejar tus servidores Jenkins: estado de los jobs, logs de consola, lanzamiento y detención de builds, aprobación de los inputs de los pipelines, widgets y Atajos.
Requisitos
- iPhone o iPad con iOS 26 o iPadOS 26 o posterior.
- Un servidor Jenkins con la versión 2.580.1 LTS o una versión weekly 2.580 o posterior. Las versiones anteriores se rechazan al añadir el servidor, con un mensaje explícito.
- No hace falta ningún plugin en el servidor: Bouteiller solo usa la API REST estándar de Jenkins. Si hay instalados algunos plugins habituales (Pipeline, Pipeline Stage View o Pipeline Graph View, JUnit), la app muestra más información: stages de los pipelines, inputs pendientes, resultados de tests.
- Una cuenta de usuario de Jenkins y un token de API (consulta más abajo). No necesitas ser administrador: en la app ves y haces lo que tu cuenta puede ver y hacer en Jenkins.
- Acceso de red del dispositivo al servidor (directo o a través de la VPN de tu organización).
Crear un token de API
Bouteiller se conecta con tu nombre de usuario de Jenkins y un token de API, nunca con tu contraseña.
- Inicia sesión en la interfaz web de Jenkins.
- Abre la página Security (Seguridad) de tus ajustes de usuario: ve a
https://tu-jenkins/me/security(el formulario del servidor de la app tiene un botón Abrir la página del token que lo hace por ti), o haz clic en tu nombre arriba a la derecha y luego en Security. Ahí está la sección API Token. - En la sección API Token, elige Add new Token (Añadir token), ponle un nombre (por ejemplo, «Bouteiller iPhone») y genéralo.
- Copia el token enseguida: Jenkins solo lo muestra una vez.
- En Bouteiller, añade un servidor e introduce su dirección, tu nombre de usuario y el token. La app comprueba la conexión y la versión de Jenkins antes de guardarlo.
Puedes revocar el token en cualquier momento desde la misma página de Jenkins; la app indicará entonces que se han rechazado las credenciales.
VPN y autoridades de certificación internas
Servidores accesibles solo por VPN
Bouteiller no controla tu VPN. Al añadir o editar un servidor, activa Accesible solo por VPN: así, cuando el servidor no responda, la app te propondrá conectarte a la VPN en lugar de mostrar un error genérico.
- Sin VPN, la app muestra los últimos datos conocidos con un aviso «Sin conexión» y la fecha de esos datos. Las acciones (lanzar, detener, aprobar…) se desactivan.
- En cuanto el servidor vuelve a responder (VPN conectada, app de nuevo en primer plano), el aviso desaparece y las pantallas se actualizan.
- Una acción nunca se pone en cola para ejecutarse más tarde: si no se puede acceder al servidor, se te informa y puedes volver a intentarlo una vez conectado.
Certificados de una autoridad interna
Si tu servidor Jenkins usa un certificado emitido por la autoridad de certificación propia de tu organización, iOS no confía en él de forma predeterminada. Hay dos opciones:
- Instalar la autoridad en el dispositivo y confiar en ella (perfil de configuración proporcionado por tu departamento de informática y, después, Ajustes › General › Información › Ajustes de confianza de certificados). Bouteiller funciona entonces como con cualquier certificado público.
- Aprobar el certificado en Bouteiller: cuando el certificado no es de confianza, la app muestra los certificados enviados por el servidor (sujeto y huella SHA-256) y te permite aprobar uno, solo para ese servidor. Se propone por defecto aprobar la autoridad de certificación raíz, porque sigue siendo válida cuando se renueva el certificado del servidor. El nombre de host y las fechas de validez se siguen comprobando.
Aprueba solo un certificado cuya huella hayas comprobado con tu departamento de informática. De lo contrario, cualquiera que pudiera interceptar la conexión podría leer tu token de API.
HTTP sin cifrar
Se espera HTTPS. HTTP sin cifrar solo se acepta para un servidor de la red local, después de permitirlo explícitamente en el formulario del servidor: en ese caso, el token de API se envía sin cifrar.
Notificaciones
En esta versión, las notificaciones funcionan en modo local: la app comprueba tus jobs favoritos en segundo plano y muestra una notificación en el dispositivo cuando ocurre algo. No interviene ningún servidor del desarrollador.
Configuración
- Añade el job a tus favoritos.
- Toca la campana del job favorito y elige los eventos: build iniciado, éxito, fallo, inestable, vuelta a verde, abortado, input pendiente. La opción por defecto («Avisarme de problemas») cubre fallo, inestable, vuelta a verde e input pendiente.
- Permite las notificaciones cuando iOS te lo pida. El estado del job en ese momento sirve de referencia: solo se notifican los eventos posteriores.
Límites del modo local
- iOS decide cuándo. Las comprobaciones en segundo plano se hacen cuando iOS lo permite, a menudo cada varias decenas de minutos y a veces con menos frecuencia (batería, uso de la app). Por eso, una notificación puede llegar bastante después del evento.
- Solo favoritos. Solo se comprueban los jobs favoritos a los que te has suscrito.
- Solo el último build de cada favorito: si se han ejecutado varios builds entre dos comprobaciones, solo se notifica el resultado del último.
- Accesibilidad del servidor. No se puede comprobar nada mientras el servidor no esté accesible (por ejemplo, sin la VPN).
- La actualización en segundo plano debe estar activada para Bouteiller (Ajustes › General › Actualización en segundo plano). El modo de bajo consumo la suspende, y por lo general iOS no actualiza una app que hayas forzado a cerrar desde el selector de apps hasta que la vuelvas a abrir.
- Las acciones de las notificaciones (relanzar, aprobar, rechazar) requieren que el dispositivo esté desbloqueado y que el servidor esté accesible; el resultado de la acción se notifica. Un input con parámetros abre la app para responderlo.
La sección Notificaciones de los ajustes de la app indica si las notificaciones y la actualización en segundo plano están permitidas, y te permite hacer una comprobación inmediata.
En una versión futura se prevén notificaciones push que funcionen también fuera de la VPN, mediante un plugin de Jenkins opcional.
Preguntas frecuentes
- ¿Es Bouteiller una app oficial de Jenkins?
- No. Bouteiller es una app independiente, desarrollada por un particular. No está afiliada al proyecto Jenkins ni cuenta con su respaldo.
- ¿Tengo que instalar un plugin en mi servidor?
- No. La app funciona con un servidor Jenkins sin ningún plugin. Los jobs freestyle se pueden consultar, lanzar, detener y relanzar; los stages de los pipelines, los inputs y los resultados de tests se muestran cuando están instalados los plugins correspondientes.
- La app dice que mi versión de Jenkins no es compatible.
- Bouteiller necesita Jenkins 2.580.1 LTS o una versión weekly 2.580 o posterior. Consulta a tu administrador para actualizarlo.
- La app dice que se han rechazado las credenciales.
- Comprueba el nombre de usuario (tu ID de usuario de Jenkins, que no tiene por qué ser tu nombre visible) y el token de API. Si el servidor está detrás de un proxy inverso o de un portal de inicio de sesión único, asegúrate de que la cabecera
Authorizationllegue a Jenkins. - No se puede acceder al servidor, aunque funciona en Safari.
- Comprueba que has introducido la misma dirección que en Safari, incluida la ruta (por ejemplo,
https://ci.ejemplo.es/jenkins). Si Safari solo funciona con la VPN, activa la opción VPN del servidor. Si el certificado no es de confianza, consulta autoridades de certificación internas. - ¿Puedo proteger las acciones delicadas?
- Sí. En los ajustes, puedes requerir Face ID, Touch ID o el código del dispositivo antes de detener un build y antes de aprobar o rechazar un input. La autenticación la gestiona iOS; la app nunca ve los datos biométricos.
- ¿Puedo usar varios servidores?
- Sí, todos los que quieras. La pestaña Favoritos reúne los jobs favoritos de todos los servidores.
- ¿Qué widgets y atajos hay disponibles?
- Widgets: estado de un job (pantalla de inicio y pantalla bloqueada), favoritos, builds fallidos de un servidor, con un botón para lanzar los jobs sin parámetros. Atajos y Siri: lanzar un job, estado de un job, builds fallidos, abrir un job. Un control del centro de control lanza un job favorito. Los widgets muestran la hora de su última actualización e indican cuándo no se puede acceder al servidor.
- ¿Por qué los widgets muestran datos antiguos?
- Los widgets se actualizan cuando iOS lo permite y solo mientras el servidor esté accesible. Si no, conservan el último estado conocido, con la hora de la última actualización y un indicador de «inaccesible».
- ¿Cómo elimino mis datos?
- Elimina el servidor en la app: su token de API se borra del llavero, junto con sus favoritos, sus suscripciones a notificaciones y sus datos en caché. La caché por sí sola se puede vaciar en los ajustes. Al eliminar la app se borran sus datos; como iOS puede conservar los elementos del llavero tras eliminar una app, elimina primero tus servidores si quieres asegurarte de que los tokens se borran, y revoca los tokens en Jenkins.
- ¿La app recopila datos?
- No. Consulta la política de privacidad.
Contacto
Si tienes una pregunta, un problema o una sugerencia, escribe a: nicolas.mannocci@gmail.com.
Para ayudar a resolver un problema, indica la versión de la app (aparece en sus ajustes), tu dispositivo y su versión de iOS, tu versión de Jenkins y, si procede, si hay una VPN o una autoridad de certificación interna de por medio. No envíes nunca tu token de API.