Blog

Erstellen Sie eine GitHub App aus einem Manifest

Rob Bos

Aktualisiert Oktober 15, 2025
4 Minuten

Bei meinem Kunden müssen wir eine Vielzahl von GitHub Apps erstellen. In diesem speziellen Fall verwenden wir GitHub Apps als Integrationspunkt zwischen GitHub und Jenkins: Der Code wird zu GitHub verlagert, und wir möchten weiterhin unsere bestehenden Jenkins-Jobs bei Codeänderungen auslösen. Wir haben über 100 Teams in Jenkins, alle mit ihren eigenen Pipelines. Wir haben die Sicherheitsanforderung, dass Teams, die eine Verbindung zu ihrem Code in einer Jenkins-Pipeline herstellen, nur ihren eigenen Code sehen können, nicht aber die Repos anderer Teams. Das bedeutet, dass jedes Team seine eigenen GitHub-Zugangsdaten einrichten muss.

Bild einer LEGO Figur in einem Raumanzug mit fröhlichem Gesichtsausdruck
Foto von Hallo ich bin Nik auf Unsplash

Ich halte es für eine schlechte Praxis Personal Access Tokens zu verwenden (sie haben viel zu viel Spielraum, was die in der Zukunft). Stattdessen verwenden wir eine GitHub App: Wir können die GitHub App auf Organisationsebene erstellen und installieren und ihr Zugriff auf bestimmte Repositories geben. Auf diese Weise können wir die GitHub App verwenden, um unsere Jenkins-Jobs auszulösen und ihr nur Zugriff auf die Repositories zu geben, auf die sie Zugriff benötigt.

Im Moment gibt es in GitHub keine APIs, die diese Situation für Sie regeln: Sie müssen die App manuell erstellen, die Anmeldeinformationen abrufen und sie in der Organisation für die Repositories installieren, auf die die App Zugriff haben soll. Das Erstellen der App umfasst einige Schritte, wie das Einrichten eines Namens und einer Beschreibung, das Hinzufügen eines Webhooks zum Auslösen, das Konfigurieren aller benötigten Berechtigungen und der Ereignisse, die zu diesen Berechtigungen gehören.

Da wir viele Teams haben, ist dies eine sich wiederholende Aufgabe und anfällig für Fehler, wenn Sie der internen Dokumentation für die Einrichtung folgen. Um dies zu verbessern, haben wir ein Manifest die wir zum Erstellen der App verwenden können.

Hinweis: Sie können das Gleiche auch mit einer Anfrage mit Anfrageparametern tun.

Fluss

Mit einem Manifest können wir einen Ablauf in einer internen Webanwendung verwenden, der die App mit allen Standardeinstellungen erstellt, die Anmeldedaten abruft und die Daten an einem sicheren Ort speichert. Da für diesen Ablauf ein Benutzer angemeldet sein muss, müssen wir ihm eine Webseite zur Verfügung stellen, die alles einrichtet (das Manifest) und dann auf die Seite in unserer GitHub-Umgebung (kann Enterprise Cloud oder Enterprise Server sein) weiterleiten, die die Authentifizierung und Autorisierung vornimmt, um zu prüfen, ob der Benutzer die Rechte zur Einrichtung der App hat. Leider ist das auch alles, was wir tun können, da es keine APIs gibt, um die App in Repositories zu installieren.

Überblick über die Schritte im Erstellungsablauf

In der Übersicht oben sehen wir, dass es sechs Schritte gibt, um die App mit einem Manifest zu erstellen:

  1. Schicken Sie den Benutzer zu unserer Indexseite, auf der wir das Manifest einrichten (wir lassen ihn die Umgebung auswählen, in der diese App erstellt werden soll) und leiten Sie ihn mit dem Manifest auf die GitHub-Seite zur App-Erstellung weiter.
  2. GitHub kümmert sich um die Authentifizierung und Autorisierung.
  3. Leitet den Benutzer zurück zu unserer Umleitungsseite (Sie übergeben dies mit dem Manifest).
  4. Unsere Weiterleitungsseite lädt einen bestimmten Code aus der Weiterleitung (dieser Code ist nur 1 Stunde lang gültig).
  5. Und postet diesen Code zurück an GitHub, um die soeben erstellten App-Informationen zu erhalten.
  6. Wir speichern die AppId und den privaten Schlüssel (PEM) für die App an einem sicheren Ort, damit wir mit den nächsten Schritten fortfahren können.

Beispieldateien für diesen Ablauf finden Sie unter hier. Sie müssen sie auf Ihrem eigenen Server hosten, aber die Umleitung auf localhost funktioniert problemlos. (Der nächste Schritt für uns wird das Hosten in einer NodeJS-App sein, die entweder lokal oder in einem Docker-Container gehostet werden kann). Es enthält auch eine 5 Minuten Video das erklärt den ganzen Ablauf.

Die nächsten Schritte:

Das Einrichten des Manifests ist einfach, aber nur ein Teil der Einrichtung, die wir benötigen. Um dies auf der Client-Seite (in diesem Fall Jenkins) konfigurieren zu können, müssen wir die folgenden Schritte durchführen:

  • Installieren Sie die neue App in den Repositories, auf die sie Zugriff haben muss (Sie geben ihr von der Org-Ebene aus Zugriff auf diese Repositories).
  • Fügen Sie dann einen neuen Satz von Anmeldeinformationen (AppId + privater Schlüssel) in Jenkins auf der richtigen Ordner-/Teamebene hinzu.

Zukünftige Arbeit:

Gemäß den bewährten DevOps-Verfahren möchten wir auch für die Anwendungen eine Schlüsselrotation einrichten. Dafür gibt es derzeit auch keine APIs, und wenn Sie einen neuen privaten Schlüssel generieren, wird der alte Schlüssel sofort widerrufen.

Verfasst von

Rob Bos

Rob has a strong focus on ALM and DevOps, automating manual tasks and helping teams deliver value to the end-user faster, using DevOps techniques. This is applied on anything Rob comes across, whether it’s an application, infrastructure, serverless or training environments. Additionally, Rob focuses on the management of production environments, including dashboarding, usage statistics for product owners and stakeholders, but also as part of the feedback loop to the developers. A lot of focus goes to GitHub and GitHub Actions, improving the security of applications and DevOps pipelines. Rob is a Trainer (Azure + GitHub), a Microsoft MVP and a LinkedIn Learning Instructor.

Contact

Let’s discuss how we can support your journey.