1. Webdesign & udviklingGitHub-apps og probot

Af Sarah Guthals

Med Apps på GitHub kan du udvide GitHub på kraftfulde måder. GitHub-apps er webapplikationer, der kan svare på begivenheder på GitHub. Disse begivenhedsabonnementer kaldes webkroge. Når der sker en begivenhed på GitHub, som appen er interesseret i, fremsætter GitHub en HTTP-anmodning til appen med oplysninger om begivenheden. Appen kan derefter svare på denne begivenhed på en eller anden måde, hvilket ofte resulterer i et opkald tilbage til GitHub via GitHub API.

Her går du gennem opbygning af en simpel GitHub-app, der bringer en smule levetid til dine diskussioner om emner. Der er et gammelt meme i form af en animeret gif med en lille pige, der stiller spørgsmålet, "Hvorfor har vi ikke begge?" Den typiske anvendelse af dette meme er svar på et spørgsmål, der præsenterer en falsk dikotomi. Med andre ord, når nogen stiller et spørgsmål med to valg, kan nogen muligvis svare med dette billede.

Vi præsenterer GitHub's Probot

GitHub-apps er webapplikationer, der skal lytte til HTTP-anmodninger. Du har en masse vigtige detaljer for at blive lige nøjagtige, når du bygger en HTTP-anmodning, f.eks. Hvad er formatet på de data, der er sendt til appen? Alle disse detaljer kan være forvirrende og tidskrævende at blive korrekte, når du bygger en GitHub-app fra bunden. Det er vanskeligt at vide, hvor man skal starte.

GitHubs Probot-ramme er praktisk, når du kommer i gang med en GitHub-app. Probot håndterer meget af kedelpladen og nitpicky detaljer ved opbygning af en GitHub-app. Det er en ramme til opbygning af GitHub-apps ved hjælp af Node.js. Det giver mange bekvemmelighedsmetoder til at lytte til GitHub-begivenheder og til at ringe til GitHub API.

Probot gør det nemt at oprette en GitHub-app, men det løser ikke problemet med, hvor appen skal være vært.

Hosting af GitHub-appen

En GitHub-app kan antage mange former. Det kan være en Node.js-app, der kører i Heroku, en ASP.NET Core-app, der kører i Azure, en Django-app, der kører i Google Cloud - det betyder ikke noget. Det skal bare være vedvarende og tilgængeligt via det offentlige internet, så GitHub kan nå det med begivenhedsbelastninger.

Det kan være tidskrævende at indstille alt dette, så til vores formål bruger vi Glitch til at implementere en hurtig og beskidt GitHub-app.

Vi præsenterer Glitch

Glitch er en hostingplatform til webapplikationer, der fjerner meget af friktionen med at få en web-app i gang. Enhver app, du opretter i Glitch, er live på nettet fra begyndelsen. Du behøver ikke at tænke over, hvordan du planlægger at implementere koden, fordi enhver ændring, du foretager, gemmes automatisk og implementeres automatisk.

Glitch fokuserer på det samfundsaspekt ved bygning af apps. Hver fil kan redigeres af flere personer i realtid, på samme måde som du muligvis redigerer et dokument i Google Dokumenter. Og hvert projekt kan remixes ved at klikke på en knap. Dette tilskynder til en masse deling af kode og læring fra hinanden, hvilket kommer godt med, når vi bygger vores egen GitHub-app.

Inden du fortsætter, skal du sørge for at oprette en konto på Glitch, hvis du ikke allerede har en.

Opret en Probot Glitch-app

Når du har en grov forståelse af Probot og har oprettet en Glitch-konto, kan du oprette en Probot-app på Glitch. Med Glitch kan du remixe eksisterende apps, og den gode nyhed er, at Glitch allerede har en Probot-app, som du kan remix. Dette betyder, at du kan oprette din Probot-app med et enkelt klik og et par tilpasninger.

For at oprette din app skal du indtaste følgende URL i din browser: https://glitch.com/edit/#!/remix/probot-hello-world.

Denne kommando opretter en helt ny app i Glitch baseret på probot-hej-verden-eksemplet med en tilfældigt genereret URL, som vist. Som du kan se, kaldes min app slik-chaffeur.

GitHub Glitch Probot-app

Den venstre rude viser listen over filer i din applikation. Filen README.md indeholder trinvise instruktioner til opsætning af appen hej-verden Probot. Følg disse instruktioner omhyggeligt for at konfigurere prøven GitHub-app.

En af instruktionerne nævner at køre følgende kommando:

cat my-app-name.2018-06-20.private-key.pem | pbcopy

Formålet med den forrige kommando er at kopiere indholdet af din private nøglefil til udklipsholderen, så du kan indsætte den i Glitch-filen. Denne kommando fungerer dog kun på en Mac. På Windows vil du køre følgende kommando (ændre filnavnet til at matche dit):

skriv mit-app-navn.2018-06-20.private-key.pem | klip

Når du er færdig, skal du installere appen på et depot, du ejer, og derefter oprette et nyt problem. Et par sekunder senere skulle du se en kommentar oprettet af din bot med ordene "Hej Verden!".

Tilpas appen

Når du har oprettet en Probot-app i Glitch og installeret den på GitHub, kan du tilpasse, hvordan appen reagerer på at udsende kommentarer. Når du fulgte trinnene i README, abonnerede du på udgivelsesbegivenheder. Disse begivenheder inkluderer ikke, når der oprettes nye kommentarer. Vi er også nødt til at abonnere på at udsende kommentarer.

Se en liste over dine apps her. Klik på knappen Rediger for at navigere til din app. Klik derefter på tilladelser og begivenheder i venstre navigation og rul ned til afsnittet Abonner på begivenheder. Marker afkrydsningsfeltet Udgavekommentar som vist.

GitHub-begivenhedsabonnementer

Klik på knappen Gem ændringer nederst for at gennemføre disse ændringer.

Nu skal du ændre din Glitch-app for at lytte til kommentarer til nye emner og svare korrekt. Rediger filen index.js, og erstatt filens indhold med følgende kode:

module.exports = (app) => {

// Lytter til kommentarer til nyt emne

app.on ('issue_comment.created', async context => {

// Henter kommentarteksten

const message = context.payload.comment.body

if (meddelelse.indexOf ('eller')> -1) {

const params = context.issue ({

body: '! [Hvorfor ikke begge piger] (https://media3.giphy.com/media/3o85xIO33l7RlmLR4I/giphy.gif)'

})

// Opretter en kommentar med et markdown-billede

return context.github.issues.createComment (params)

}

})

}

Denne kode lytter til kommentarer til nye emner, ser efter ordet eller er omgivet af mellemrum, og hvis den finder det, opretter en ny kommentar med et markdown-billede.

Denne tilgang er ikke særlig smart. Prøv denne lidt bedre tilgang. Det ville være endnu bedre, hvis vi kunne anvende en vis kunstig intelligens (AI) i form af naturlig sprogbehandling (NLP). Men det er uden for mine færdigheder og uden for rækkevidden til denne bog.

Installation af appen

Når du har oprettet appen og få den til at fungere, kan andre installere appen og bruge den. Du kan installere det ved at gå til din GitHub-apps-liste og klikke på den store grønne Install-knap øverst til højre.

Installer det på et arkiv, og gå derefter til at oprette en kommentar til et problem i depotet, der stiller et spørgsmål med ordet eller i det. Et eksempel på interaktion vises her.

GitHub Hvorfor ikke app