Documentation

GitHubリポジトリの設定

DXP Cloudオンボーディングメールを受信すると、 [dxpcloud] 組織でホストされているGitHubリポジトリがプロビジョニングされます。 このリポジトリは、チームの個別のプライベートDXP Cloud開発リポジトリのテンプレートで、通常は10営業日後に削除されます。 ユーザーは以下のことを行う必要があります:

  1. プロビジョニングされたリポジトリを独自のプライベートGitHubリポジトリに転送します。

  2. プライベートリポジトリとDXP CloudのJenkins(CI)サービスをWebhookで連携させます。

注釈

組織のアカウントを使用している場合、リポジトリを組織に転送するには管理者権限が必要です。

リポジトリの転送

次の手順に従って、プロビジョニング済みのリポジトリを独自のGitHubリポジトリに転送します:

  1. 新しいプライベートGitHubリポジトリを作成します。

  2. ローカルで、プロビジョニング済みの dxpcloud リポジトリのクローンを作成します。

  3. 手順2で複製したリポジトリを手順1で作成したリモートリポジトリにプッシュします。

GitHub リポジトリの作成、クローン、プッシュについてのヘルプが必要な場合は、 GitHub's documentation を参照してください。

Jenkinsサービスとの統合

次に、新しいリポジトリをDXP CloudのJenkinsサービスと統合する必要があります。 JenkinsサービスにプッシュするGitHubでWebhookを設定します:

  1. GitHubでは、リポジトリの Settings ページに移動し、 [Webhooks] を選択します。

  2. Webhookの追加] をクリックします。 Webhookの追加 フォームが開きます。

  3. Payload URL フィールドに、DXP Cloud infra 環境のJenkinsサービスのドメインを追加します。 たとえば、 acme というプロジェクトの インフラ 環境の ci サービスのURLは https://ci-acme-infra.lfr.cloud/github-webhook/です。 Jenkins GitHubプラグインと統合するには、相対パス github-webhook が必要です。

  4. Content type セレクターメニューで、 application/json を選択します。

  5. Secret フィールドを空白のままにし、 Enable SSL verification が選択されていることを確認します。

    図1:ペイロードのURLとコンテンツの種類を指定し、SSL検証を有効にする。

  6. このウェブフックをトリガーにしたいイベントはどれですか?] の下にある、 [個々のイベントを選択させてください] を選択してください。 イベントのリストが表示されます。

  7. イベントのリストから [Pushes] と [Pull Requests] を選択します。

    図2:このWebhookのために個別のイベントを選択する必要があります。

    図3:Push、Pull Requestsの選択。

  8. Active] が選択されていることを確認し、 [Add webhook] をクリックします。

    図4:WebhookをActiveに設定し、作成を終了する。

環境変数の設定

新しいリポジトリを指すようにJenkinsサービスの環境変数を設定します:

  1. DXP Cloudコンソールにログインし、 [infra] 環境でJenkinsサービスに移動します。

  2. 環境変数] タブに移動します。

  3. 以下の環境変数を設定します:

名前

lcp_ci_scm_provider

github

lcp_ci_scm_repository_owner

[repo_owner]

lcp_ci_scm_repository_name

[repo_name]

lcp_ci_scm_token

[access_token]

LCP_CI_SCM_TOKEN の値には、GitHub組織用に作成した個人用アクセストークンを使用します。 このトークンの作成とアクセスの手順については、 GitHub's documentation を参照してください。

作成されたパーソナルアクセストークンは、 repoadmin:repo hook 以下のすべてのスコープ権限にチェックが入っている必要があります。リポジトリがDXP Cloudと正常に統合された後、 自動Webフック管理を無効 にすれば、具体的には、 admin:repo hook スコープ権限を後で削除できます。

PATが正常に使用できるように、正しい権限を確認してください。

注釈

SAMLシングルサインオン認証で組織のアカウントを使用している場合は、アクセストークンを認証するために追加の手順を行う必要があります。 詳しくは GitHub公式ドキュメント を参照ください。

これらの環境変数を更新した後、Jenkinsサービスが再起動します。 これで、新しいリポジトリでプッシュされたブランチとプルリクエストがビルドをトリガーします。

注釈

Jenkins の 2.222.1-3.2.0 より前のバージョンでは、代わりに環境変数 GITHUB_REPOSITORYGITHUB_TOKEN が使用されます。 LCP_CI_SCM_*環境変数を使用するには、Jenkins 2.222.1-3.2.0` 以降であることを確認してください。

パーソナルアクセストークンの使用

リポジトリと統合するためにLCP_CI_SCM_TOKENの 値によってレファレンスされているパーソナルアクセストークンが必要です。

警告

パーソナルアクセストークンが個人のユーザーアカウントに属していて、そのユーザーが組織から削除されている場合、すべてのビルドが完了しません。 代わりに、組織専用のアカウントを使用してください。 詳しくは GitHubの公式ドキュメント をご覧ください。

デフォルトでは、GitHub組織の Personal Access Token は、CIサービスがデフォルトのWebフックを使用して正常に統合するために、 admin:repo_hook パーミッションも持つ必要がある。

しかし、CI serviceLCP_CLI_SCM_MANAGE_HOOKS environment variablefalseに設定することをお勧めします。 これにより、ウェブフックの自動管理が無効になり(リポジトリとの統合設定が終了すると不要になります)、DXP Cloudが使用するパーソナルアクセストークンから(管理者レベルの) admin:repo_hook の権限を削除することができます。

ウェブフックの自動管理を無効にすると、個人用アクセストークンからadmin:repo_hookの権限を削除することができます。

これらの権限をウェブフックから削除することで、リポジトリに与えられるアクセスを最小限に抑え、セキュリティを向上させることができます。

ビルドの確認

プッシュされたブランチとプルリクエストは、DXP Cloudコンソールの [Builds] タブから表示またはデプロイできるビルドをトリガーする必要があります。 Jenkins サービスとの統合を設定したら、次のステップとして、インテグレーションが成功したかどうかを確認するためにビルドを検証します。

プッシュされたブランチからのビルドの確認

新しいGitプッシュがJenkinsビルドをトリガーすることを確認します:

  1. リポジトリに変更を加え(ファイルの追加など)、ブランチにコミットします:

    git commit -m "Add file to test builds" 
    
  2. ブランチをGitHubにプッシュします:

    git push origin branch-name
    
  3. DXP Cloud コンソールの Builds ページに移動します。

  4. Builds ページで、プッシュされたブランチのビルドが表示されることを確認します。

プルリクエストからのビルドの確認

新しいプルリクエストがJenkinsビルドをトリガーすることを確認します:

  1. 任意のブランチから develop ブランチへのプルリクエストを作成します。

  2. プルリクエストに対して新しいビルドが作成されていることを確認します。

  3. DXP Cloud コンソールの Builds ページに移動します。

  4. ブランチのリンクをクリックして、適切なビルドでコミットします。

  5. リンクが正しいGitHubページにリダイレクトされることを確認します。