GitHub Apps est une nouvelle forme d'application qui fonctionne avec GitHub. Ce format a été annoncé avec la sortie de GitHub Marketplace, la place de marché des applications [https://github.com/blog/2359-introducing-github-marketplace-and-more-tools-to-customize- votre flux de travail). En d'autres termes, l'écosystème consistant à créer des applications GitHub, à les publier sur le marché et à en tirer de l'argent a été fermement établi.
Dans cet article, je vais vous présenter comment créer des applications GitHub qui propagent de tels rêves.
Commencez par organiser les formats des applications qui fonctionnent avec GitHub, y compris les applications GitHub.
Webhooks
Webhooks est un format qui déclenche un événement spécifique (tel que l'envoi) dans le référentiel et notifie les informations de mise à jour au serveur, etc., de la destination du paramètre. .. Effectuez les réglages aux emplacements suivants. Ici, vous pouvez également définir l'événement à notifier.
De plus, les Webhooks peuvent également être définis en unités d'organisation, dans ce cas, il est possible de recevoir les événements de tous les référentiels sous Organisation Devenir.
Cependant, étant donné que les Webhooks ne sont "que recevoir", vous ne pouvez rien faire du côté du référentiel GitHub (comme commenter le problème). Si vous devez effectuer une action du côté du référentiel GitHub, vous devez utiliser les applications OAuth suivantes ensemble ou utiliser les applications GitHub.
OAuth Apps
Comme son nom (OAuth) l'indique, OAuth Apps est un format qui utilise les informations d'identification d'un compte utilisateur GitHub pour fonctionner sur le référentiel GitHub. Par conséquent, lors de la création d'applications OAuth, vous devez vous inscrire à partir de Paramètres> Paramètres de développeur du compte d'utilisateur.
Ceci est utilisé non seulement pour les applications qui fonctionnent avec GitHub, mais également pour le développement de sites qui utilisent simplement des comptes d'utilisateurs GitHub comme informations d'authentification (informations de connexion). Pour l'authentification OAuth, Authentifiez-vous avec des transitions de page entre les deux -options-for-oauth-apps / # web-application-flow) est un service qui fonctionne avec le back-end. Comme il n'y a pas d'écran en premier lieu, [Le flux d'authentification hors ligne est également pris en charge](https: // developer. github.com/v3/oauth_authorizations/#get-or-create-an-authorization-for-a-specific-app).
En raison des caractéristiques des applications OAuth qui utilisent des "informations d'identification de compte utilisateur GitHub", si l'utilisateur perd l'accès ou ferme le compte, la coopération prendra naturellement fin. C'est plutôt naturel pour un usage personnel, mais ce n'est pas préférable lors du développement d'une équipe (comme une personne qui s'est retirée d'un membre du projet a mis en place une coopération!). De plus, il est possible que vous ne sachiez pas qui travaille avec OAuth.
En d'autres termes, les applications OAuth conviennent aux applications / sites que les "utilisateurs GitHub" utilisent personnellement, mais elles sont un peu problématiques en tant qu'applications pour les "référentiels GitHub" gérés par des équipes.
GitHub Apps
GitHub Apps est un format adapté au développement d'applications pour le "référentiel GitHub" par opposition aux applications OAuth mentionnées ci-dessus. En effet, l'unité d'installation est l'unité de référentiel détenue par l'utilisateur / l'organisation.
Puisqu'il peut recevoir non seulement l'accès au référentiel mais aussi l'occurrence d'événements dans le référentiel (avec des webhooks), il est utile pour développer des applications qui "réagissent à des événements spécifiques dans le référentiel et font quelque chose avec le référentiel". C'est la méthode optimale. Étant donné que l'authentification OAuth peut également être effectuée, en plus de l'utiliser pour l'authentification de connexion, au nom de l'utilisateur (avec le jeton d'accès de l'utilisateur) au lieu de comme applications GitHub -integrations / configuration-et-enregistrement-d'applications-github / identification-utilisateurs-pour-applications-github /) Il est également possible de traiter le dépôt. Cela peut être utilisé lors de la création d'un site par référentiel comme Gitter (je pense qu'il y aura beaucoup d'idées pour le chat, la gestion des tâches, etc.).
Les différences détaillées dans les méthodes d'authentification sont décrites ci-dessous.
About choosing an integration type
Cette fois, nous examinerons le développement de ces applications GitHub.
À partir de là, nous examinerons la procédure de développement des applications GitHub.
Tout d'abord, enregistrez les applications GitHub à développer. Cette inscription est possible pour chaque utilisateur ou organisation. Suivez les étapes ci-dessous pour vous inscrire.
Les applications GitHub enregistrées ici seront installées et utilisées par vos utilisateurs dans le référentiel. Les autorisations enregistrées ici sont nécessaires pour que les applications GitHub soient développées et sont les autorisations accordées par l'utilisateur qui les installe.
Si vous utilisez l'authentification OAuth avec les applications GitHub, ce sera la même chose que OAuth. Dans ce cas, l'API est utilisée à l'aide du jeton d'accès de l'utilisateur, il n'est donc pas possible d'effectuer des opérations que l'utilisateur authentifié ne peut pas effectuer.
Lors de l'authentification en tant qu'applications GitHub, vous pouvez utiliser le jeton d'accès obtenu pour exploiter les autorisations accordées par les autorisations. Cette fois, nous examinerons le processus d'authentification.
About authentication options for GitHub Apps
Pour vous authentifier en tant qu'applications GitHub, vous aurez besoin de la clé privée (fichier pem) obtenue lors de votre inscription aux applications GitHub. Grâce à cela, l'authentification est effectuée à l'aide de la méthode JSON Web Tokens (JWT). Le flux est le suivant.
Le package qui crée JWT est développé dans chaque langage, et vous pouvez utiliser celui qui correspond au langage d'implémentation (notez que vous devez crypter avec RS256 pour l'authentification côté GitHub. S'il vous plaît).
Libraries for Token Signing/Verification
De plus, cette certification a été assez réussie. Je dois spécifier la période de validité du jeton d'accès (jusqu'à 10 minutes), mais parfois cette vérification de la date et de l'heure a fonctionné ou a échoué. Ce point [même si tout le monde était accro](https://platform.github.community/t/issued-at-claim-iat-must-be-an-integer-representing-the-time-that-the- assertion-was-published / 1549), j'ai défini la date et l'heure d'émission un peu plus tôt afin que l'authentification puisse être transmise de manière stable.
Le code qui s'authentifie avec les applications GitHub récemment créées est la partie suivante, veuillez donc vous y référer lors de sa mise en œuvre.
Après l'authentification, vous pouvez utiliser l 'API GitHub pour effectuer diverses opérations sur le référentiel GitHub.
De plus, GitHub prévoit de créer l'API basée sur GraphQL, j'ai donc utilisé ceci lors de sa création à l'avenir Je pense que c'est mieux.
En raison du format des applications GitHub, un référentiel de test est indispensable pour les tests. Installez les applications GitHub créées dans ce référentiel de test et vérifiez si le processus est déclenché pour un événement donné et si le processus du référentiel fonctionne correctement. Un accès global est requis pour tester les webhooks et l'authentification, mais il est pratique d'utiliser ngrok car il s'agit d'un os à déployer sur un serveur un par un.
Cependant, vous devez toujours enregistrer un problème pour déclencher réellement l'événement. Heureusement, à partir de l'onglet "Avancé" de la page d'inscription des applications GitHub, "Redeliver" qui renvoie les événements publiés dans le passé est possible, il est donc recommandé de l'utiliser.
Après cela, j'ai personnellement enregistré le JSON réellement émis pour les tests locaux dans un fichier de test et je l'ai utilisé.
Comme vous pouvez le voir, le test est assez pénible, mais quand ce sera terminé, il sera enfin publié!
L'application développée est mise sur le marché immédiatement! Vous pensez peut-être, mais je dois vous dire un fait triste.
Requirements for listing an app on GitHub Marketplace
Il y a d'autres exigences en termes de sécurité, mais je pense que les deux points ci-dessus sont les plus difficiles à respecter. Cela signifie que l'application nouveau-né ne l'est pas.
Le nombre de référentiels installés ne peut pas être confirmé à l'écran pour le moment, et il est nécessaire de confirmer en appuyant sur l'API suivante.
GitHub Apps/Find installations
Veuillez vous référer aux applications GitHub créées l'autre jour pour un script de comptage.
chakki-works/typot/get_installations.py
Alors, n'y a-t-il pas un endroit pour l'ouvrir? Il existe une version allégée du site appelée Works with GitHub.
Vous pouvez en faire la demande s'il est conforme aux conditions d'utilisation de GitHub (Cliquez ici pour plus de détails) (https://developer.github.com/apps/adding-integrations/adding-integrations-to-works-with- Voir github / requirements-for-added-an-integration-to-works-with-github /)). Veuillez noter qu'une fois que vous avez postulé, vous ne pouvez pas modifier la description, etc., et une fois que vous avez passé l'approbation, vous devez contacter le comptoir pour la modifier. [Il semble qu'ils examinent tous les vendredis](https://developer.github.com/apps/adding-integrations/adding-integrations-to-works-with-github/adding-an-integration-to-works -with-github /), c'est une bonne idée de postuler avant vendredi.
Cependant, bien que j'utilise GitHub depuis longtemps, c'est la première fois que j'apprends l'existence de ce site, et la googleabilité de "Works with GitHub" est anormalement faible, donc je ne peux pas être pris dans la recherche (plus Il n'y a pas de lien depuis le portail GitHub). Par conséquent, les avantages énumérés ici peuvent être minimes.
Enfin, je voudrais vous présenter le référentiel GitHub Apps que j'ai créé. J'espère que cela vous sera utile pour votre mise en œuvre.
chakki-works/typot (Si vous le trouvez utile, je serais encouragé si vous pouviez me donner une étoile m (_ _) m)
Veuillez vous référer à l'article suivant pour la fonction.
Bot qui détecte automatiquement le type masqué dans la pull request et le corrige en votre nom
Faisons de notre mieux pour conquérir le monde sur le marché GitHub!
Recommended Posts