Azure DevOps Server を GitHub に接続する (オンプレミス)
Azure DevOps Server 2022 | Azure DevOps Server 2020 | Azure DevOps Server 2019
Azure DevOps Server プロジェクトを GitHub リポジトリに接続することで、GitHub のコミットと pull request を作業項目にリンクできます。 ソフトウェアの開発に GitHub を使用し、Azure Boards をご自分の作業の計画と追跡に使用できます。
Note
オンプレミスの Azure DevOps Server 2020 では、GitHub.com および GitHub Enterprise Server のリポジトリとの統合がサポートされています。 Azure DevOps Services から接続する場合は、「Azure Boards と GitHub の接続」を参照してください。
Azure DevOps Server プロジェクトを GitHub Enterprise Server リポジトリと接続することで、GitHub のコミットと pull request を作業項目にリンクできます。 ソフトウェアの開発に GitHub Enterprise を使用し、Azure Boards をご自分の作業の計画と追跡に使用できます。
注意
オンプレミスの Azure DevOps Server 2019 では、GitHub Enterprise Server リポジトリとの統合がサポートされています。 Azure DevOps Services から接続する場合は、「Azure Boards と GitHub の接続」を参照してください。
前提条件
- GitHub.com のリポジトリに接続するには、Azure DevOps Server 2020.1.1 Patch 2 をインストールする必要があります。 このパッチを適用しない場合は、GitHub Enterprise Server のリポジトリにのみ接続できます。
- GitHub の組織またはアカウントに GitHub 用の Azure Boards アプリをインストールします。
- Azure Boards または Azure DevOps プロジェクトに接続します。 プロジェクトがまだない場合は、作成します。
- プロジェクト コレクション管理者グループと、プロジェクトの共同作成者グループのメンバーである必要があります。 自分でプロジェクトを作成した場合は、アクセス許可を持っています。
- 接続先の GitHub Enterprise Server の管理者である必要があります。
認証オプション
次の認証オプションがサポートされています。
Note
OAuth は、Azure DevOps Server 2020 ではサポートされていません。
GitHub で Azure DevOps を OAuth アプリとして登録する
OAuth を使って Azure DevOps Server を GitHub Enterprise Server に接続する予定の場合は、まずアプリケーションを OAuth アプリとして登録する必要があります。 詳細については、「OAuth アプリの作成」を参照してください。
Azure DevOps Server を登録する
GitHub Enterprise サーバーの Web ポータルにサインインします。
[設定]>[開発者の設定]>[Oauth アプリ]>[新しい OAuth アプリ] の順に選択します。
Azure DevOps Server アプリケーションを登録するための情報を入力します。
[ホームページ URL] には、プロジェクト コレクションのパブリック URL を指定します。 この URL を確認するには、Azure DevOps 管理コンソールを開き、[アプリケーション層] ノードを表示します。
[認可コールバック URL] には、次のパターンを使って URL を作成します。
{Azure DevOps Server Public Url}/{Collection Name}/_admin/oauth2/callback
次に例を示します。
http://contoso/DefaultCollection/_admin/oauth2/callback
https://tfs.contoso.com/MyCollection/_admin/oauth2/callback
[アプリケーションの登録] を選択します。
登録した OAuth アプリケーションの [クライアント ID] と [クライアント シークレット] を示すページが表示されます。
Azure DevOps Server で OAuth 構成を登録する
Azure DevOps Server の Web ポータルにサインインします。
GitHub Enterprise の Oauth 構成を Azure DevOps Server コレクションに追加します。
[管理設]>[Oauth 構成]>[Oauth 構成の追加] の順に選択します。
プロジェクト情報を入力し、[作成]を選択します。
Azure DevOps Server を GitHub Enterprise Server に接続する
250 以上の GitHub リポジトリを Azure Boards プロジェクトに接続することができます。
注意
100 を超える GitHub リポジトリに接続するには、Azure DevOps Server 2020.1 アップデート以降のバージョンが必要です。
GitHub.com のリポジトリに接続するには、Azure DevOps Server 2020.1.1 Patch 2 以降のバージョンが必要です。
100 以上の GitHub リポジトリを Azure Boards プロジェクトに接続することができます。 この制限は変更できません。
Azure DevOps Server の Web ポータルを開きます。
Azure DevOps のロゴを選択して [プロジェクト] を開き、GitHub Enterprise リポジトリに接続するように構成する Azure Boards プロジェクトを選択します。
[プロジェクトの設定]>[GitHub 接続] の順に選択します。
プロジェクトから初めて接続する場合は、接続を確立するために使用する認証方法を選択します。
- 個人用アクセス トークンについて詳しくは、個人用アクセス トークンを使った接続に関する記事を参照してください。
- ユーザー名とパスワードについては、ユーザー名とパスワードを使った接続に関する記事を参照してください。
それ以外の場合は、[新しい接続] を選択し、[新しい接続] ダイアログから認証方法を選択します。
[プロジェクト設定]>[GitHub 接続]>[GitHub Enterprise アカウントを接続する] の順に選択します。
または、個人用アクセス トークンまたはユーザー名とパスワードの資格情報を使う場合は、それらを選択します。
個人用アクセス トークンを使用して接続する
PAT を作成するには、個人用アクセス トークンの作成に関するページを参照してください。
ヒント
GitHub PAT を作成するときは、
repo, admin:repo_hook, read:user, user:email
のスコープが含まれていることを確認してください。GitHub Enterprise サーバーの URL と、そのサーバーによって認識される個人用アクセス トークン資格情報を入力します。 次に、 [接続] を選択します。
ユーザー名とパスワードで接続
- GitHub Enterprise サーバーの URL と、そのサーバーによって認識される管理者アカウントの資格情報を入力します。 次に、[接続] を選択します。
ダイアログには、GitHub 管理権限を持つすべてのリポジトリが一覧表示されます。 [自分のもの] と [すべて] を切り替えると、その他を表示するかどうかを決定できます。その後、追加したいものをチェックします。 終わったら [保存] を選択します。
初めて Azure Boards から GitHub アカウントまたは組織に接続する場合は、GitHub 用の Azure Boards アプリもインストールします。 「接続を確認する」に記載されている手順に従って、統合を完了します。
接続に関する問題の解決
Azure Boards と GitHub の統合では、接続をサポートするためにさまざまな認証プロトコルに依存しています。 ユーザーのアクセス許可のスコープまたは認証の資格情報を変更すると、Azure Boards に接続されている GitHub リポジトリが失効する可能性があります。
GitHub 用の Azure Boards アプリがサポートする統合の概要については、Azure Boards と GitHub の統合に関する記事をご覧ください。
サポートされている認証オプション
接続先の GitHub プラットフォームに基づいて、次の認証オプションがサポートされています。
プラットフォーム
GitHub.com
GitHub Enterprise Server
Azure DevOps Services
- GitHub.com ユーザー アカウント
- 個人用アクセス トークン (PAT)
- OAuth
- PAT
- ユーザー名とパスワード
Azure DevOps Server 2020
適用なし
- PAT
- ユーザー名とパスワード
Azure DevOps Server 2019
適用なし
- OAuth
- PAT
- ユーザー名とパスワード
Note
GitHub 用の Azure Boards アプリを使用することで、Azure Boards と Azure DevOps Services が GitHub.com および GitHub Enterprise Server リポジトリと統合されます。 Azure DevOps Server 2019 以降のバージョンは、GitHub Enterprise Server リポジトリとの統合のみをサポートしています。 他の Git リポジトリとの統合はサポートされていません。
アクセスの問題を解決する
GitHub への Azure Boards の接続にアクセスできなくなると、ユーザー インターフェイスに赤色の X でアラート状態が示されます。 アラートをポイントすると、資格情報が無効になっていることが示されます。 この問題を解決するには、接続を削除して、新しい接続を作成し直します。
GitHub への Azure Boards の接続にアクセスできなくなると、ユーザー インターフェイスに赤色の X でアラート状態が示され、"GitHub に接続できません" のようなツールヒントが表示されます。
次の解決策を検討してください。
接続で OAuth を使っている場合:
Azure Boards アプリケーションで、いずれかのリポジトリに対するアクセスが拒否されました。
GitHub が利用できないか、到達できない可能性があります。 このように利用できなくなるのは、サービスの停止またはオンプレミスのインフラストラクチャやネットワークの問題が原因である可能性があります。 サービスの状態は、次のリンクからチェックできます。
GitHub リポジトリへの接続を削除して作成し直します。 接続を作成し直すと、GitHub で Azure Boards の再認証を求めるメッセージが表示されます。
接続で PAT を使っている場合:
PAT が取り消されたか、必要なアクセス許可スコープが変更されて不十分である可能性があります。
ユーザーが、GitHub リポジトリに対する管理者アクセス許可を失っている可能性があります。
PAT を作成し直し、トークンのスコープに必要なアクセス許可 (
repo, read:user, user:email, admin:repo_hook
) が含まれていることを確認します。
選択した作業項目の種類の XML 定義を更新する
組織でホストされた XML またはオンプレミス XML のプロセス モデルを使って作業追跡エクスペリエンスをカスタマイズしている場合、作業項目フォームの [開発] セクションから GitHub リンクの種類にリンクして表示するときは、作業項目の種類の XML 定義を更新する必要があります。
たとえば、Development セクションからユーザー ストーリーやバグを GitHub のコミットや pull request にリンクする場合は、ユーザー ストーリーとバグの XML 定義を更新する必要があります。
「ホストされた XML プロセス モデル」で提供されている一連のタスクに従って、XML 定義を更新してください。 外部リンクの種類 (GitHub Commit と GitHub Pull Request) をサポートするには、作業項目の種類ごとに、Group Label="Development"
セクションを見つけて、次のコード構文の 2 行を追加します。
<ExternalLinkFilter Type="GitHub Pull Request" />
<ExternalLinkFilter Type="GitHub Commit" />
更新すると、セクションは次のように表示されるはずです。
<Group Label="Development">
<Control Type="LinksControl" Name="Development">
<LinksControlOptions ViewMode="Dynamic" ZeroDataExperience="Development" ShowCallToAction="true">
<ListViewOptions GroupLinks="false">
</ListViewOptions>
<LinkFilters>
<ExternalLinkFilter Type="Build" />
<ExternalLinkFilter Type="Integrated in build" />
<ExternalLinkFilter Type="Pull Request" />
<ExternalLinkFilter Type="Branch" />
<ExternalLinkFilter Type="Fixed in Commit" />
<ExternalLinkFilter Type="Fixed in Changeset" />
<ExternalLinkFilter Type="Source Code File" />
<ExternalLinkFilter Type="Found in build" />
<ExternalLinkFilter Type="GitHub Pull Request" />
<ExternalLinkFilter Type="GitHub Commit" />
</LinkFilters>
</LinksControlOptions>
</Control>
</Group>