8 Pisanje skripti za GitHub

Do sada su objašnjene najznačajnije osobine i procesi rada na platformi GitHub, ali svaka veća grupa ili projekat ima potrebu da servise na platformi prilagodi svojim potrebama. Dodatno, postoji mogućnost da se integrišu neki spoljni servisi. U ovom odeljku biće prikazano kako se platforma GitHub i njen API mogu prilagoditi tako da odgovaraju potrebama korisnika.

Kuke - Webhooks

Ako je korisniku potrebno nešto što GitHub platforma nema na svom spisku servisa, postoji opcija koja se naziva kuke (eng. Webhooks). Kuke za neki repozitorijum na GitHub-u su prilično jednostavne. Pre svega, navodi se URL i onda će GitHub poslati HTTP tovar ka toj URL adresi kada se desi neka željena promena. Da bi kuka bila omogućena, u okviru podešavanja postoji deo koji se naziva kuke (eng. Webhooks). Da bi se postavila nova kuka, izabere se opcija dodaj kuku (eng. Add webhook).

Konfiguracija prikazana na slici 32 je prilično jednostavna. U većini slučajeva unese se URL i ključ, pa se klikne na dugme dodaj kuku (eng. Add webhook). Postoji više opcija za koje događaje korisnik želi da mu servis GitHub šalje tovar (podrazumevano se tovar prima samo za push događaje, tj. kada neko napiše novi kod na bilo kojoj grani korisničkog repozitorijuma)

Slika 32: Konfiguracija kuke

Alat GitHub API

Kuke i ostali servisi predstavljaju način da korisnik dobije obaveštenja u vezi sa događajima na korisničkim repozitorijumima. Međutim, ukoliko su korisniku potrebne dodatne informacije o ovim događajima, ili ukoliko je potrebno da se automatizuje dodavanje saradnika ili dodavanje oznaka tiketima, veoma koristan alat za navedeno jeste GitHub API. GitHub ima veliki broj API krajnjih tačaka koje korisniku omogućavaju da radi skoro sve što može na veb sajtu, ali je sve automatizovano.

Slika 33: Proces dobijanja informacija o korisniku

Postoji veliki broj krajnjih tačaka kao što je proces dobijanja informacija o korisniku, sa kojih mogu da se dobiju informacije o skoro svemu što može da se vidi javno na platformi GitHub.

Ukoliko korisnik želi da nešto uradi na veb sajtu, poput komentarisanja na tiket ili zahtev za povlačenje, ukoliko želi da pogleda nešto ili ima interakciju sa privatnim sadržajem, mora da izvrši postupak autentifikacije. Za proces autentifikacije postoji više načina. Osnovna autentifikacija predstavlja korišćenje korisničkog imena i lozinke, ali u opštem slučaju je efikasnije korišćenje ličnog pristupnog tokena. On se generiše tako što se u okviru stranice podešavanja (eng. Settings) izabere poslednja kartica o programerskom podešavanju (eng. Developer settings) i opcija tokena (eng. Personal access tokens).

Slika 34: Mesto za generisanje tokena u okviru podešavanja

Kada se izabere opcija generisanja novog tokena (eng. Generate new token) otvara se veliki broj opcija za koje će važiti ovaj token, kao i za opis. Važna stvar koja se odnosi na token jeste period trajanja tokena, koji može biti ograničen ili trajan. Preporuka je da korisnik unese sadržajan opis kako bi mu bilo lakše da ukloni token iz skripte ili aplikacije kada prestane da ga koristi.

Slika 35: Kreiranje novog tokena I

Slika 36: Kreiranje novog tokena II

GitHub token prikazuje samo jednom, zato je preporuka da se odmah kopira i sačuva. Ovo se može koristiti za potvrdu identiteta korisnika u skripti umesto korišćenja korisničkog imena i lozinke. Može se ograničiti područje nad kojim skripta deluje, a sam token se može opozvati. Dodatno, ovaj vid autentifikacije povećava granicu učestalosti zahteva sa 60 zahteva po satu na čak 5 000 zahteva u istom vremenskom intervalu.

Slika 37: Kreirani token

Pomoću alata API može da se uradi skoro sve što može da se uradi na sajtu-mogu da se naprave i podešavaju prekretnice, da se dodeljuju tiketi ljudima i zahtevima za povlačenje, da se prave i menjaju oznake, da se pristupa podacima o komitu, da se prave novi komitovi i grane, da se otvaraju, zatvaraju i spajaju zahtevi za povlačenje, da se prave i menjaju timovi, da se komentarišu linije koda u zahtevu za povlačenje, da se pretražuje sajt i slično.

Prethodna lekcija Povratak na početak kursa Sledeća lekcija