Assistance Bouteiller
Bouteiller est une app gratuite pour iPhone et iPad qui permet de suivre et de piloter vos serveurs Jenkins : état des jobs, console log, lancement et arrêt des builds, approbation des étapes input des pipelines, widgets et Raccourcis.
Prérequis
- iPhone ou iPad sous iOS 26 ou iPadOS 26 ou version ultérieure.
- Un serveur Jenkins en version 2.580.1 LTS ou en version weekly 2.580 ou ultérieure. Une version plus ancienne est refusée à l’ajout du serveur, avec un message explicite.
- Aucun plugin n’est nécessaire sur le serveur : Bouteiller n’utilise que l’API REST standard de Jenkins. Si certains plugins courants sont installés (Pipeline, Pipeline Stage View ou Pipeline Graph View, JUnit), l’app en affiche davantage : étapes des pipelines, inputs en attente, résultats de tests.
- Un compte utilisateur Jenkins et un API token (voir ci-dessous). Inutile d’être administrateur : vous voyez et faites dans l’app ce que votre compte peut voir et faire dans Jenkins.
- Un accès réseau de l’appareil au serveur (direct, ou par le VPN de votre organisation).
Créer un API token
Bouteiller se connecte avec votre nom d’utilisateur Jenkins et un API token, jamais avec votre mot de passe.
- Connectez-vous à l’interface web de Jenkins.
- Ouvrez la page Security (Sécurité) de vos réglages d’utilisateur : rendez-vous à l’adresse
https://votre-jenkins/me/security(le formulaire de serveur de l’app propose un bouton qui l’ouvre pour vous), ou cliquez sur votre nom en haut à droite puis sur Security. La section API Token s’y trouve. - Dans la section API Token, choisissez Add new Token (Ajouter un jeton), donnez-lui un nom (par exemple « Bouteiller iPhone ») et générez-le.
- Copiez le token aussitôt : Jenkins ne l’affiche qu’une seule fois.
- Dans Bouteiller, ajoutez un serveur et saisissez son adresse, votre nom d’utilisateur et le token. L’app vérifie la connexion et la version de Jenkins avant d’enregistrer.
Vous pouvez révoquer le token à tout moment depuis la même page de Jenkins ; l’app indiquera alors que les identifiants sont refusés.
VPN et autorités de certification internes
Serveurs accessibles uniquement par VPN
Bouteiller ne pilote pas votre VPN. À l’ajout ou à la modification d’un serveur, activez l’option indiquant qu’il n’est accessible que par VPN : quand le serveur ne répond pas, l’app vous propose alors de vous connecter au VPN plutôt que d’afficher une erreur générique.
- Sans VPN, l’app affiche les dernières données connues, avec un bandeau « Hors ligne » et la date de ces données. Les actions (lancer, arrêter, approuver…) sont désactivées.
- Dès que le serveur répond à nouveau (VPN connecté, retour de l’app au premier plan), le bandeau disparaît et les écrans sont rafraîchis.
- Une action n’est jamais mise en attente pour être exécutée plus tard : si le serveur est injoignable, vous en êtes informé et pouvez réessayer une fois connecté.
Certificats d’une autorité interne
Si votre serveur Jenkins utilise un certificat émis par l’autorité de certification de votre organisation, iOS ne lui fait pas confiance par défaut. Deux possibilités :
- Installer l’autorité sur l’appareil et lui faire confiance (profil de configuration fourni par votre service informatique, puis Réglages › Général › Informations › Réglages des certificats). Bouteiller fonctionne alors comme avec un certificat public.
- Approuver le certificat dans Bouteiller : quand le certificat n’est pas reconnu, l’app présente les certificats envoyés par le serveur (sujet et empreinte SHA-256) et vous permet d’en approuver un, pour ce serveur uniquement. L’approbation de l’autorité racine est proposée par défaut, car elle survit au renouvellement du certificat du serveur. Le nom d’hôte et les dates de validité restent vérifiés.
N’approuvez qu’un certificat dont vous avez vérifié l’empreinte auprès de votre service informatique. Sinon, quiconque serait en mesure d’intercepter la connexion pourrait lire votre API token.
HTTP en clair
HTTPS est attendu. Le HTTP en clair n’est accepté que pour un serveur du réseau local, après l’avoir explicitement autorisé dans le formulaire du serveur : l’API token circule alors sans chiffrement.
Notifications
Dans cette version, les notifications fonctionnent en mode local : l’app vérifie vos jobs favoris en arrière-plan et affiche une notification sur l’appareil quand un événement survient. Aucun serveur du développeur n’intervient.
Mise en place
- Ajoutez le job à vos favoris.
- Touchez la cloche du job favori et choisissez les événements : build démarré, succès, échec, instable, retour au succès, annulé, input en attente. Le choix par défaut (« problèmes ») couvre l’échec, l’instabilité, le retour au succès et l’input en attente.
- Autorisez les notifications quand iOS vous le demande. L’état du job à ce moment sert de référence : seuls les événements suivants sont notifiés.
Limites du mode local
- Le moment est décidé par iOS. Les vérifications en arrière-plan ont lieu quand iOS le permet, souvent toutes les quelques dizaines de minutes, parfois moins souvent (batterie, usage de l’app). Une notification peut donc arriver bien après l’événement.
- Favoris uniquement. Seuls les jobs favoris auxquels vous êtes abonné sont vérifiés.
- Seul le dernier build de chaque favori est vu : si plusieurs builds ont eu lieu entre deux vérifications, seule l’issue du dernier est notifiée.
- Joignabilité du serveur. Aucune vérification n’est possible tant que le serveur est injoignable (par exemple sans VPN).
- L’actualisation en arrière-plan doit être activée pour Bouteiller (Réglages › Général › Actualisation en arrière-plan). Le mode Économie d’énergie la suspend, et iOS n’actualise généralement pas une app que vous avez fermée de force depuis le sélecteur d’apps, jusqu’à ce que vous la rouvriez.
- Les actions des notifications (relancer, approuver, refuser) exigent que l’appareil soit déverrouillé et que le serveur soit joignable ; le résultat de l’action est notifié. Un input avec paramètres ouvre l’app pour y répondre.
La section Notifications des réglages de l’app indique si les notifications et l’actualisation en arrière-plan sont autorisées, et permet de lancer une vérification immédiate.
Des notifications push, fonctionnant aussi hors VPN, sont prévues dans une version ultérieure, grâce à un plugin Jenkins facultatif.
Questions fréquentes
- Bouteiller est-elle une app officielle de Jenkins ?
- Non. Bouteiller est une app indépendante, développée par un particulier. Elle n’est ni affiliée au projet Jenkins, ni approuvée par lui.
- Dois-je installer un plugin sur mon serveur ?
- Non. L’app fonctionne avec un serveur Jenkins sans aucun plugin. Les jobs freestyle peuvent être consultés, lancés, arrêtés et relancés ; les étapes des pipelines, les inputs et les résultats de tests s’affichent quand les plugins correspondants sont installés.
- L’app indique que ma version de Jenkins n’est pas prise en charge.
- Bouteiller nécessite Jenkins 2.580.1 LTS ou une version weekly 2.580 ou ultérieure. Voyez avec votre administrateur pour une mise à jour.
- L’app indique que les identifiants sont refusés.
- Vérifiez le nom d’utilisateur (votre identifiant Jenkins, pas forcément votre nom affiché) et l’API token. Si le serveur est derrière un reverse proxy ou un portail d’authentification unique, assurez-vous que l’en-tête
Authorizationparvient jusqu’à Jenkins. - Le serveur est injoignable alors qu’il fonctionne dans Safari.
- Vérifiez que l’adresse saisie est la même que dans Safari, chemin compris (par exemple
https://ci.exemple.fr/jenkins). Si Safari ne fonctionne qu’avec le VPN, activez l’option VPN du serveur. Si le certificat n’est pas reconnu, voyez la section autorités de certification internes. - Puis-je protéger les actions sensibles ?
- Oui. Dans les réglages, vous pouvez exiger Face ID, Touch ID ou le code de l’appareil avant d’arrêter un build et avant d’approuver ou de refuser un input. L’authentification est assurée par iOS ; l’app n’a jamais accès aux données biométriques.
- Puis-je utiliser plusieurs serveurs ?
- Oui, autant que vous le souhaitez. L’onglet Favoris regroupe les jobs favoris de tous les serveurs.
- Quels widgets et raccourcis sont disponibles ?
- Widgets : statut d’un job (écran d’accueil et écran verrouillé), favoris, builds en échec d’un serveur, avec un bouton pour lancer les jobs sans paramètres. Raccourcis et Siri : lancer un job, statut d’un job, builds en échec, ouvrir un job. Une commande du Centre de contrôle lance un job favori. Les widgets indiquent l’heure de leur dernière mise à jour et signalent un serveur injoignable.
- Pourquoi les widgets affichent-ils des données anciennes ?
- Les widgets sont actualisés quand iOS le permet, et seulement si le serveur est joignable. Sinon, ils conservent le dernier état connu, avec l’heure de la dernière mise à jour et un indicateur « injoignable ».
- Comment supprimer mes données ?
- Supprimez le serveur dans l’app : son API token est effacé du trousseau, ainsi que ses favoris, ses abonnements aux notifications et ses données en cache. Le cache seul peut être vidé depuis les réglages. Supprimer l’app efface ses données ; iOS pouvant conserver les éléments du trousseau après la suppression d’une app, supprimez d’abord vos serveurs si vous voulez être certain que les tokens sont effacés, et révoquez les tokens dans Jenkins.
- L’app collecte-t-elle des données ?
- Non. Consultez la politique de confidentialité.
Contact
Pour une question, un problème ou une suggestion, écrivez à : nicolas.mannocci@gmail.com.
Pour faciliter le diagnostic, précisez la version de l’app (affichée dans ses réglages), votre appareil et sa version d’iOS, votre version de Jenkins et, le cas échéant, la présence d’un VPN ou d’une autorité de certification interne. N’envoyez jamais votre API token.