GitHubをデータパイプラインソースとして設定
GitHub REST APIおよびGraphQL APIからリポジトリ、Issue、プルリクエスト、コミット、関連するDevelopmentレコードを抽出し、送信先に同期するために、GitHubをデータパイプラインソースとして設定します。お使いの送信先に同期します。
このガイドでは、機能と前提条件の確認、GitHubのデータパイプラインソースとしての接続、パイプラインの設定、サポート対象オブジェクト、同期モード、スキーマ処理、機密データ処理、制限事項について説明します。
サポートされている機能
GitHubをパイプラインソースとして使用する場合、次の機能がサポートされます。
- クラウドおよびセルフホスト接続:https経由でGitHub.comおよびGitHub Enterprise Cloudに接続します。 セルフホスト型のGitHub Enterprise Serverインスタンスに接続するには、コネクションをオンプレミスエージェント経由でルーティングします。
- 組織スコープの同期:パイプラインを設定するときに、1つ以上のGitHub組織を選択します。 Workatoは、コネクションがアクセスできるそれらの組織内のすべてのリポジトリを同期します。
- オブジェクトレベルの選択:同期するオブジェクトを、送信先の個別のテーブルとして選択します。 完全なリストについては、サポートされているオブジェクトを参照してください。
- 完全同期と増分同期:
Issue、IssueComment、Commit、ReviewCommentオブジェクトは、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オブジェクト |
|---|---|---|---|
| リポジトリのコンテンツとメタデータ | repo | Contents:読み取り専用、Metadata:読み取り専用 | Repository, Branch, BranchCommitRelation, Tag, Commit, CommitComment, CommitFile, RepositoryTopic, RepositoryLanguage |
| 課題 | repo | Issues:読み取り専用 | Issue, IssueComment, IssueLabel, IssueAssignee, IssueEvent, Label, Milestone |
| プルリクエスト | repo | Pull requests:読み取り専用 | PullRequest, PullRequestCommit, PullRequestReview, ReviewComment, RequestedReviewerHistory |
| アクション | repo | Actions:読み取り専用 | Workflow, WorkflowRun, WorkflowRunJob, CommitStatus |
| Actionsチェック実行 | repo | Actions:読み取り専用、さらにChecks:読み取り専用 | CommitCheckRun |
| デプロイメント | repo | Deployments:読み取り専用 | Deployment, DeploymentStatus |
| 組織メンバーとチーム | read:org | Members:読み取り専用(組織レベル) | Team, TeamMember, RepositoryTeam, User, Collaborator |
| アカウントID | read:user | 該当なし | コネクションチェックにのみ必要 |
| Dependabotアラート | security_events | Dependabot 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に接続するには、次の手順を実行します:
Workatoアカウントにサインインし、GitHubコネクションを追加する予定のプロジェクトに移動します。
作成 > コネクションをクリックするか(またはCを2回押す)、GitHubをコネクションとして選択します。
Workatoが接続されているGitHubインスタンスを識別するコネクション名を指定します。
ロケーションドロップダウンメニューを使用して、コネクションを保存するプロジェクトを選択します。
Authentication type(認証タイプ)ドロップダウンメニューを使用し、OAuth Appを選択します。
任意です。 Advanced configurationをクリックして、Host nameフィールドを表示します。
任意です。 Host nameを入力します。 これはGitHub Enterprise Serverを使用する場合に適用されます。 GitHubサブドメインを入力します。 たとえば、ホストURLがhttps://github.example-organisation.comの場合、サブドメインはgithub.example-organisation.comです。
接続をクリックします。 WorkatoはユーザーをGitHubにリダイレクトします。 OAuth AppがGitHubアカウントへのアクセス許可をリクエストします。
Personal access token認証
personal access tokenを使用してGitHubアカウントをWorkatoに接続するには、GitHubからpersonal access tokenを取得します:
個人アクセストークンを取得
Github account > Settings > Developer settings > Personal access tokens > Generate new tokenに移動します。
Generate new token(新しいトークンを生成)をクリックします。
トークンをコピーします。 コネクションを認証するには、このトークンをWorkatoに入力します。
Workatoでセットアップを完了する
パーソナルアクセストークンを使用してGitHubコネクションを設定するには、次の手順を実行します:
Workatoアカウントにサインインし、GitHubコネクションを追加する予定のプロジェクトに移動します。
作成 > コネクションをクリックするか(またはCを2回押す)、GitHubをコネクションとして選択します。
Workatoが接続されているGitHubインスタンスを識別するコネクション名を指定します。
ロケーションドロップダウンメニューを使用して、コネクションを保存するプロジェクトを選択します。
Authentication typeドロップダウンメニューを使用して、Personal Access Tokenを選択します。
任意です。 Advanced configurationをクリックして、Host nameフィールドを表示します。
任意です。 Host nameを入力します。 これはGitHub Enterprise Serverを使用する場合に適用されます。 GitHubサブドメインを入力します。 たとえば、ホストURLがhttps://github.example-organisation.comの場合、サブドメインはgithub.example-organisation.comです。
Personal Access Tokenを入力します。
任意です。 Custom OAuth profileを入力します。 これにより、アプリへのすべてのリクエストで指定したプロファイルが使用されます。
接続をクリックします。
パイプラインの設定
GitHubをデータパイプラインソースとして設定するには、次の手順を完了します。
作成 > データパイプラインを選択します。
データパイプライン名フィールドにデータパイプラインの名前を入力します。
データパイプライン設定
ロケーションドロップダウンメニューを使用して、データパイプラインを保存するプロジェクトを選択します。
ビルドを開始をクリックします。
ソースアプリから新規/更新済みレコードを抽出トリガーをクリックします。 このトリガーは、パイプラインがGitHubからデータを取得する方法を定義します。
ソースアプリから新規/更新済みレコードを抽出トリガーを設定
Your Connected Source Apps(接続済みソースアプリ)ドロップダウンメニューを使用してGitHubを選択します。
このパイプラインで使用するGitHubコネクションを選択します。 または、+ 新規コネクションをクリックして新しいコネクションを作成します。
1つ以上のGitHub組織ログインをカンマ区切りでOrganizations(組織)フィールドに入力します。 Workatoは、これらの組織内でコネクションがアクセスできるリポジトリのみを同期し、ここで入力した組織を超えてスコープを拡張しません。
オブジェクトを追加をクリックして、新しいオブジェクトを追加パネルを開きます。
オブジェクトを追加
利用可能なGitHubオブジェクトのリストを検索または参照し、同期するオブジェクトを選択して、Add(追加)をクリックします。
高ボリュームオブジェクト
CommitFileオブジェクトとBranchCommitRelationオブジェクトは、各同期でコミットレベルのデータを完全に再読み取りするため、コミット履歴が長いリポジトリでは非常に多数の行が生成される可能性があります。 いずれかのオブジェクトを追加する前に、高ボリュームオブジェクトには慎重な同期計画が必要を参照してください。
選択した各オブジェクトのスキーマを確認してカスタマイズします。 パイプラインは、選択時にオブジェクトのスキーマを自動的に取得し、宛先がソースと一致するようにします。
任意のオブジェクトを展開して、そのフィールドを表示します。 使用可能なすべてのデータを抽出するにはすべてのフィールドを選択したままにし、データ抽出とスキーマレプリケーションから除外するには特定のフィールドの選択を解除します。
任意です。 オブジェクトを展開し、各フィールドの処理方法を選択して、フィールドレベルのデータ保護を設定します。
- そのまま複製: ソースのデータ値が宛先に同一に複製されます。
- ハッシュ: 宛先に同期する前に、フィールド内の機密データ値をハッシュ化します。
Workatoでは、個人を特定できる情報(PII)やその他の機密フィールドをハッシュ化することを推奨します。 PIIが一般的に含まれるフィールドのリストについては、機密データの処理を参照してください。
さらにオブジェクトを追加するには、もう一度オブジェクトを追加をクリックします。 この手順を繰り返して、パイプラインに追加のGitHubオブジェクトを含めます。
スキーマ変更の処理方法を選択ドロップダウンメニューを使用して、スキーマドリフトの処理オプションを選択します。
- 新しいフィールドを自動同期: ソースに追加された新しいフィールドを自動的に検出して同期します。
- 新しいフィールドをブロック: パイプラインの開始後、スキーマを固定します。 新しいフィールドは手動で追加する必要があります。
任意です。 同時操作数を制限するには、同時実行制限フィールドに値を入力します。 Workatoによって設定されたデフォルトのクォータを使用するには、このフィールドを空白のままにします。 値はWorkatoのデフォルトクォータである100を超えることはできません。
パイプラインがGitHubから送信先にデータを同期する頻度を、Frequency(頻度)フィールドで設定します。 標準の時間ベースのスケジュールを選択するか、カスタムcron式を定義します。
サポートされるオブジェクト
GitHubデータパイプラインは、GitHub REST APIからデータを同期し、プルリクエストレビューとリリースについてはGraphQL APIからデータを同期します。 次の表は、サポートされているオブジェクトをカテゴリ別に示しています。 各オブジェクトは、送信先で個別のテーブルとして同期されます。
組織、リポジトリ、アクセス
| オブジェクト | 同期モード | 削除追跡 |
|---|---|---|
Repository | Full sync | はい |
Team | Full sync | はい |
TeamMember | 親Teamオブジェクトと同期されます | はい |
RepositoryTeam | Full sync | はい |
ユーザー | Full sync | はい |
コラボレータ | Full sync | はい |
課題とプルリクエスト
GitHubは、同じエンドポイントから課題とプルリクエストを返します。 Workatoは、各レコードのpull_requestフィールドを確認して両者を区別するため、Issueオブジェクトではプルリクエストの形をした行が除外されます。
| オブジェクト | 同期モード | 削除追跡 |
|---|---|---|
Issue | 完全同期、増分 | いいえ |
IssueComment | 完全同期、増分 | いいえ |
IssueLabel | 親Issueオブジェクトと同期されます | いいえ |
IssueAssignee | 親Issueオブジェクトと同期されます | いいえ |
IssueEvent | Full sync | はい |
ラベル | Full sync | はい |
Milestone | Full sync | はい |
PullRequest | Full sync | はい |
PullRequestCommit | 親PullRequestオブジェクトと同期されます | はい |
PullRequestReview | 親PullRequestオブジェクトと同期されます | はい |
ReviewComment | 完全同期、増分 | いいえ |
RequestedReviewerHistory | 親PullRequestオブジェクトと同期されます | はい |
コミットとリポジトリコンテンツ
| オブジェクト | 同期モード | 削除追跡 |
|---|---|---|
Commit | 完全同期、増分 | いいえ |
CommitComment | Full sync | はい |
CommitStatus | 親Commitオブジェクトと同期されます | いいえ |
CommitCheckRun | 親Commitオブジェクトと同期されます | いいえ |
Branch | Full sync | はい |
BranchCommitRelation | 親Branchオブジェクトと同期されます | はい |
Tag | Full sync | はい |
RepositoryTopic | 親Repositoryオブジェクトと同期されます | はい |
RepositoryLanguage | 親Repositoryオブジェクトと同期されます | はい |
CommitFile | 親Commitオブジェクトと同期されます | いいえ |
CommitFileとBranchCommitRelationは、オプトインの高ボリュームオブジェクトです。 いずれかのオブジェクトを追加する前に、高ボリュームオブジェクトには慎重な同期計画が必要を参照してください。
CI/CDとリリース
| オブジェクト | 同期モード | 削除追跡 |
|---|---|---|
Workflow | Full sync | はい |
WorkflowRun | Full sync | はい |
WorkflowRunJob | 親WorkflowRunオブジェクトと同期されます | はい |
デプロイメント | Full sync | はい |
DeploymentStatus | 親Deploymentオブジェクトと同期されます | はい |
リリースする | 親Repositoryオブジェクトと同期されます | はい |
エンゲージメントとセキュリティ
| オブジェクト | 同期モード | 削除追跡 |
|---|---|---|
Stargazer | Full sync | はい |
SecurityAlert | Full sync | はい |
SecurityAlertを使用するには、リポジトリでDependabotが有効化され、コネクションに適切な権限が付与されている必要があります。 詳細については、Dependabotアラートにはリポジトリと権限の設定が必要を参照してください。
同期モード
GitHubデータパイプラインは、完全同期と増分同期をサポートします。 各オブジェクトの同期モードを確認するには、サポート対象オブジェクトを参照してください。
フル同期
完全同期では、選択したオブジェクトについてGitHubから利用可能なすべてのレコードを各実行で読み取り、送信先テーブルを上書きします。
増分同期
増分同期では、GitHubのsinceパラメーターをカーソルとして使用し、前回の正常な実行以降に作成または更新されたとGitHubが報告するレコードのみを抽出します。 Issue、IssueComment、Commit、ReviewCommentのみが増分同期をサポートします。 IssueLabelやWorkflowRunJobなど、親オブジェクトと一緒に同期されるオブジェクトを含むその他のすべてのオブジェクトは、常に完全同期されます。
削除追跡
Workatoは各完全同期を前回の実行と比較し、GitHubに存在しなくなったレコードを送信先で削除済みとしてマークします。 これはすべての完全同期オブジェクトに適用されます。
GitHubのsinceパラメーターは削除を報告しないため、Issue、IssueComment、Commit、ReviewCommentは増分同期中に削除を追跡しません。 これらのオブジェクトについては、完全同期を実行するまで、GitHubで削除されたレコードは送信先に残ります。 詳細については、増分オブジェクトは削除を追跡しませんを参照してください。
スキーマとデータ型の処理
GitHubからデータを同期する場合、スキーマとデータ型について次の考慮事項が適用されます。
ネストされたフィールド
GitHubのレスポンスには、プルリクエストのbaseおよびheadブランチ参照や、コミットの未加工のcommitメタデータなど、ネストされたオブジェクトと配列が含まれます。 Workatoはこれらを個別の列にフラット化するのではなく、JSON文字列列として保存します。
カスタムプロパティは同期されません
GitHub Enterprise CloudとGitHub Enterprise Serverは、リポジトリレベルのカスタムプロパティをサポートしています。 Workatoは、このリリースではカスタムプロパティを同期しません。 各オブジェクトに一覧表示されている標準フィールドのみが利用可能です。
機密データの処理
GitHubオブジェクトには、個人を特定できる情報(PII)が含まれる場合があります。 次のオブジェクトには、一般的に機密フィールドが含まれます:
| オブジェクト | 機密フィールド |
|---|---|
Commit | commit.author.name, commit.author.email, commit.committer.name, commit.committer.email |
Issue | user.login, body, assignees |
IssueComment | user.login, body |
PullRequest | user.login, body, head.label, merge_commit_sha |
ReviewComment | user.login, body |
ユーザー | login, name, email, avatar_url |
コラボレータ | login, email |
Issue、IssueComment、PullRequest、ReviewCommentのbodyフィールドは自由記述テキストです。 コントリビューターは、課題の説明、プルリクエストの説明、コメントにアカウント情報、認証情報、その他の顧客データを貼り付ける可能性があるため、これらのフィールドは最もリスクが高くなります。
パイプライン設定中にフィールドレベルのデータ保護でHashオプションを使用し、PIIが宛先に到達する前に保護します。 詳細については、パイプラインを構成手順を参照してください。
制限事項
GitHubをデータパイプラインソースとして使用する場合、次の制限事項が適用されます。
増分オブジェクトは削除を追跡しません
Issue、IssueComment、Commit、ReviewCommentは、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分です。 これより高い頻度で同期をトリガーすることはできません。
最終更新日: