GitHubをデータパイプラインソースとして設定

このページは機械翻訳により提供されています。翻訳内容と英語版に相違がある場合は、英語版が優先されます。

GitHub REST APIおよびGraphQL APIからリポジトリ、Issue、プルリクエスト、コミット、関連するDevelopmentレコードを抽出し、送信先に同期するために、GitHubをデータパイプラインソースとして設定します。お使いの送信先に同期します。

このガイドでは、機能と前提条件の確認、GitHubのデータパイプラインソースとしての接続、パイプラインの設定、サポート対象オブジェクト、同期モード、スキーマ処理、機密データ処理、制限事項について説明します。

サポートされている機能

GitHubをパイプラインソースとして使用する場合、次の機能がサポートされます。

  • クラウドおよびセルフホスト接続:https経由でGitHub.comおよびGitHub Enterprise Cloudに接続します。 セルフホスト型のGitHub Enterprise Serverインスタンスに接続するには、コネクションをオンプレミスエージェント経由でルーティングします。
  • 組織スコープの同期:パイプラインを設定するときに、1つ以上のGitHub組織を選択します。 Workatoは、コネクションがアクセスできるそれらの組織内のすべてのリポジトリを同期します。
  • オブジェクトレベルの選択:同期するオブジェクトを、送信先の個別のテーブルとして選択します。 完全なリストについては、サポートされているオブジェクトを参照してください。
  • 完全同期と増分同期IssueIssueCommentCommitReviewCommentオブジェクトは、GitHubのsinceパラメーターを使用した増分同期をサポートします。 その他のすべてのオブジェクトは、各実行時に完全同期されます。 詳細については、同期モードを参照してください。
  • 削除追跡:Workatoは各完全同期を前回の実行と比較し、GitHubに存在しなくなったレコードを送信先で削除済みとしてマークします。
  • スキーマドリフトの検出と処理: 新しいフィールドを自動同期でスキーマの変更を自動的に検出して適用するか、新しいフィールドをブロックでスキーマを固定します。
  • フィールドレベルのデータ保護: 機密フィールドをそのままレプリケートするか、宛先に到達する前にハッシュ化します。
  • 構成可能な同期頻度: 時間ベースの間隔またはcron式を使用して同期をスケジュールします。 サポートされる最小間隔は15分です。

前提条件

GitHubをデータパイプラインソースとして接続するには、次が必要です。

  • 同期する組織およびリポジトリへのアクセス権を持つGitHub.com、GitHub Enterprise Cloud、またはGitHub Enterprise Serverアカウント
  • パイプラインのスコープ設定に使用する1つ以上のGitHub組織ログイン
  • セルフホスト型のGitHub Enterprise Serverインスタンスに接続する場合は、オンプレミスエージェント
  • 選択した認証方法の認証情報:
    • OAuth App:Workatoの登録済みOAuth Appを承認する権限を持つGitHubアカウント
    • Personal access token:GitHubアカウントから生成されたclassicまたはfine-grained personal access token

必要な権限

選択したオブジェクトを同期するために必要な読み取りレベルの権限のみを付与します。

GitHub権限カテゴリClassic OAuth App / personal access tokenスコープFine-grained personal access token権限Workatoオブジェクト
リポジトリのコンテンツとメタデータrepoContents:読み取り専用、Metadata:読み取り専用Repository, Branch, BranchCommitRelation, Tag, Commit, CommitComment, CommitFile, RepositoryTopic, RepositoryLanguage
課題repoIssues:読み取り専用Issue, IssueComment, IssueLabel, IssueAssignee, IssueEvent, Label, Milestone
プルリクエストrepoPull requests:読み取り専用PullRequest, PullRequestCommit, PullRequestReview, ReviewComment, RequestedReviewerHistory
アクションrepoActions:読み取り専用Workflow, WorkflowRun, WorkflowRunJob, CommitStatus
Actionsチェック実行repoActions:読み取り専用、さらにChecks:読み取り専用CommitCheckRun
デプロイメントrepoDeployments:読み取り専用Deployment, DeploymentStatus
組織メンバーとチームread:orgMembers:読み取り専用(組織レベル)Team, TeamMember, RepositoryTeam, User, Collaborator
アカウントIDread:user該当なしコネクションチェックにのみ必要
Dependabotアラートsecurity_eventsDependabot alerts:読み取り専用SecurityAlert

WORKFLOWスコープを付与しないでください

workflowスコープは、Actionsワークフローファイルへの書き込みを許可します。 データパイプラインコネクションはデータを読み取るだけであり、このスコープは必要ありません。

サポートされるコネクションタイプ

GitHubデータパイプラインは、次の2つの認証方法をサポートします。

  • OAuth App:標準のブラウザーリダイレクトフローを通じて、Workatoの登録済みGitHub OAuth Appを承認します。 OAuthトークンは長期間有効であり、承認を取り消すかOAuth Appが削除されない限り期限切れになりません。
  • Personal access token:GitHubアカウントから生成されたclassicまたはfine-grained personal access tokenを指定します。 Workatoでは、対話型のOAuthフローが実用的でないサーバー間設定にこの方法を推奨しています。

GitHubに接続

GitHubをデータパイプラインソースとして接続するには、次の手順を完了します。

GitHubに接続

OAuth認証

OAuth認証を使用してGitHubをWorkatoに接続するには、次の手順を実行します:

1

Workatoアカウントにサインインし、GitHubコネクションを追加する予定のプロジェクトに移動します。

2

作成 > コネクションをクリックするか(またはCを2回押す)、GitHubをコネクションとして選択します。

3

Workatoが接続されているGitHubインスタンスを識別するコネクション名を指定します。

4

ロケーションドロップダウンメニューを使用して、コネクションを保存するプロジェクトを選択します。

5

Authentication type(認証タイプ)ドロップダウンメニューを使用し、OAuth Appを選択します。

6

任意です。 Advanced configurationをクリックして、Host nameフィールドを表示します。

7

任意です。 Host nameを入力します。 これはGitHub Enterprise Serverを使用する場合に適用されます。 GitHubサブドメインを入力します。 たとえば、ホストURLがhttps://github.example-organisation.comの場合、サブドメインはgithub.example-organisation.comです。

8

接続をクリックします。 WorkatoはユーザーをGitHubにリダイレクトします。 OAuth AppがGitHubアカウントへのアクセス許可をリクエストします。

Personal access token認証

personal access tokenを使用してGitHubアカウントをWorkatoに接続するには、GitHubからpersonal access tokenを取得します:

個人アクセストークンを取得

1

Github account > Settings > Developer settings > Personal access tokens > Generate new tokenに移動します。

2

Generate new token(新しいトークンを生成)をクリックします。

3

トークンをコピーします。 コネクションを認証するには、このトークンをWorkatoに入力します。

Workatoでセットアップを完了する

パーソナルアクセストークンを使用してGitHubコネクションを設定するには、次の手順を実行します:

1

Workatoアカウントにサインインし、GitHubコネクションを追加する予定のプロジェクトに移動します。

2

作成 > コネクションをクリックするか(またはCを2回押す)、GitHubをコネクションとして選択します。

3

Workatoが接続されているGitHubインスタンスを識別するコネクション名を指定します。

4

ロケーションドロップダウンメニューを使用して、コネクションを保存するプロジェクトを選択します。

5

Authentication typeドロップダウンメニューを使用して、Personal Access Tokenを選択します。

6

任意です。 Advanced configurationをクリックして、Host nameフィールドを表示します。

7

任意です。 Host nameを入力します。 これはGitHub Enterprise Serverを使用する場合に適用されます。 GitHubサブドメインを入力します。 たとえば、ホストURLがhttps://github.example-organisation.comの場合、サブドメインはgithub.example-organisation.comです。

8

Personal Access Tokenを入力します。

9

任意です。 Custom OAuth profileを入力します。 これにより、アプリへのすべてのリクエストで指定したプロファイルが使用されます。

10

接続をクリックします。

パイプラインの設定

GitHubをデータパイプラインソースとして設定するには、次の手順を完了します。

1

作成 > データパイプラインを選択します。

2

データパイプライン名フィールドにデータパイプラインの名前を入力します。

データパイプライン設定データパイプライン設定

3

ロケーションドロップダウンメニューを使用して、データパイプラインを保存するプロジェクトを選択します。

4

ビルドを開始をクリックします。

5

ソースアプリから新規/更新済みレコードを抽出トリガーをクリックします。 このトリガーは、パイプラインがGitHubからデータを取得する方法を定義します。

ソースアプリから新規/更新済みレコードを抽出トリガーを設定ソースアプリから新規/更新済みレコードを抽出トリガーを設定

6

Your Connected Source Apps(接続済みソースアプリ)ドロップダウンメニューを使用してGitHubを選択します。

7

このパイプラインで使用するGitHubコネクションを選択します。 または、+ 新規コネクションをクリックして新しいコネクションを作成します。

8

1つ以上のGitHub組織ログインをカンマ区切りでOrganizations(組織)フィールドに入力します。 Workatoは、これらの組織内でコネクションがアクセスできるリポジトリのみを同期し、ここで入力した組織を超えてスコープを拡張しません。

9

オブジェクトを追加をクリックして、新しいオブジェクトを追加パネルを開きます。

オブジェクトを追加オブジェクトを追加

10

利用可能なGitHubオブジェクトのリストを検索または参照し、同期するオブジェクトを選択して、Add(追加)をクリックします。

高ボリュームオブジェクト

CommitFileオブジェクトとBranchCommitRelationオブジェクトは、各同期でコミットレベルのデータを完全に再読み取りするため、コミット履歴が長いリポジトリでは非常に多数の行が生成される可能性があります。 いずれかのオブジェクトを追加する前に、高ボリュームオブジェクトには慎重な同期計画が必要を参照してください。

11

選択した各オブジェクトのスキーマを確認してカスタマイズします。 パイプラインは、選択時にオブジェクトのスキーマを自動的に取得し、宛先がソースと一致するようにします。

任意のオブジェクトを展開して、そのフィールドを表示します。 使用可能なすべてのデータを抽出するにはすべてのフィールドを選択したままにし、データ抽出とスキーマレプリケーションから除外するには特定のフィールドの選択を解除します。

12

任意です。 オブジェクトを展開し、各フィールドの処理方法を選択して、フィールドレベルのデータ保護を設定します。

  • そのまま複製: ソースのデータ値が宛先に同一に複製されます。
  • ハッシュ: 宛先に同期する前に、フィールド内の機密データ値をハッシュ化します。

Workatoでは、個人を特定できる情報(PII)やその他の機密フィールドをハッシュ化することを推奨します。 PIIが一般的に含まれるフィールドのリストについては、機密データの処理を参照してください。

13

さらにオブジェクトを追加するには、もう一度オブジェクトを追加をクリックします。 この手順を繰り返して、パイプラインに追加のGitHubオブジェクトを含めます。

14

スキーマ変更の処理方法を選択ドロップダウンメニューを使用して、スキーマドリフトの処理オプションを選択します。

  • 新しいフィールドを自動同期: ソースに追加された新しいフィールドを自動的に検出して同期します。
  • 新しいフィールドをブロック: パイプラインの開始後、スキーマを固定します。 新しいフィールドは手動で追加する必要があります。
15

任意です。 同時操作数を制限するには、同時実行制限フィールドに値を入力します。 Workatoによって設定されたデフォルトのクォータを使用するには、このフィールドを空白のままにします。 値はWorkatoのデフォルトクォータである100を超えることはできません。

16

パイプラインがGitHubから送信先にデータを同期する頻度を、Frequency(頻度)フィールドで設定します。 標準の時間ベースのスケジュールを選択するか、カスタムcron式を定義します。

サポートされるオブジェクト

GitHubデータパイプラインは、GitHub REST APIからデータを同期し、プルリクエストレビューとリリースについてはGraphQL APIからデータを同期します。 次の表は、サポートされているオブジェクトをカテゴリ別に示しています。 各オブジェクトは、送信先で個別のテーブルとして同期されます。

組織、リポジトリ、アクセス

オブジェクト同期モード削除追跡
RepositoryFull syncはい
TeamFull syncはい
TeamMemberTeamオブジェクトと同期されますはい
RepositoryTeamFull syncはい
ユーザーFull syncはい
コラボレータFull syncはい

課題とプルリクエスト

GitHubは、同じエンドポイントから課題とプルリクエストを返します。 Workatoは、各レコードのpull_requestフィールドを確認して両者を区別するため、Issueオブジェクトではプルリクエストの形をした行が除外されます。

オブジェクト同期モード削除追跡
Issue完全同期、増分いいえ
IssueComment完全同期、増分いいえ
IssueLabelIssueオブジェクトと同期されますいいえ
IssueAssigneeIssueオブジェクトと同期されますいいえ
IssueEventFull syncはい
ラベルFull syncはい
MilestoneFull syncはい
PullRequestFull syncはい
PullRequestCommitPullRequestオブジェクトと同期されますはい
PullRequestReviewPullRequestオブジェクトと同期されますはい
ReviewComment完全同期、増分いいえ
RequestedReviewerHistoryPullRequestオブジェクトと同期されますはい

コミットとリポジトリコンテンツ

オブジェクト同期モード削除追跡
Commit完全同期、増分いいえ
CommitCommentFull syncはい
CommitStatusCommitオブジェクトと同期されますいいえ
CommitCheckRunCommitオブジェクトと同期されますいいえ
BranchFull syncはい
BranchCommitRelationBranchオブジェクトと同期されますはい
TagFull syncはい
RepositoryTopicRepositoryオブジェクトと同期されますはい
RepositoryLanguageRepositoryオブジェクトと同期されますはい
CommitFileCommitオブジェクトと同期されますいいえ

CommitFileBranchCommitRelationは、オプトインの高ボリュームオブジェクトです。 いずれかのオブジェクトを追加する前に、高ボリュームオブジェクトには慎重な同期計画が必要を参照してください。

CI/CDとリリース

オブジェクト同期モード削除追跡
WorkflowFull syncはい
WorkflowRunFull syncはい
WorkflowRunJobWorkflowRunオブジェクトと同期されますはい
デプロイメントFull syncはい
DeploymentStatusDeploymentオブジェクトと同期されますはい
リリースするRepositoryオブジェクトと同期されますはい

エンゲージメントとセキュリティ

オブジェクト同期モード削除追跡
StargazerFull syncはい
SecurityAlertFull syncはい

SecurityAlertを使用するには、リポジトリでDependabotが有効化され、コネクションに適切な権限が付与されている必要があります。 詳細については、Dependabotアラートにはリポジトリと権限の設定が必要を参照してください。

同期モード

GitHubデータパイプラインは、完全同期と増分同期をサポートします。 各オブジェクトの同期モードを確認するには、サポート対象オブジェクトを参照してください。

フル同期

完全同期では、選択したオブジェクトについてGitHubから利用可能なすべてのレコードを各実行で読み取り、送信先テーブルを上書きします。

増分同期

増分同期では、GitHubのsinceパラメーターをカーソルとして使用し、前回の正常な実行以降に作成または更新されたとGitHubが報告するレコードのみを抽出します。 IssueIssueCommentCommitReviewCommentのみが増分同期をサポートします。 IssueLabelWorkflowRunJobなど、親オブジェクトと一緒に同期されるオブジェクトを含むその他のすべてのオブジェクトは、常に完全同期されます。

削除追跡

Workatoは各完全同期を前回の実行と比較し、GitHubに存在しなくなったレコードを送信先で削除済みとしてマークします。 これはすべての完全同期オブジェクトに適用されます。

GitHubのsinceパラメーターは削除を報告しないため、IssueIssueCommentCommitReviewCommentは増分同期中に削除を追跡しません。 これらのオブジェクトについては、完全同期を実行するまで、GitHubで削除されたレコードは送信先に残ります。 詳細については、増分オブジェクトは削除を追跡しませんを参照してください。

スキーマとデータ型の処理

GitHubからデータを同期する場合、スキーマとデータ型について次の考慮事項が適用されます。

ネストされたフィールド

GitHubのレスポンスには、プルリクエストのbaseおよびheadブランチ参照や、コミットの未加工のcommitメタデータなど、ネストされたオブジェクトと配列が含まれます。 Workatoはこれらを個別の列にフラット化するのではなく、JSON文字列列として保存します。

カスタムプロパティは同期されません

GitHub Enterprise CloudとGitHub Enterprise Serverは、リポジトリレベルのカスタムプロパティをサポートしています。 Workatoは、このリリースではカスタムプロパティを同期しません。 各オブジェクトに一覧表示されている標準フィールドのみが利用可能です。

機密データの処理

GitHubオブジェクトには、個人を特定できる情報(PII)が含まれる場合があります。 次のオブジェクトには、一般的に機密フィールドが含まれます:

オブジェクト機密フィールド
Commitcommit.author.name, commit.author.email, commit.committer.name, commit.committer.email
Issueuser.login, body, assignees
IssueCommentuser.login, body
PullRequestuser.login, body, head.label, merge_commit_sha
ReviewCommentuser.login, body
ユーザーlogin, name, email, avatar_url
コラボレータlogin, email

IssueIssueCommentPullRequestReviewCommentbodyフィールドは自由記述テキストです。 コントリビューターは、課題の説明、プルリクエストの説明、コメントにアカウント情報、認証情報、その他の顧客データを貼り付ける可能性があるため、これらのフィールドは最もリスクが高くなります。

パイプライン設定中にフィールドレベルのデータ保護でHashオプションを使用し、PIIが宛先に到達する前に保護します。 詳細については、パイプラインを構成手順を参照してください。

制限事項

GitHubをデータパイプラインソースとして使用する場合、次の制限事項が適用されます。

増分オブジェクトは削除を追跡しません

IssueIssueCommentCommitReviewCommentは、GitHubのsinceパラメーターを使用して増分同期されますが、このパラメーターは削除を報告しません。 これらのオブジェクトについては、完全同期を実行するまで、GitHubで削除されたレコードは送信先に残ります。 詳細については、削除追跡を参照してください。

特定のリポジトリに絞り込むことはできません

パイプラインは、選択した組織内でコネクションがアクセスできるすべてのリポジトリを同期します。 個々のリポジトリを含めたり除外したりすることはできません。 組織に属していない個人リポジトリは同期されません。

高ボリュームオブジェクトには慎重な同期計画が必要

CommitFileオブジェクトとBranchCommitRelationオブジェクトは、大量のレコードを生成する可能性があります。 CommitFileでは、ファイルレベルの差分データを取得するためにコミットごとに1回のAPI呼び出しが必要であり、一括エンドポイントはありません。

Dependabotアラートにはリポジトリと権限の設定が必要

SecurityAlertオブジェクトは、Dependabotセキュリティアラートを同期します。 Dependabotが無効化されているリポジトリでは行を返さず、コネクションに必要な権限がない場合はそのオブジェクトの同期が失敗します。 付与する必要があるスコープについては、必要な権限を参照してください。

GitHub Enterprise Serverのバージョン差異

GitHub Enterprise Serverは、GitHub.comより複数のバージョン遅れている場合があります。 GitHub.comで利用可能な一部のオブジェクトとフィールドは、アップグレードするまでGitHub Enterprise Serverインスタンスで利用できない場合があります。

最小同期頻度

サポートされる最小同期間隔は15分です。 これより高い頻度で同期をトリガーすることはできません。

最終更新日: