メインコンテンツへスキップ
GitLab を接続すると、Enclave はプロジェクトを読み取り、マージリクエストをレビューし、検証済みの検出結果をコメントできます。GitLab.com と、セルフホスト型の GitLab 14 以降で動作します。

始める前に

  • Enclave で Owner または Admin ロールが必要です。
  • Enclave には、自分が Developer 以上のロールを持つ GitLab グループが一覧表示されます。
  • Webhook を追加するには、各プロジェクトの Maintainer ロール、またはグループの Owner ロールが必要です。グループ Webhook には GitLab Premium または Ultimate が必要です。
  • セルフホスト型 GitLab の場合、アクセストークンには api スコープと Maintainer ロールが必要です。
Webhook がないと、Enclave は新しいコミットやマージリクエストを把握できず、接続は保留中のままになります。

GitLab を接続する

1

インテグレーションを開く

app.enclave.ai で Settings → Integrations を開きます。 GitLab の横にある Connect をクリックします。
2

GitLab を認可する

GitLab.com を選び、GitLab アカウントにサインインして、Enclave アプリケーションを認可します。
GitLab の OAuth では、Enclave に api スコープが付与されます。GitLab には、MR コメントの投稿と Webhook の管理を許可する、これより狭いスコープがありません。Enclave はこのスコープを使って、プロジェクトとマージリクエストの読み取り、MR コメントの投稿、Webhook イベントの受信を行います。
セルフホスト型 GitLab を使っている場合は、 Self-hosted GitLab を選びます。 /api/v4 を除いたインスタンスの URL を入力し、 api スコープと Maintainer ロールを持つアクセストークンを貼り付けます。インスタンスが社内の認証局を使っている場合は、プライベート CA バンドルを追加します。その後、 Validate & connect をクリックします。プランにセルフホスト型 GitLab が含まれていない場合、 Connect をクリックすると直接 GitLab.com に進みます。
3

Webhook を追加する

Enclave に Webhook URL と Secret token が表示されます。両方をコピーします。シークレットは一度しか表示されません。GitLab でプロジェクト(セルフホスト型の場合はグループ)を開き、 Settings → Webhooks に移動します。URL とシークレットトークンを貼り付け、 Push events と Merge request events を有効にして、 Add webhook をクリックします。 Test をクリックすると、テスト配信が送信されます。最初のイベントが届くまで、接続は保留中のままです。
4

MR レビューの対象プロジェクトを選ぶ

自動レビューは、すべての GitLab プロジェクトでデフォルトでオンです。プロジェクトごとにオフにするには、 Coverage → Repositories でそのプロジェクトの PR Reviews スイッチを使います。 PR と依存関係の分析 を参照してください。

ヒント

  • Enclave 専用の GitLab アカウントを作成します。 MR コメントの投稿者が明確になります。セルフホスト型 GitLab では、サービスアカウントのトークンが最適で、次にグループアクセストークンが適しています。個人用トークンも使えますが、すべてのコメントが自分の名前で表示されます。
  • システム内のすべてのプロジェクトを接続します。 Enclave がサービス間の問題を見つけられるのは、サービスとそれが呼び出す API の両方が見える場合だけです。

トラブルシューティング

セルフホスト型 GitLab の場合、 Validate & connect はまず URL とトークンを確認します。
  • Enclave requires GitLab 14 or newer :インスタンスをアップグレードします。
  • GitLab rejected the token または The token must include the ‘api’ scope : api スコープを持つ新しいトークンを発行します。
  • The token authenticated but cannot see any projects :先にトークンをグループまたはプロジェクトに追加します。
  • We refused to call that URL :ホスト名がプライベートまたは内部のアドレスに解決されました。Enclave はそのようなアドレスには接続しません。
  • We could not reach your GitLab instance :URL とファイアウォールのルールを確認します。
セルフホスト型のトークンをローテーションするには、同じインスタンスに新しいトークンでもう一度接続します。Enclave は既存の接続を更新し、Webhook はそのまま動作します。その後、GitLab で古いトークンを取り消します。