oo

GitHubリポジトリの設定

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

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

  2. Webhookを使用して、自社のプライベートリポジトリとLiferay CloudのJenkins(CI)サービスを連携させます。

note

組織アカウントを使用する場合、リポジトリを組織に転送するには、管理者権限が必要です。 リポジトリの管理者は、Cloud コンソールのプロジェクトの管理者と 同じ とは限りません。

リポジトリの転送

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

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

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

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

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

Jenkinsサービスとの統合

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

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

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

  3. Payload URL フィールドに、Liferay 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. Liferay Cloud Console にログインし、 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:repohookのすべてのスコープパーミッションにチェックが入っている必要があります。 admin:repo_hook** scope permissions specifically は、リポジトリが Liferay Cloud と正常に統合された後、 automatic web hook management を無効にすれば、後で削除することができます。

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

note

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

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

note

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

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

LCP_CI_SCM_TOKEN の値で参照されるパーソナルアクセストークンは、Liferay Cloud がお客様のリポジトリと統合するために必要なものです。

warning

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

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

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

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

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

ビルドの確認

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

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

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

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

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

    git push origin branch-name
    
  3. Liferay Cloud Console の Builds ページに移動します。

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

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

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

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

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

  3. Liferay Cloud Console の Builds ページに移動します。

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

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

関連トピック

Capability:
Deployment Approach: