SlideShare une entreprise Scribd logo
1  sur  47
Télécharger pour lire hors ligne
GitHub Appsの作り方
@zaru
@zaru
@zaru
CI作ってます
2017.07
private beta
GitHub Appsとは
GitHub Appsとは…
- 従来のOAuth Appsはユーザに対してインストール
- ユーザが削除されたりリポジトリへの権限を失うと消える
- アクセストークンはユーザが取り消さない限り永久有効
- GitHub Appsはリポジトリに対してインストール
- 正確にはリポジトリのオーナー(OrganizationやUser)に
インストールして、配下のリポジトリに付与するようなイメージ
- アクセストークンの有効期限は1時間
- GitHub AppsのOAuthも可能
- こちらはユーザ情報を取得するために使う(限定的)
- マーケットプレイスに出せる
人に依存しない
サービス連携!
マーケットプレイス
マーケットプレイス
- GitHub上でアプリをインストール・決済できる
- 提供者は売上の25%をGitHubに献上
- 決済の仕組みを作らなくて済むので楽?
- でもAPIのコールバックとかで、ある程度開発は必要
- 登録する条件
- 250人以上にインストール済み<厳しい
- セキュリティ審査や申請ドキュメントなど結構たいへんそう…
- アクセスログとか保持する基盤とか全部そろえて説明できる資料とか
パーミッション
パーミッション
- 人がリポジトリに対してできる操作、だいたいできる
- 適切なパーミッションを…
- パーミッションを変更したら
インストール済みユーザの承認が必要
アクセストークン
アクセストークン
- 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/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で例
①プルリク
①プルリク
②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!
以上!

Contenu connexe

Tendances

MongoDB概要:金融業界でのMongoDB
MongoDB概要:金融業界でのMongoDBMongoDB概要:金融業界でのMongoDB
MongoDB概要:金融業界でのMongoDB
ippei_suzuki
 

Tendances (20)

インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
 
Serverless時代のJavaについて
Serverless時代のJavaについてServerless時代のJavaについて
Serverless時代のJavaについて
 
MongoDB概要:金融業界でのMongoDB
MongoDB概要:金融業界でのMongoDBMongoDB概要:金融業界でのMongoDB
MongoDB概要:金融業界でのMongoDB
 
AWS Black Belt Online Seminar - Amazon Lightsail
AWS Black Belt Online Seminar - Amazon Lightsail AWS Black Belt Online Seminar - Amazon Lightsail
AWS Black Belt Online Seminar - Amazon Lightsail
 
Amazon Athena 初心者向けハンズオン
Amazon Athena 初心者向けハンズオンAmazon Athena 初心者向けハンズオン
Amazon Athena 初心者向けハンズオン
 
AWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormationAWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormation
 
AWS Batch Fargate対応は何をもたらすか
AWS Batch Fargate対応は何をもたらすかAWS Batch Fargate対応は何をもたらすか
AWS Batch Fargate対応は何をもたらすか
 
20191125 Container Security
20191125 Container Security20191125 Container Security
20191125 Container Security
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
データモデリング・テクニック
データモデリング・テクニックデータモデリング・テクニック
データモデリング・テクニック
 
Azureをフル活用したサーバーレスの潮流について
Azureをフル活用したサーバーレスの潮流についてAzureをフル活用したサーバーレスの潮流について
Azureをフル活用したサーバーレスの潮流について
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
 
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
SpotBugs(FindBugs)による 大規模ERPのコード品質改善SpotBugs(FindBugs)による 大規模ERPのコード品質改善
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
 
【Unite Tokyo 2019】AWS for Unity Developers
【Unite Tokyo 2019】AWS for Unity Developers【Unite Tokyo 2019】AWS for Unity Developers
【Unite Tokyo 2019】AWS for Unity Developers
 
(SPOT301) AWS Innovation at Scale | AWS re:Invent 2014
(SPOT301) AWS Innovation at Scale | AWS re:Invent 2014(SPOT301) AWS Innovation at Scale | AWS re:Invent 2014
(SPOT301) AWS Innovation at Scale | AWS re:Invent 2014
 
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
 
比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)
 
AWS re:Inforce2019 re:Cap LT
AWS re:Inforce2019 re:Cap LTAWS re:Inforce2019 re:Cap LT
AWS re:Inforce2019 re:Cap LT
 
AWSでDockerを扱うためのベストプラクティス
AWSでDockerを扱うためのベストプラクティスAWSでDockerを扱うためのベストプラクティス
AWSでDockerを扱うためのベストプラクティス
 

Similaire à GitHub Appsの作り方

@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門
Takashi Imagire
 
今日から始めるGithub
今日から始めるGithub今日から始めるGithub
今日から始めるGithub
lion-man
 

Similaire à GitHub Appsの作り方 (20)

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

Plus de zaru sakuraba

パフォーマンス計測Ciサービスを作って得た知見を共有したい
パフォーマンス計測Ciサービスを作って得た知見を共有したいパフォーマンス計測Ciサービスを作って得た知見を共有したい
パフォーマンス計測Ciサービスを作って得た知見を共有したい
zaru sakuraba
 

Plus de zaru sakuraba (14)

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

Dernier

Dernier (11)

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 

GitHub Appsの作り方