DevOps チェンジベロシティへのオンボードGitHubワークスペース

  • リリースバージョン: Xanadu
  • 更新日 2024年08月01日
  • 所要時間:12分
  • DevOps 変更ワークスペースプレイブックを使用して GitHub インスタンスに接続し、リポジトリ、計画、パイプラインを検出、構成、インポートします。

    始める前に

    DevOps チェンジベロシティの開始トピックで指定されたタスクを完了します。

    必要なロール:sn_devops.admin または sn_devops.tool_owner

    手順

    1. 移動先 ワークスペース > DevOps 変更ワークスペース をクリックし、次のいずれかのオプションを使用してプレイブックを開き、 GitHubオンボーディングします。
      オプションステップ
      ホームページ
      1. [ ツールを接続] を選択します。
      2. [ツールに接続] モーダルで、適切なカテゴリ (オーケストレーション、コード、プラン、またはソフトウェア品質) からツールを選択します。たとえば、コーディングツールとして GitHub に接続する場合は、[ コーディングツール ] カテゴリを選択します。
      アプリケーションモジュール
      1. プライマリナビゲーションから [アプリケーション ] (アプリケーションアイコン) を選択します。
      2. 既存のアプリケーションを選択するか、アプリケーションを作成します。アプリケーションを作成するには、「 アプリケーションの作成 - ワークスペース」を参照してください。
      3. [推奨アクション] ペインから、[ ツールの接続 ] カードを選択します。
      4. [ツールに接続] モーダルで、適切なカテゴリからツールを選択します。たとえば、コーディングツールとしてGitHubに接続する場合は、[コード] カテゴリで [GitHub] を選択します。
      ツールモジュール
      1. プライマリナビゲーションから [ツール ] ([ツール] アイコン) を選択します。
      2. [機能] リストから、適切なカテゴリを選択します。たとえば、コーディングツールとして GitHub に接続する場合は、 コーディング カテゴリを選択します。
      3. [ ツールを接続] を選択します。
      4. [ツールに接続] モーダルで、[ GitHub] を選択します。
      重要:
      ツールへの接続中にパイプライン、計画、リポジトリなどのツールオブジェクトを検出して追跡する場合は、アプリケーションモジュールからツールを接続する必要があります。
    2. [ツール名] フィールドに、ツールの名前を入力します。

      GitHub に接続

    3. [Next (次へ)] をクリックします。

      オンボーディングタスクを完了するのに役立つ DevOps プレイブックが開きます。

    4. プレイブックを使用して接続と構成を完了します。
      1. [ 認証情報タイプ ] フィールドで、次のいずれかの認証情報タイプを選択します。
        • ベーシック認証
        • 認証コード付き OAuth 2.0
        • JSON Web トークン (JWT) を含む OAuth 2.0
      2. 認証情報を入力します。
        ベーシック認証

        GitHubインスタンスのユーザー名とパスワード/アクセストークンを入力します。

        GitHub 基本認証の認証情報タイプ。

        認証コード付き OAuth 2.0

        既存の認証コード付き OAuth 2.0 認証情報レコードを選択するか、認証コード付き OAuth 2.0 認証情報レコードを作成します。詳細については、「GitHubアプリプロバイダー (認証コード) の認証情報レコードを作成します」を参照してください。

        GitHub Oauth 2.0 (認証コード付き) 認証情報タイプ

        注:
        GitHub アプリを使用して接続していて、権限チェックで問題が発生している場合は、GitHub アプリのクライアント ID プレフィックスが DevOps プロパティの GitHub アプリのクライアント ID 指定子で利用可能であることを確認してください。詳細については、「DevOps プロパティにクライアント ID を追加」を参照してください。
        JSON Web トークン (JWT) を含む OAuth 2.0
        JWT で OAuth 2.0 を使用して接続するには、最初に次を実行する必要があります。
        前提条件を満たしたら、 DevOps チェンジベロシティ コネクトプレイブックアクティビティを続行できます。
        1. 既存の JWT 認証情報レコードを使用する場合は、[既存の JWT 認証情報レコードを使用 ] オプションを選択します。このオプションが選択されていない場合は、新しい JWT 認証情報レコードを作成するフィールドが表示されます。次の手順に進みます。
        2. [ JKS 証明書 ] フィールドで、既存の JKS 証明書を選択します。これは、JWT プロバイダーを一意に識別するために入力した名前です。JKS 証明書は、シェルコマンドを使用して作成され、sys_certificateレコードを作成します。

          詳細については、「GitHub JKS 証明書の JWT 署名キーの作成」を参照してください。

        3. [ 署名キー] フィールドに、JKS 証明書に割り当てる署名キーを入力します。JKS 証明書の生成時に入力したエクスポートパスワードです。
        4. [GitHub アプリ ID] フィールドで、GitHub アプリのアプリ ID を選択します (GitHub の GitHub アプリ構成の [関連情報] セクションで利用可能)。次の画像は、GitHub アプリ ID、クライアント ID、クライアントシークレットにアクセスできる GitHub アプリ構成の [関連情報] セクションの例を示しています。

          GitHub アプリの [概要] ページ。

        5. [ クライアント ID ] フィールドで、GitHub アプリのクライアント ID を選択します (GitHub の GitHub アプリ構成の [関連情報] セクションで利用可能)。
        6. [ クライアント シークレット ] フィールドで、GitHub アプリのクライアント シークレット (GitHub の GitHub アプリ構成の [バージョン情報] セクションで利用可能) を選択します。
        7. [ トークン URL ] フィールドで、インスタンスがトークンを取得および更新するために使用するトークンエンドポイントの場所を選択します。

          クラウドバージョンの場合は、「 https://api.github.com/app/installations/<installation_id>/access_tokens」と入力します。

          Enterprise バージョンの場合は、「 https://<HOST_URL>/api/v3/app/installations/<installation_id>/access_tokens」と入力します。

          インストール ID については、GitHub の GitHub アプリ構成の [アプリのインストール] セクションに移動し、歯車アイコンを選択してアプリを構成します。インストール ID は Web ページの URL に含まれます。たとえば、https://github.com/settings/installations/<installation_id> などです。

          GitHub Oauth 2.0 と JWT 認証情報タイプ。

        OAuth 認証情報が GitHub Apps - JWT を使用して作成されている場合、ツールレコードページで [GitHub App で構成 ] オプションが利用可能になります。

        注:
        GitHub アプリを使用して接続していて、権限チェックで問題が発生している場合は、GitHub アプリのクライアント ID プレフィックスが DevOps プロパティの GitHub アプリのクライアント ID 指定子で利用可能であることを確認してください。詳細については、「DevOps プロパティにクライアント ID を追加」を参照してください。

        OAuth2.0 認証情報の詳細については、「 の GitHub OAuth 2.0 認証情報の設定 DevOps チェンジベロシティ」を参照してください。

      3. オプション: GitHub アプリを使用して Oauth 2.0 認証情報を作成した場合は、GitHub アプリのスラッグ名 フィールドに値を入力して、接続する前にツールの権限要件を確認します。
        アプリのスラッグ名は、アプリの設定ページで確認できます。
      4. オプション: GitHubインスタンスがMID サーバーに接続されている場合は、[MID サーバー] オプションを選択して、その詳細を入力します。

        MID サーバーの詳細については、「 MID サーバーの選択」を参照してください。

        注:
        GitHub Enterprise Server (オンプレミスインスタンス) の場合、MID サーバーを使用して接続している場合、OAuth はサポートされません。
      5. [接続] を選択します。

        GitHub を DevOps チェンジベロシティに接続します。

      6. 入力した認証情報に対して権限チェックが実行されます。

        必要な権限と利用可能な権限が表示されます。より適切なアクセス許可を持つ資格情報を入力する場合は、 [ 資格情報の再入力] を選択します。必要なすべての権限の詳細については、「DevOpsツールに必要な権限GitHub権限」を参照してください。

        OAuth 2.0 では、 GitHub アプリのスラッグ名を入力していない場合、権限要件を確認せずにツールが接続されます。

      7. [Next (次へ)] をクリックします。

        権限確認

    5. ツールのアクセス権を指定します。
      1. ツールへのアクセスを制御する場合は、ツールへのアクセス権を付与する必要があるグループを [保守担当者 ] フィールドに追加します。
        グループ内のこれらのユーザーが実行できるタスクは、割り当てられたロールによって異なります。
        • DevOps ツールオーナーロール:ツールを表示および編集できます。
        • DevOps アプリオーナーロール:ツールを表示し、ツールのオブジェクト (プラン、リポジトリ、パイプラインなど) の関連付け、検出、履歴データのインポート、パイプラインステップの変更 (該当する場合) を実行できます。
        • DevOps 管理者ロール:すべてのツールを編集できます。
        • その他の DevOps ロール:ツールを表示できます。
        注:
        グループを選択せずにこの手順をスキップすると、 DevOps ツールオーナーロールを持つすべてのユーザーがツールを編集できます。
      2. ツールへのアクセスを制御することを選択した場合は、[ すべてのアプリ所有者がツールオブジェクトを表示してアプリケーションに関連付けることができる ]オプションを選択できるようになります。

        このオプションを使用すると、 DevOps アプリオーナーロールを持つすべてのユーザーがツールにアクセスできます。選択すると、ツールのオブジェクトの表示、関連付け、検出、履歴データのインポート、およびパイプライン ステップの変更 (該当する場合) が可能になります。

      3. [アサイン] を選択します。

      ツールアクセスを指定

    6. GitHub インスタンスで Webhook を自動的に構成して、DevOps チェンジベロシティ にデータを送信します。
      このアクションにより、次の Webhook が構成されます。
      • push:リポジトリのコミット、ブランチ、およびタグを収集します
      • workflow_job:パイプラインデータを収集します
      • issues:問題 (作業アイテム) データを収集するため
      注:
      リアルタイム通知は、特に変更要求を自動化する場合に最新の情報を維持するのに理想的であるため、このタスクの一部として構成を完了することをお勧めします。それ以外の場合は、 Enable Polling プロパティを [はい] に設定して、夜間ポーリングを有効にして追跡対象のリポジトリまたはパイプラインのデータシステムをフェッチすることで、後で手動で構成することで Webhook を設定できます。

      Webhook を構成するリポジトリを選択し、 [ 構成] を選択します。

      GitHub から構成するリポジトリを選択します。

      手動で構成するには、 [ 手動構成] を選択します。詳細については、「GitHub での Webhook の手動構成」を参照してください。

      重要:
      • ホームページまたはツールモジュールから接続している場合は、接続が完了し、[概要] ページに移動します。
      • アプリケーションモジュールから接続している場合は、利用可能なリポジトリとパイプラインが検出されます。それらから履歴データを追跡してインポートできます。
    7. 追跡する計画を選択します。
      1. 更新を追跡してアプリケーションに関連付ける計画を選択します。

        ツールのオンボーディングが完了すると、選択したこれらの計画の作業アイテムのみが自動的にインポートされます。

      2. [Next (次へ)] をクリックします。

        計画の追跡プレイブックステップ

    8. 追跡するリポジトリを選択します。
      1. 更新を追跡してアプリケーションに関連付けるリポジトリを選択します。
      2. [Next (次へ)] をクリックします。

        追跡するリポジトリを選択します。

      3. リポジトリ データをインポートする場合は、日付範囲を選択して [送信] を選択します。

        最大 90 日分のデータをインポートできます。リポジトリに関連付けられているワークフローもインポートされます。

    9. 追跡するパイプラインを選択します。
      1. 更新を追跡し、アプリケーションに関連付けるパイプラインを選択します。

      2. [Next (次へ)] をクリックします。

      3. 選択したパイプラインごとに、最後に成功した実行のすべてのステップまたはステージがインポートされます。[パイプラインステップにサービスをアサイン] アクティビティでは、各パイプラインステップに対して以下を選択できます。
        1. パイプラインステップタイプ:サービスを割り当てるステップタイプを選択します。

          ヒント:
          本番展開を表すステップには少なくとも Prod deploy ステップタイプを指定して、成功したパイプライン実行を本番展開として識別できるように DevOps します。
        2. サービス:パイプラインステップがマップされる CMDB アプリケーションサービスを選択します。

          アプリケーションサービスは環境に近似的にマッピングされます。同じパイプラインステップを使用して異なる環境に展開する場合は、フィールドを空のままにします。サービス情報により、 DevOps インシデントや機能停止などの運用評価指標を識別してレポートすることができます。

      4. [Next (次へ)] をクリックします。

        GitHub からパイプラインにサービスをアサインします。

    10. [概要] ページで [ツール レコードの表示] を選択して、接続されている GitHub ツールの詳細を確認します。

      接続サマリー

      GitHub Actionsパイプラインの場合は、シークレットの作成、GitHub でのワークフロー構成の定義など、いくつかの追加手順を実行する必要があります。詳細については、「GitHub Actions構成」を参照してください。

    タスクの結果

    GitHub ツールが正常にオンボーディングされてDevOps チェンジベロシティされました。

    次のタスク

    GitHub ツールがオンボーディングされた後でも、計画を手動で検出できます。GitHub には計画エンティティがないため、ServiceNow で対応する計画レコードを検出するためにリポジトリが検討されます。

    1. ツールレコードページから、 [検出 ] を選択して計画を検出します。
    2. [構成] を選択します。計画が追跡され、作業アイテムのリアルタイム通知を送信する issues と呼ばれる Webhook が作成されます。
    対応する問題が GitHub で更新されると、ServiceNow の作業アイテムの次の情報が更新されます。
    • 問題のタイトルの変更
    • アサイニーの更新
    • 転送の問題
      注:
      課題が転送されると、転送元のリポジトリで同じ課題が転送済みとしてマークされ、転送先のリポジトリで開かれます。
    • 問題を削除
      注:
      GitHub で問題が削除されても、対応する作業アイテムは ServiceNow で削除されませんが、作業アイテムのステータスは削除済みとしてマークされます。

    アップグレードするお客様の場合は、定期的に検出するスケジュール済みジョブまたは手動検出を通じて、リポジトリの計画が検出されます。計画が検出されたら、 sn_devops.track.github.issues プロパティを有効にして以前に構成したすべてのリポジトリを一度に再構成し、すべての計画が追跡され、作業アイテムの問題 Webhook が作成されるようにすることができます。

    注:
    計画の履歴インポートはサポートされていません。