SlideShare a Scribd company logo
GitHub Appsの作り方
@zaru
@zaru
@zaru
CI作ってます
GitHub Appsの作り方
GitHub Appsの作り方
2017.07
private beta
GitHub Appsの作り方
GitHub Appsとは
GitHub Appsとは…
- 従来のOAuth Appsはユーザに対してインストール
- ユーザが削除されたりリポジトリへの権限を失うと消える
- アクセストークンはユーザが取り消さない限り永久有効
- GitHub Appsはリポジトリに対してインストール
- 正確にはリポジトリのオーナー(OrganizationやUser)に
インストールして、配下のリポジトリに付与するようなイメージ
- アクセストークンの有効期限は1時間
- GitHub AppsのOAuthも可能
- こちらはユーザ情報を取得するために使う(限定的)
- マーケットプレイスに出せる
人に依存しない
サービス連携!
GitHub Appsの作り方
GitHub Appsの作り方
GitHub Appsの作り方
GitHub Appsの作り方
GitHub Appsの作り方
マーケットプレイス
マーケットプレイス
- GitHub上でアプリをインストール・決済できる
- 提供者は売上の25%をGitHubに献上
- 決済の仕組みを作らなくて済むので楽?
- でもAPIのコールバックとかで、ある程度開発は必要
- 登録する条件
- 250人以上にインストール済み<厳しい
- セキュリティ審査や申請ドキュメントなど結構たいへんそう…
- アクセスログとか保持する基盤とか全部そろえて説明できる資料とか
パーミッション
パーミッション
- 人がリポジトリに対してできる操作、だいたいできる
- 適切なパーミッションを…
- パーミッションを変更したら
インストール済みユーザの承認が必要
アクセストークン
アクセストークン
- JWTのトークンを生成
- bearerトークンとして渡すとアクセストークンゲット
Octokit
GitHub Apps対応
まだ中途半端
PRしよう
GitHub Appsの作り方
あれこれ
git clone する
コメントする
- AppのアクセストークンだとBotが、OAuthのアクセストークン
だとユーザの代理投稿みたいな感じ
取得できるユーザ情報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
Emailとれない
リポジトリ一覧とれない
インストール済みならとれる
WebHook
プルリク・コメント
などなど各種操作
WebHook
以上!
raysCIで例
GitHub Appsの作り方
①プルリク
①プルリク
②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
③ビルドリクエスト
④clone
⑤build ⑥push
⑦deploy
⑧pull
⑨create
Container
Builder
Container
Registry
Container
Engine
Benchmark
container
App
container
App
container
①プルリク
②WebHook
③ビルドリクエスト
④clone
⑤build ⑥push
⑦deploy
⑧pull
⑨create
⑩benchmark
Container
Builder
Container
Registry
Container
Engine
Benchmark
container
App
container
App
container
①プルリク
②WebHook
③ビルドリクエスト
④clone
⑤build ⑥push
⑦deploy
⑧pull
⑨create
⑩benchmark
⑪report
I'm hiring!
以上!

More Related Content

PDF
分散学習のあれこれ~データパラレルからモデルパラレルまで~
PDF
【13-B-6】Hondaの生産技術屋さんがソフトウェア開発でアジャイルを初導入し組織変革に挑戦
PPTX
KubernetesでGPUクラスタを管理したい
PDF
20180729 Preferred Networksの機械学習クラスタを支える技術
PDF
200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6
PDF
第9回ACRiウェビナー_セック/岩渕様ご講演資料
PDF
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
PDF
Pacemakerを使いこなそう
分散学習のあれこれ~データパラレルからモデルパラレルまで~
【13-B-6】Hondaの生産技術屋さんがソフトウェア開発でアジャイルを初導入し組織変革に挑戦
KubernetesでGPUクラスタを管理したい
20180729 Preferred Networksの機械学習クラスタを支える技術
200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6
第9回ACRiウェビナー_セック/岩渕様ご講演資料
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
Pacemakerを使いこなそう

What's hot (20)

PDF
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
PDF
RISC-Vの可能性
PDF
【Interop Tokyo 2018】 Telemetryの匠が解説~オープン技術を用いたマイクロバースト検知の最前線~
PDF
PayPayでのk8s活用事例
PDF
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
PDF
[Track2-2] 最新のNVIDIA AmpereアーキテクチャによるNVIDIA A100 TensorコアGPUの特長とその性能を引き出す方法
PDF
食べログのフロントエンドエンジニアってめっちゃ大変やねん・・・
PDF
楽天の規模とクラウドプラットフォーム統括部の役割
PDF
楽天における大規模データベースの運用
PDF
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
PPTX
CH551/2/8/9を炙ってみた
PDF
Zynq mp勉強会資料
PPTX
Polyphony の行く末(2018/3/3)
PPTX
グラフデータベース入門
PDF
バーチャルライブ配信アプリREALITYの3Dアバターシステムの全容について
PDF
BKK16-106 ODP Project Update
PPTX
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
PDF
KubeCon 2021 NA Recap - Scheduler拡張事例最前線 / Kubernetes Meetup Tokyo #47 / #k8sjp
PDF
楽天ネットワークエンジニアたちが目指す、次世代データセンターとは
PPTX
MicroProfileの正しい使い方 (Java Developer Summit 2023)
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
RISC-Vの可能性
【Interop Tokyo 2018】 Telemetryの匠が解説~オープン技術を用いたマイクロバースト検知の最前線~
PayPayでのk8s活用事例
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
[Track2-2] 最新のNVIDIA AmpereアーキテクチャによるNVIDIA A100 TensorコアGPUの特長とその性能を引き出す方法
食べログのフロントエンドエンジニアってめっちゃ大変やねん・・・
楽天の規模とクラウドプラットフォーム統括部の役割
楽天における大規模データベースの運用
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
CH551/2/8/9を炙ってみた
Zynq mp勉強会資料
Polyphony の行く末(2018/3/3)
グラフデータベース入門
バーチャルライブ配信アプリREALITYの3Dアバターシステムの全容について
BKK16-106 ODP Project Update
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
KubeCon 2021 NA Recap - Scheduler拡張事例最前線 / Kubernetes Meetup Tokyo #47 / #k8sjp
楽天ネットワークエンジニアたちが目指す、次世代データセンターとは
MicroProfileの正しい使い方 (Java Developer Summit 2023)
Ad

Similar to GitHub Appsの作り方 (20)

PDF
GitHub Appsと回帰テストフロー
PDF
GitHub最新情報キャッチアップ 2023年6月
PPTX
GitHub Handson
PDF
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
PDF
GitHub勉強会
PDF
GitHub と Azure でアプリケーションとインフラストラクチャの守りを固めるDevSecOps
PDF
@s_ssk13さん向けGitHub入門
PPTX
Windows Azure Mobile Servicesによるアプリ構築
PPTX
Visual Studio2013 でGithub(1) セットアップ~同期
PDF
GitHub Codespaces と Azure でつくる、エンタープライズレベルの開発環境
PDF
GitHub Actions で CI/CD
PPTX
GitHubアカウントの作成
PDF
医療データ解析者へ向けた Git・GitHub 入門
PDF
地味だけど劇的に便利になるGitHubリポジトリ設定あれこれ
PPTX
GitHubの使い方
PDF
今日から始めるGithub
PPTX
LINE BOT AWARDS ハンズオン
KEY
Yapc2012資料
PDF
Cognito、Mobile SDK、SNSでサーバいらずのプッシュ通知
PPTX
今さら聞けない人のためのGitLabの始め方 Ubuntu編
GitHub Appsと回帰テストフロー
GitHub最新情報キャッチアップ 2023年6月
GitHub Handson
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
GitHub勉強会
GitHub と Azure でアプリケーションとインフラストラクチャの守りを固めるDevSecOps
@s_ssk13さん向けGitHub入門
Windows Azure Mobile Servicesによるアプリ構築
Visual Studio2013 でGithub(1) セットアップ~同期
GitHub Codespaces と Azure でつくる、エンタープライズレベルの開発環境
GitHub Actions で CI/CD
GitHubアカウントの作成
医療データ解析者へ向けた Git・GitHub 入門
地味だけど劇的に便利になるGitHubリポジトリ設定あれこれ
GitHubの使い方
今日から始めるGithub
LINE BOT AWARDS ハンズオン
Yapc2012資料
Cognito、Mobile SDK、SNSでサーバいらずのプッシュ通知
今さら聞けない人のためのGitLabの始め方 Ubuntu編
Ad

More from zaru sakuraba (14)

PDF
WebAssembly と Rust の入口の向かいにある道路のベンチに腰掛けるレベルのさわってみた感想を共有
PDF
Goでこれどうやるの? 入門
PDF
CarrierWaveにちょっと互換あるGCP Storage対応クラス
PDF
パフォーマンス計測Ciサービスを作って得た知見を共有したい
PDF
普通のRailsアプリをdockerで本番運用する知見
PDF
スクラム導入に向けて:スクラムは救世主となるのか?
PDF
Railsモデル設計ケーススタディ
PPTX
社内ネットワーク改善の過程で分かった物理ゆえの闇と脆弱性そしてネットワークの基礎入門
PDF
Service workerとwebプッシュ通知
PPTX
良いプログラマーとは
PPTX
スマホフロントエンド最速化手法
PPTX
正規表現勉強会
PDF
今さらながらRSpecに入門してみた
PPTX
少し未来のコードレビュー
WebAssembly と Rust の入口の向かいにある道路のベンチに腰掛けるレベルのさわってみた感想を共有
Goでこれどうやるの? 入門
CarrierWaveにちょっと互換あるGCP Storage対応クラス
パフォーマンス計測Ciサービスを作って得た知見を共有したい
普通のRailsアプリをdockerで本番運用する知見
スクラム導入に向けて:スクラムは救世主となるのか?
Railsモデル設計ケーススタディ
社内ネットワーク改善の過程で分かった物理ゆえの闇と脆弱性そしてネットワークの基礎入門
Service workerとwebプッシュ通知
良いプログラマーとは
スマホフロントエンド最速化手法
正規表現勉強会
今さらながらRSpecに入門してみた
少し未来のコードレビュー

GitHub Appsの作り方