Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
GitHub Appsの作り方
@zaru
@zaru
@zaru
CI作ってます
2017.07
private beta
GitHub Appsとは
GitHub Appsとは…
- 従来のOAuth Appsはユーザに対してインストール
- ユーザが削除されたりリポジトリへの権限を失うと消える
- アクセストークンはユーザが取り消さない限り永久有効
- GitHub Appsはリポジトリに...
人に依存しない
サービス連携!
マーケットプレイス
マーケットプレイス
- GitHub上でアプリをインストール・決済できる
- 提供者は売上の25%をGitHubに献上
- 決済の仕組みを作らなくて済むので楽?
- でもAPIのコールバックとかで、ある程度開発は必要
- 登録する条件
- 25...
パーミッション
パーミッション
- 人がリポジトリに対してできる操作、だいたいできる
- 適切なパーミッションを…
- パーミッションを変更したら
インストール済みユーザの承認が必要
アクセストークン
アクセストークン
- JWTのトークンを生成
- bearerトークンとして渡すとアクセストークンゲット
Octokit
GitHub Apps対応
まだ中途半端
PRしよう
あれこれ
git clone する
コメントする
- AppのアクセストークンだとBotが、OAuthのアクセストークン
だとユーザの代理投稿みたいな感じ
取得できるユーザ情報API
- Get the authenticated user: GET /user
- Get the authenticated user's Marketplace purchases: GET /user/mark...
Emailとれない
リポジトリ一覧とれない
インストール済みならとれる
WebHook
プルリク・コメント
などなど各種操作
WebHook
以上!
raysCIで例
①プルリク
①プルリク
②WebHook
Container
Builder
①プルリク
②WebHook
③ビルドリクエスト
Container
Builder
①プルリク
②WebHook
③ビルドリクエスト
④clone
Container
Builder
App
container
①プルリク
②WebHook
③ビルドリクエスト
④clone
⑤build
Container
Builder
Container
Registry
App
container
①プルリク
②WebHook
③ビルドリクエスト
④clone
⑤build ⑥push
Container
Builder
Container
Registry
App
container
①プルリク
②WebHook
③ビルドリクエスト
④clone
⑤build ⑥push
⑦deploy
Container
Builder
Container
Registry
App
container
①プルリク
②WebHook
③ビルドリクエスト
④clone
⑤build ⑥push
⑦deploy
⑧pull
Container
Builder
Container
Registry
Container
Engine
Benchmark
container
App
container
App
container
①プルリク
②WebHook
③ビルドリ...
Container
Builder
Container
Registry
Container
Engine
Benchmark
container
App
container
App
container
①プルリク
②WebHook
③ビルドリ...
Container
Builder
Container
Registry
Container
Engine
Benchmark
container
App
container
App
container
①プルリク
②WebHook
③ビルドリ...
I'm hiring!
以上!
GitHub Appsの作り方
GitHub Appsの作り方
GitHub Appsの作り方
GitHub Appsの作り方
GitHub Appsの作り方
GitHub Appsの作り方
GitHub Appsの作り方
GitHub Appsの作り方
GitHub Appsの作り方
GitHub Appsの作り方
Upcoming SlideShare
Loading in …5
×

GitHub Appsの作り方

社内LT GitHub Appsの作り方

Related Books

Free with a 30 day trial from Scribd

See all
  • Be the first to comment

GitHub Appsの作り方

  1. 1. GitHub Appsの作り方 @zaru
  2. 2. @zaru
  3. 3. @zaru
  4. 4. CI作ってます
  5. 5. 2017.07 private beta
  6. 6. GitHub Appsとは
  7. 7. GitHub Appsとは… - 従来のOAuth Appsはユーザに対してインストール - ユーザが削除されたりリポジトリへの権限を失うと消える - アクセストークンはユーザが取り消さない限り永久有効 - GitHub Appsはリポジトリに対してインストール - 正確にはリポジトリのオーナー(OrganizationやUser)に インストールして、配下のリポジトリに付与するようなイメージ - アクセストークンの有効期限は1時間 - GitHub AppsのOAuthも可能 - こちらはユーザ情報を取得するために使う(限定的) - マーケットプレイスに出せる
  8. 8. 人に依存しない サービス連携!
  9. 9. マーケットプレイス
  10. 10. マーケットプレイス - GitHub上でアプリをインストール・決済できる - 提供者は売上の25%をGitHubに献上 - 決済の仕組みを作らなくて済むので楽? - でもAPIのコールバックとかで、ある程度開発は必要 - 登録する条件 - 250人以上にインストール済み<厳しい - セキュリティ審査や申請ドキュメントなど結構たいへんそう… - アクセスログとか保持する基盤とか全部そろえて説明できる資料とか
  11. 11. パーミッション
  12. 12. パーミッション - 人がリポジトリに対してできる操作、だいたいできる - 適切なパーミッションを… - パーミッションを変更したら インストール済みユーザの承認が必要
  13. 13. アクセストークン
  14. 14. アクセストークン - JWTのトークンを生成
  15. 15. - bearerトークンとして渡すとアクセストークンゲット
  16. 16. Octokit GitHub Apps対応 まだ中途半端 PRしよう
  17. 17. あれこれ
  18. 18. git clone する コメントする - AppのアクセストークンだとBotが、OAuthのアクセストークン だとユーザの代理投稿みたいな感じ
  19. 19. 取得できるユーザ情報API - Get the authenticated user: GET /user - Get the authenticated user's Marketplace purchases: GET /user/marketplace_purchases - Get stubbed Marketplace purchase data: GET /user/marketplace_purchases/stubbed - List installations for user: GET /user/installations - List repositories accessible to the user for an installation: GET /user/installations/:installation_id/repositories - Create an issue: POST /repos/:owner/:repo/issues - List a repository's issue comments: GET /repos/:owner/:repo/issues/comments - List a single issue's comments: GET /repos/:owner/:repo/issues/:id/comments - Get a single issue comment: GET /repos/:owner/:repo/issues/comments/:id - Create an issue comment: POST /repos/:owner/:repo/issues/:number/comments - Set the milestone for an issue: PATCH /repos/:owner/:repo/issues/:number - Add a label to an issue: POST /repos/:owner/:repo/issues/:number/labels - List a repository's pull requests: GET /repos/:owner/:repo/pulls - Create a deployment: POST /repos/:owner/:repo/deployments - Create a deployment status: POST /repos/:owner/:repo/deployments/:id/statuses
  20. 20. Emailとれない リポジトリ一覧とれない インストール済みならとれる
  21. 21. WebHook
  22. 22. プルリク・コメント などなど各種操作 WebHook
  23. 23. 以上!
  24. 24. raysCIで例
  25. 25. ①プルリク
  26. 26. ①プルリク ②WebHook
  27. 27. Container Builder ①プルリク ②WebHook ③ビルドリクエスト
  28. 28. Container Builder ①プルリク ②WebHook ③ビルドリクエスト ④clone
  29. 29. Container Builder App container ①プルリク ②WebHook ③ビルドリクエスト ④clone ⑤build
  30. 30. Container Builder Container Registry App container ①プルリク ②WebHook ③ビルドリクエスト ④clone ⑤build ⑥push
  31. 31. Container Builder Container Registry App container ①プルリク ②WebHook ③ビルドリクエスト ④clone ⑤build ⑥push ⑦deploy
  32. 32. Container Builder Container Registry App container ①プルリク ②WebHook ③ビルドリクエスト ④clone ⑤build ⑥push ⑦deploy ⑧pull
  33. 33. Container Builder Container Registry Container Engine Benchmark container App container App container ①プルリク ②WebHook ③ビルドリクエスト ④clone ⑤build ⑥push ⑦deploy ⑧pull ⑨create
  34. 34. Container Builder Container Registry Container Engine Benchmark container App container App container ①プルリク ②WebHook ③ビルドリクエスト ④clone ⑤build ⑥push ⑦deploy ⑧pull ⑨create ⑩benchmark
  35. 35. Container Builder Container Registry Container Engine Benchmark container App container App container ①プルリク ②WebHook ③ビルドリクエスト ④clone ⑤build ⑥push ⑦deploy ⑧pull ⑨create ⑩benchmark ⑪report
  36. 36. I'm hiring!
  37. 37. 以上!

×