Support für Bouteiller
Bouteiller ist eine kostenlose App für iPhone und iPad, mit der du deine Jenkins-Server im Blick behältst und steuerst: Job-Status, Konsolenausgabe, Starten und Stoppen von Builds, Freigabe von Pipeline-Inputs, Widgets und Kurzbefehle.
Voraussetzungen
- iPhone oder iPad mit iOS 26 bzw. iPadOS 26 oder neuer.
- Ein Jenkins-Server mit 2.580.1 LTS oder einem Weekly-Release 2.580 oder neuer. Ältere Versionen werden beim Hinzufügen des Servers mit einer eindeutigen Meldung abgelehnt.
- Kein Plugin erforderlich auf dem Server. Bouteiller nutzt ausschließlich die Standard-REST-API von Jenkins. Sind einige verbreitete Plugins vorhanden (Pipeline, Pipeline Stage View oder Pipeline Graph View, JUnit), zeigt die App mehr an: Pipeline-Stages, ausstehende Inputs, Testergebnisse.
- Ein Jenkins-Benutzerkonto und ein API-Token (siehe unten). Du musst kein Administrator sein: In der App siehst und tust du, was dein Account auch in Jenkins sehen und tun darf.
- Netzwerkzugriff vom Gerät auf den Server (direkt oder über das VPN deiner Organisation).
API-Token erstellen
Bouteiller meldet sich mit deinem Jenkins-Benutzernamen und einem API-Token an, niemals mit deinem Passwort.
- Melde dich in der Weboberfläche von Jenkins an.
- Öffne die Seite Security deiner Benutzereinstellungen: Rufe
https://dein-jenkins/me/securityauf (im Serverformular der App erledigt das die Taste Token-Seite öffnen für dich) oder klicke oben rechts auf deinen Namen und dann auf Security. Dort findest du den Abschnitt API Token. - Wähle im Abschnitt API Token die Option Add new Token, gib ihm einen Namen (zum Beispiel „Bouteiller iPhone“) und erzeuge es.
- Kopiere das Token sofort: Jenkins zeigt es nur ein einziges Mal an.
- Füge in Bouteiller einen Server hinzu und gib die Serveradresse, deinen Benutzernamen und das Token ein. Die App prüft die Verbindung und die Jenkins-Version, bevor sie den Server sichert.
Du kannst das Token jederzeit auf derselben Jenkins-Seite widerrufen; die App meldet dann, dass die Anmeldedaten abgelehnt werden.
VPN und interne Zertifizierungsstellen
Nur über VPN erreichbare Server
Bouteiller steuert dein VPN nicht. Aktiviere beim Hinzufügen oder Bearbeiten eines Servers Nur über VPN erreichbar: Antwortet der Server nicht, schlägt die App dann vor, dich mit dem VPN zu verbinden, statt einen allgemeinen Fehler anzuzeigen.
- Ohne VPN zeigt die App die zuletzt bekannten Daten mit einem „Offline“-Banner und dem Datum dieser Daten an. Aktionen (Starten, Stoppen, Freigeben …) sind deaktiviert.
- Sobald der Server wieder antwortet (VPN verbunden, App wieder im Vordergrund), verschwindet das Banner und die Ansichten werden aktualisiert.
- Eine Aktion wird nie für später vorgemerkt: Ist der Server nicht erreichbar, wirst du darauf hingewiesen und kannst es nach dem Verbinden erneut versuchen.
Zertifikate einer internen Zertifizierungsstelle
Verwendet dein Jenkins-Server ein Zertifikat, das von der eigenen Zertifizierungsstelle deiner Organisation ausgestellt wurde, vertraut iOS ihm standardmäßig nicht. Zwei Möglichkeiten:
- Die Zertifizierungsstelle auf dem Gerät installieren und ihr vertrauen (Konfigurationsprofil von deiner IT-Abteilung, dann Einstellungen › Allgemein › Info › Zertifikatsvertrauenseinstellungen). Bouteiller funktioniert dann wie mit jedem öffentlichen Zertifikat.
- Das Zertifikat in Bouteiller bestätigen: Wird dem Zertifikat nicht vertraut, zeigt die App die vom Server gesendeten Zertifikate (Antragsteller und SHA-256-Fingerabdruck) und lässt dich eines davon bestätigen, nur für diesen Server. Standardmäßig wird die Stammzertifizierungsstelle vorgeschlagen, da sie die Erneuerung des Serverzertifikats überdauert. Hostname und Gültigkeitsdaten werden weiterhin geprüft.
Bestätige nur ein Zertifikat, dessen Fingerabdruck du mit deiner IT-Abteilung abgeglichen hast. Sonst könnte jeder, der die Verbindung abfangen kann, dein API-Token mitlesen.
Unverschlüsseltes HTTP
HTTPS wird vorausgesetzt. Unverschlüsseltes HTTP ist nur für einen Server im lokalen Netzwerk zulässig, nachdem du es im Serverformular ausdrücklich erlaubt hast: Das API-Token wird dann unverschlüsselt gesendet.
Mitteilungen
In dieser Version funktionieren Mitteilungen im lokalen Modus: Die App prüft deine Favoriten-Jobs im Hintergrund und zeigt auf dem Gerät eine Mitteilung an, wenn etwas passiert. Kein Server des Entwicklers ist daran beteiligt.
Einrichtung
- Füge den Job zu deinen Favoriten hinzu.
- Tippe auf die Glocke des Favoriten-Jobs und wähle die Ereignisse: Build gestartet, Erfolg, Fehlschlag, instabil, wieder erfolgreich, abgebrochen, Input ausstehend. Die Standardauswahl („Bei Problemen benachrichtigen“) umfasst Fehlschlag, instabil, wieder erfolgreich und Input ausstehend.
- Erlaube Mitteilungen, wenn iOS danach fragt. Der Zustand des Jobs zu diesem Zeitpunkt dient als Referenz: Nur spätere Ereignisse werden gemeldet.
Grenzen des lokalen Modus
- Den Zeitpunkt bestimmt iOS. Hintergrundprüfungen laufen, wenn iOS es zulässt, oft alle paar Dutzend Minuten, manchmal seltener (Batterie, Nutzung der App). Eine Mitteilung kann daher deutlich nach dem Ereignis eintreffen.
- Nur Favoriten. Geprüft werden nur abonnierte Favoriten-Jobs.
- Nur der letzte Build jedes Favoriten wird berücksichtigt: Liefen zwischen zwei Prüfungen mehrere Builds, wird nur das Ergebnis des letzten gemeldet.
- Erreichbarkeit des Servers. Solange der Server nicht erreichbar ist (zum Beispiel ohne VPN), kann nichts geprüft werden.
- Die Hintergrundaktualisierung muss für Bouteiller aktiviert sein (Einstellungen › Allgemein › Hintergrundaktualisierung). Der Stromsparmodus setzt sie aus, und iOS aktualisiert eine App, die du im App-Umschalter beendet hast, in der Regel erst wieder, wenn du sie öffnest.
- Aktionen in Mitteilungen (Neu bauen, Freigeben, Ablehnen) setzen voraus, dass das Gerät entsperrt und der Server erreichbar ist; das Ergebnis der Aktion wird gemeldet. Ein Input mit Parametern öffnet die App, um ihn zu beantworten.
Der Abschnitt Mitteilungen in den Einstellungen der App zeigt, ob Mitteilungen und Hintergrundaktualisierung erlaubt sind, und lässt dich sofort eine Prüfung starten.
Push-Mitteilungen, die auch außerhalb des VPN funktionieren, sind für eine künftige Version geplant, über ein optionales Jenkins-Plugin.
Häufige Fragen
- Ist Bouteiller eine offizielle Jenkins-App?
- Nein. Bouteiller ist eine unabhängige App, entwickelt von einer Privatperson. Sie steht in keiner Verbindung zum Jenkins-Projekt und wird von ihm nicht unterstützt.
- Muss ich ein Plugin auf meinem Server installieren?
- Nein. Die App funktioniert mit einem Jenkins-Server ganz ohne Plugin. Freestyle-Jobs lassen sich durchsuchen, starten, stoppen und neu bauen; Pipeline-Stages, Inputs und Testergebnisse werden angezeigt, wenn die entsprechenden Plugins installiert sind.
- Die App meldet, dass meine Jenkins-Version nicht unterstützt wird.
- Bouteiller benötigt Jenkins 2.580.1 LTS oder ein Weekly-Release 2.580 oder neuer. Frag deinen Administrator nach einem Update.
- Die App meldet, dass die Anmeldedaten abgelehnt werden.
- Prüfe den Benutzernamen (deine Jenkins-Benutzer-ID, nicht unbedingt dein Anzeigename) und das API-Token. Steht der Server hinter einem Reverse Proxy oder einem Single-Sign-on-Portal, stelle sicher, dass der Header
Authorizationbei Jenkins ankommt. - Der Server ist nicht erreichbar, obwohl er in Safari funktioniert.
- Prüfe, ob du dieselbe Adresse wie in Safari eingegeben hast, einschließlich des Kontextpfads (zum Beispiel
https://ci.example.com/jenkins). Funktioniert Safari nur über das VPN, aktiviere die VPN-Option des Servers. Wird dem Zertifikat nicht vertraut, siehe interne Zertifizierungsstellen. - Kann ich sensible Aktionen schützen?
- Ja. In den Einstellungen kannst du Face ID, Touch ID oder den Gerätecode verlangen, bevor ein Build gestoppt oder ein Input freigegeben bzw. abgelehnt wird. Die Authentifizierung übernimmt iOS; die App sieht niemals biometrische Daten.
- Kann ich mehrere Server verwenden?
- Ja, so viele du willst. Der Tab „Favoriten“ zeigt die Favoriten-Jobs aller Server.
- Welche Widgets und Kurzbefehle gibt es?
- Widgets: Status eines Jobs (Home-Bildschirm und Sperrbildschirm), Favoriten, fehlgeschlagene Builds eines Servers, mit einer Starttaste für Jobs ohne Parameter. Kurzbefehle und Siri: Job starten, Status eines Jobs, fehlgeschlagene Builds, Job öffnen. Ein Steuerelement im Kontrollzentrum startet einen Favoriten-Job. Widgets zeigen die Uhrzeit ihrer letzten Aktualisierung an und weisen darauf hin, wenn der Server nicht erreichbar ist.
- Warum zeigen die Widgets alte Daten?
- Widgets werden aktualisiert, wenn iOS es zulässt, und nur, solange der Server erreichbar ist. Andernfalls behalten sie den letzten bekannten Zustand, mit der Uhrzeit der letzten Aktualisierung und einem Hinweis „nicht erreichbar“.
- Wie lösche ich meine Daten?
- Lösche den Server in der App: Sein API-Token wird aus dem Schlüsselbund entfernt, zusammen mit seinen Favoriten, Mitteilungsabos und Daten im Cache. Den Cache allein kannst du in den Einstellungen leeren. Beim Löschen der App werden ihre Daten entfernt; da iOS Schlüsselbundeinträge nach dem Löschen einer App behalten kann, lösche zuerst deine Server, wenn du sicher sein willst, dass die Tokens gelöscht sind, und widerrufe die Tokens in Jenkins.
- Sammelt die App Daten?
- Nein. Siehe die Datenschutzerklärung.
Kontakt
Bei Fragen, Problemen oder Vorschlägen schreib an: nicolas.mannocci@gmail.com.
Um bei einem Problem zu helfen, gib bitte die App-Version (in den Einstellungen der App angezeigt), dein Gerät und deine iOS-Version, deine Jenkins-Version und gegebenenfalls an, ob ein VPN oder eine interne Zertifizierungsstelle im Spiel ist. Sende niemals dein API-Token.