GitHub Apps ã«ã€ããŠ
GitHub App ã¯ãGitHub ã®æ©èœãæäœããŠæ¡åŒµããããã«æ§ç¯ã§ããçµ±åã®äžçš®ã§ãã GitHub App ãæ§ç¯ããŠããŠãŒã¶ãŒã®ãµã€ã³ã€ã³ããµãŒãã¹ ã¢ã«ãŠã³ãã®äœæãå¿ èŠãšããã«ãæè»æ§ãæäŸããããã»ã¹ã®æ©æŠã軜æžã§ããŸãã
GitHub Apps ã®äžè¬çãªãŠãŒã¹ ã±ãŒã¹ã¯æ¬¡ã®ãšããã§ãã
- ã¿ã¹ã¯ãŸãã¯ããã¯ã°ã©ãŠã³ã ããã»ã¹ã®èªåå
- "GitHub ã«ãããµã€ã³ã€ã³" ã®ãµããŒããããã«ããããŠãŒã¶ãŒã¯ãèªåã® GitHub ã¢ã«ãŠã³ãã§ãµã€ã³ã€ã³ãããšã³ã·ã¹ãã ã§ ID ãæäŸã§ããŸã
- éçºããŒã«ãšããŠã®äœ¿çšãããã«ããããŠãŒã¶ãŒã¯ãGitHub App ã«ãµã€ã³ã€ã³ã㊠GitHub ãæäœã§ããããã«ãªããŸãããã®åŸãã¢ããªã¯ãŠãŒã¶ãŒã«ä»£ãã£ãŠåäœã§ããŸã
- ããŒã«ãŸãã¯å€éšãµãŒãã¹ãš GitHub ã®çµ±å
OAuth apps ãšåæ§ã«ãGitHub Apps ã§ã OAuth 2.0 ã䜿ããããŠãŒã¶ãŒã®ä»£ããã«åäœããããšãã§ããŸãã OAuth apps ãšã¯ç°ãªããGitHub Apps ã¯ãŠãŒã¶ãŒããç¬ç«ããŠåäœããããšãã§ããŸãã
GitHub Apps ã¯ãorganizationãå人çšã¢ã«ãŠã³ãã«çŽæ¥ã€ã³ã¹ããŒã«ããç¹å®ã®ãªããžããªãžã®ã¢ã¯ã»ã¹æš©ãä»äžã§ããŸãã 粟现ãªã¢ã¯ã»ã¹æš©éãä»ããŠãããwebhook ãçµã¿èŸŒãŸããŠããŸãã
ããã©ã«ãã§ã¯ãOrganizationå ã®GitHub Appsã®èšå®ã管çã§ããã®ã¯Organizationã®ãªãŒããŒã ãã§ãã çµç¹ãææãã GitHub Apps ã®éçºè èšå®ã远å ãŠãŒã¶ãŒã倿Žã§ããããã«ãããããææè 㯠GitHub App ãããŒãžã£ãŒã®ã¢ã¯ã»ã¹èš±å¯ãä»äžã§ããŸãã GitHub App ãããŒãžã£ãŒã¯ããµãŒã ããŒãã£ã®ã¢ããªã±ãŒã·ã§ã³ã管çã§ããŸããã Organization ã§ã® GitHub App ãããŒãžã£ãŒã®è¿œå ãšåé€ã®è©³çްã«ã€ããŠã¯ããOrganizationã®ããŒã«ããåç §ããŠãã ããã
GitHub App ã®äœæ
GitHub App ãäœæããã«ã¯ããŸã GitHub App ãç»é²ããå¿ èŠããããŸãã 詳ããã¯ããGitHub App ã®ç»é²ããã芧ãã ããã
次ã«ãã³ãŒããèšè¿°ã㊠GitHub App ã«æ©èœã远å ããå¿ èŠããããŸãã GitHub App ç»é²ã®è³æ Œæ å ±ã䜿ã£ãŠãGitHub ã® API ã«å¯ŸããŠèªèšŒãããèŠæ±ãè¡ãããšãã§ããŸãã GitHub App ã®ã³ãŒããèšè¿°ããæ¹æ³ã®è©³çްã«ã€ããŠã¯ããGitHub App ã®ã³ãŒãã®èšè¿°ã«ã€ããŠããåç §ããŠãã ããã èªèšŒãããèŠæ±ãè¡ãæ¹æ³ã®è©³çްã«ã€ããŠã¯ããGitHub ã¢ããªã§ã®èªèšŒã«ã€ããŠããåç §ããŠãã ããã
GitHub App ã®ã³ãŒããèšè¿°ããããã¢ããªãã©ããã§å®è¡ããå¿ èŠããããŸãã ã¢ããªã Web ãµã€ããŸã㯠Web ã¢ããªã®å Žåã¯ãAzure App Service ãªã©ã®ãµãŒããŒäžã§ã¢ããªããã¹ãã§ããŸãã ã¢ããªãã¯ã©ã€ã¢ã³ãåŽã¢ããªã®å Žåã¯ããŠãŒã¶ãŒã®ããã€ã¹äžã§å®è¡ã§ããŸãã
GitHub App ã䜿ãã«ã¯ãorganizationããŸãã¯å人çšã¢ã«ãŠã³ãã«ã€ã³ã¹ããŒã«ããå¿ èŠããããŸãã
- GitHub App ããã©ã€ããŒãã®å Žåã¯ãã¢ããªãææããã¢ã«ãŠã³ãã§ã®ã¿ã€ã³ã¹ããŒã«ã§ããŸãã
- GitHub App ãå ¬éãããŠããå Žåãä»ã®ã¢ã«ãŠã³ããã€ã³ã¹ããŒã«ã§ããŸãããµã€ã³ã€ã³ã§ããã®ã¯ããã® Enterprise ã®ã¡ã³ããŒã®ã¿ã§ãã
詳现ã«ã€ããŠã¯ããç¬èªã® GitHub App ã®ã€ã³ã¹ããŒã«ãããã³ãGitHub App ã®å ±æããåç §ããŠãã ããã
æ§ç¯ãã GitHub App ã®çš®é¡ã«ã€ããŠ
GitHub App ãèšèšããæ¹æ³ã¯è€æ°ãããã¢ããªã«å¿ èŠãªæ©èœã«åºã¥ããŠããããæ€èšããå¿ èŠããããŸãã
ãŠãŒã¶ãŒã«ä»£ãã£ãŠå®è¡ãã GitHub Apps
ã¢ããªã§ãŠãŒã¶ãŒã«ä»£ãã£ãŠã¢ã¯ã·ã§ã³ãå®è¡ããå Žåã¯ãèªèšŒã«ãŠãŒã¶ãŒ ã¢ã¯ã»ã¹ ããŒã¯ã³ã䜿çšããå¿ èŠããããŸãã ãã®çš®é¡ã®èŠæ±ã¯ "user-to-server" ãšåŒã°ããããšããããã¢ããªã«ä»äžãããã¢ã¯ã»ã¹èš±å¯ãšãŠãŒã¶ãŒã®ã¢ã¯ã»ã¹èš±å¯ã«ãã£ãŠã¢ããªãå¶éãããããšãæå³ããŸãã ãã®ãã¿ãŒã³ã§ã¯ãã¢ããªã§ã¢ã¯ã·ã§ã³ãå®è¡ãããåã«ããŠãŒã¶ãŒãã¢ããªãæ¿èªããå¿ èŠããããŸãã 詳ããã¯ãããŠãŒã¶ãŒã«ä»£ãã£ãŠ GitHub ã¢ããªã§èªèšŒããããã芧ãã ããã
GitHub App ã䜿çšããŠäœæã§ããèªåå (ãŠãŒã¶ãŒã«ä»£ãã£ãŠã¢ããªãå®è¡ããå Žå) ã®äŸãšããŠã¯ã次ã®ãããªãã®ããããŸãã
- ãšã³ã·ã¹ãã ã® ID ãããã€ããŒãšã㊠GitHub ã䜿çšãã GitHub Appã
- GitHub ãŠãŒã¶ãŒã«åœ¹ç«ã€å¯èœæ§ããããµãŒãã¹ã GitHub ã®äžã«è¿œå ãã GitHub Appã GitHub Marketplace ãéããŠããŸãã¯ã¢ããªãå ¬éããããšã§ãä»ã®éçºè ãšã¢ããªãå ±æã§ããŸãã
ç¬èªã§å®è¡ãã GitHub Apps
ã¢ããªããŠãŒã¶ãŒã®ä»£ããã§ã¯ãªãç¬èªã§å®è¡ããå ŽåãèªèšŒã«ã€ã³ã¹ããŒã« ã¢ã¯ã»ã¹ ããŒã¯ã³ã䜿çšããå¿ èŠããããŸãã ãã®çš®é¡ã®èŠæ±ã¯ã"server-to-server" ãšãåŒã°ããããšããããã¢ããªã«ä»äžãããã¢ã¯ã»ã¹èš±å¯ã«ãã£ãŠã¢ããªãå¶éãããããšãæå³ããŸãã 詳ããã¯ããGitHub App ã€ã³ã¹ããŒã«ãšããŠã®èªèšŒããã芧ãã ããã
GitHub App ã䜿çšããŠäœæã§ããèªåå (ã¢ããªãç¬èªã§å®è¡ããå Žå) ã®äŸãšããŠã¯ã次ã®ãããªãã®ããããŸãã
- ç¹å®ã®åºæºã»ãããããå Žåã« Webhook ã䜿çšããŠã€ãã³ãã«å¯Ÿå¿ãã GitHub Appã ããšãã°ãfine-grained personal access token ã«å¯ŸããèŠæ±ã確èªããããã«ãREST API ãšã³ããã€ã³ããäžå¿ã«ç¹å®ã®ããªã·ãŒãäžããããèŠæ±ãæ¿èªããèªååãäœæã§ããŸãã
- ãªããžããªã®å ±åäœæè ã«åœ¹ç«ã€ GitHub Appã ããšãã°ãå ±åäœæè ã pull request ãäœæããåŸãŸãã¯ã³ã¡ã³ããäœæããåŸãã¢ããªã§æçšãªãªãœãŒã¹ãæçš¿ã§ããŸãã
- ä»ã® CI/CD ããŒã«ã«æäŸããããããŸãã¯ãªããžããªããæ å ±ããã«ããããã«ãæå¹æéã®çãããŒã¯ã³ãçæãã GitHub Appã
Webhook ã«å¿çãã GitHub Apps
ã¢ããªã§ GitHub ã®ã€ãã³ãã«å¿çããå¿ èŠãããå Žåãã¢ããªã§ Webhook ããµãã¹ã¯ã©ã€ãããå¿ èŠããããŸãã ããšãã°ãpull request ãéããããšãã«ã¢ããªã«ã³ã¡ã³ããæ®ãããšãã§ããŸãã 詳ããã¯ããGitHub Apps ã§ã® Webhook ã®äœ¿çšããã芧ãã ããã
ç¹å®ã®ã¢ã¯ã·ã§ã³ãå®è¡ã§ãã GitHub Apps
GitHub App ãèšå®ããéãã¢ããªã®ç¹å®ã®ã¢ã¯ã»ã¹èš±å¯ãéžæã§ããŸãã ãããã®ã¢ã¯ã»ã¹èš±å¯ã«ãã£ãŠãã¢ããªã§ GitHub API ã䜿çšããŠå®è¡ã§ããããšããµã€ã³ã€ã³ãããŠãŒã¶ãŒã«ä»£ãã£ãŠå®è¡ã§ããããšãã¢ããªã§åãåãããšãã§ãã Webhook ãæ±ºå®ãããŸãã 詳ããã¯ããGitHub ã¢ããªã®ã¢ã¯ã»ã¹èš±å¯ãéžæããããã芧ãã ããã