GitHubリポジトリの設定
Liferay Cloud のオンボーディングメールを受け取ると、 dxpcloud
の組織でホストされている GitHub リポジトリがプロビジョニングされます。 このリポジトリは、チームの独立したプライベートなLiferay Cloud開発リポジトリのテンプレートであり、通常10営業日後に削除されます。 ユーザーは以下のことを行う必要があります:
-
プロビジョニングされたリポジトリを独自のプライベートGitHubリポジトリに転送します。
-
Webhookを使用して、自社のプライベートリポジトリとLiferay CloudのJenkins(CI)サービスを連携させます。
組織アカウントを使用する場合、リポジトリを組織に転送するには、管理者権限が必要です。 リポジトリの管理者は、Cloud コンソールのプロジェクトの管理者と 同じ とは限りません。
リポジトリの転送
次の手順に従って、プロビジョニング済みのリポジトリを独自のGitHubリポジトリに転送します:
-
新しいプライベートGitHubリポジトリを作成します。
-
ローカルで、プロビジョニング済みの
dxpcloud
リポジトリのクローンを作成します。 -
手順2で複製したリポジトリを手順1で作成したリモートリポジトリにプッシュします。
GitHub リポジトリの作成、クローン、プッシュについてのヘルプが必要な場合は、 GitHub’s documentation を参照してください。
Jenkinsサービスとの統合
ここで、新しいリポジトリを Liferay Cloud の Jenkins サービスと統合する必要があります。 JenkinsサービスにプッシュするGitHubでWebhookを設定します:
-
GitHubでは、リポジトリの Settings ページに移動し、 [Webhooks] を選択します。
-
[Webhookの追加] をクリックします。 Webhookの追加 フォームが開きます。
-
Payload URL フィールドに、Liferay Cloud
infra
環境の Jenkins サービスのドメインを追加してください。 たとえば、acme
というプロジェクトのインフラ
環境のci
サービスのURLはhttps://ci-acme-infra.lfr.cloud/github-webhook/
です。 Jenkins GitHubプラグインと統合するには、相対パスgithub-webhook
が必要です。 -
Content type セレクターメニューで、 application/json を選択します。
-
Secret フィールドを空白のままにし、 Enable SSL verification が選択されていることを確認します。
-
[このウェブフックをトリガーにしたいイベントはどれですか?] の下にある、 [個々のイベントを選択させてください] を選択してください。 イベントのリストが表示されます。
-
イベントのリストから [Pushes] と [Pull Requests] を選択します。
-
[Active] が選択されていることを確認し、 [Add webhook] をクリックします。
環境変数の設定
新しいリポジトリを指すようにJenkinsサービスの環境変数を設定します:
-
Liferay Cloud Console にログインし、
infra
環境で Jenkins サービスに移動します。 -
[環境変数] タブに移動します。
-
以下の環境変数を設定します:
名前 | 値 |
---|---|
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 を参照してください。
作成されたパーソナルアクセストークンは、 repo と admin:repohookのすべてのスコープパーミッションにチェックが入っている必要があります。 admin:repo_hook** scope permissions specifically は、リポジトリが Liferay Cloud と正常に統合された後、 automatic web hook management を無効にすれば、後で削除することができます。
SAMLシングルサインオン認証で組織のアカウントを使用している場合は、アクセストークンを認証するために追加の手順を行う必要があります。 詳しくは GitHub公式ドキュメント を参照ください。
これらの環境変数を更新した後、Jenkinsサービスが再起動します。 これで、新しいリポジトリでプッシュされたブランチとプルリクエストがビルドをトリガーします。
Jenkins の 2.222.1-3.2.0
より前のバージョンでは、代わりに環境変数 GITHUB_REPOSITORY
と GITHUB_TOKEN
が使用されます。 LCP_CI_SCM_*環境変数を使用するには、Jenkins が
2.222.1-3.2.0` 以降であることを確認してください。
パーソナルアクセストークンの使用
LCP_CI_SCM_TOKEN
の値で参照されるパーソナルアクセストークンは、Liferay Cloud がお客様のリポジトリと統合するために必要なものです。
パーソナルアクセストークンが個人のユーザーアカウントに属していて、そのユーザーが組織から削除されている場合、すべてのビルドが完了しません。 代わりに、組織専用のアカウントを使用してください。 詳しくは GitHubの公式ドキュメント をご覧ください。
デフォルトでは、GitHub組織の Personal Access Token が、デフォルトのWebフックを使ってCIサービスを正常に統合するために、 admin:repo_hook
のパーミッションも持っている必要があります。
しかし、CI serviceのLCP_CLI_SCM_MANAGE_HOOKS
environment variableをfalse
に設定することをお勧めします。 これはウェブフックの自動管理を無効にし(リポジトリとの統合設定が終了したら不要になります)、Liferay Cloud が使用する個人アクセストークンから(管理者レベルの) admin:repo_hook
権限を削除できるようにします。
これらの権限をウェブフックから削除することで、リポジトリに与えられるアクセスを最小限に抑え、セキュリティを向上させることができます。
ビルドの確認
プッシュされたブランチやプルリクエストは、Liferay Cloud Console の Builds タブから確認したりデプロイしたりできるビルドのトリガーとなります。 Jenkins サービスとの統合を設定したら、次のステップとして、インテグレーションが成功したかどうかを確認するためにビルドを検証します。
プッシュされたブランチからのビルドの確認
新しいGitプッシュがJenkinsビルドをトリガーすることを確認します:
-
リポジトリに変更を加え(ファイルの追加など)、ブランチにコミットします:
git commit -m "Add file to test builds"
-
ブランチをGitHubにプッシュします:
git push origin branch-name
-
Liferay Cloud Console の Builds ページに移動します。
-
Builds ページで、プッシュされたブランチのビルドが表示されることを確認します。
プルリクエストからのビルドの確認
新しいプルリクエストがJenkinsビルドをトリガーすることを確認します:
-
任意のブランチから
develop
ブランチへのプルリクエストを作成します。 -
プルリクエストに対して新しいビルドが作成されていることを確認します。
-
Liferay Cloud Console の Builds ページに移動します。
-
ブランチのリンクをクリックして、適切なビルドでコミットします。
-
リンクが正しいGitHubページにリダイレクトされることを確認します。