継続的インテグレーション
Liferay Cloud は、継続的な統合インフラストラクチャ サービスを強化するために Jenkins を使用します。 プルリクエストを送信するか、事前設定されたGitHubブランチの1つにコミットをプッシュすると、自動で設定可能なビルドがトリガーされます。
Liferay Cloud のお客様 ( カスタマー ログインを使用) には、ビルドを管理およびレビューする権限がありますが、完全な管理者権限はありません。
デフォルトでは、この自動ビルドはコードをコンパイルし、テストを実行するように設定できます。 Liferay Cloud はサービスを構築し、環境のビルド ページにそのステータスを表示します。 テストが失敗した場合は、Jenkinsダッシュボードとhttps://ci-companyname-infra.lfr.cloudログを確認できます。
継続的インテグレーションは、CLIではなく、GitHub、GitLab、またはBitbucketからデプロイする場合にのみ機能します。
詳細については、 CI サービスの制限 を参照してください。
JDKバージョンの設定
デフォルトでは、CI サービスは JDK 8 を使用します。 Jenkins は構成された JDK バージョンを使用して、ビルド内のタスクを実行したりコードをコンパイルしたりします。
CI バージョン 6.0.0+ では、ビルドに特定の Java バージョン (デフォルト以外) が必要な場合は、コンソールまたは CI サービスの LCP.json ファイルで、 LCP_CI_GRADLE_JDK 環境変数を更新できます。
LCP_CI_GRADLE_JDKに許可される値は次のとおりです。
jdk8jdk11jdk17jdk21
デフォルトのJenkinsfileの使用
CI サービスには、プロジェクトのビルドに使用されるデフォルトの Jenkinsfile が含まれています。 デフォルトのJenkinsfileは、それまでJenkinsfileに保存されていたすべてのロジックをカプセル化し、Jenkinsプラグインに移動させます。 つまり、CI構成を必要とせずに、すべてのバグ修正、セキュリティ修正、および改善を適用できます。
さらに、拡張ポイントを使用して、CIパイプラインの各ステップをカスタマイズできます。
デフォルトのJenkinsfileの拡張
デフォルトのJenkinsfileを拡張するには、プロジェクトリポジトリの ci フォルダに以下のファイルを追加します:
Jenkinsfile-before-allJenkinsfile-before-cloud-buildJenkinsfile-before-cloud-deployJenkinsfile-after-allJenkinsfile-post-always
CIビルドプロセスのステップの基本的な概要は次のとおりです:
-
存在する場合は、
ci/Jenkinsfile-before-allをロードします。 -
Liferay Workspaceをビルドします。
-
存在する場合は、
ci/Jenkinsfile-before-cloud-buildをロードします。 -
コンソールに表示されるLiferay Cloudのビルドを作成します。
-
存在する場合は、
ci/Jenkinsfile-before-cloud-deployをロードします。 -
現在のブランチがデプロイブランチの場合、ビルドをクラウド上の環境にデプロイできます。
LCP_CI_DEPLOY_BRANCH環境変数でデプロイブランチを設定し、LCP_CI_DEPLOY_TARGETによりデプロイ環境を指定します。 -
存在する場合は、
ci/Jenkinsfile-after-allをロードします。 これは、すべてのビルド手順が完了すると実行されます。 -
存在する場合は、
ci/Jenkinsfile-post-alwaysをロードします。 これは、ビルドが成功しても失敗しても実行されます。
Jenkinsサービスの起動ログを監視して、デフォルトのパイプラインでこれらがどのように使用されるかを確認することができます。 完全なデフォルトのJenkinsfileが起動ログに出力されます。
追加のパイプラインのカスタマイズと外部通話
パイプラインの追加ステップを使用して、外部サービスを呼び出すことができます。 例えば、REST APIを通してサードパーティのモニタリングサービスを呼び出したり、ビルドプロセス中に実行するスクリプトを呼び出したりすることができます。
リポジトリs ci/ フォルダに独自の Jenkinsfile を定義して、独自のパイプラインを作成することもできます。 詳細については、 Jenkins の Web サイト を参照してください。
外部サービスやカスタムパイプラインは、Liferay Cloudサポートの対象外であるため、慎重にご利用ください。 Jenkinsのカスタムプラグインはサポートされていません。
異なる拡張ポイント間でのコードの再利用
これらの拡張ポイント間でコードを共有すると、構造を簡素化できます。 1 つの方法は、Groovy スクリプトをロードすることです。
例えば、 [ci]/ フォルダに [util.groovy] という内容でgroovyファイルを作成すると、次のようになります:
def sendSlackMessage(message) {
println(message)
}
return this
次に、以下をci/Jenkinsfile-before-cloud-buildに挿入できます:
def util = load("ci/util.groovy")
util.sendSlackMessage("About to create Liferay Cloud build...")
環境変数リファレンス
これらの環境変数はデフォルトの Jenkinsfile でのみ使用されます。 これらが何をするのかを確認するには、 パイプライン オプションに関する Jenkins のドキュメントを参照してください。
| 名前 | デフォルト値 | 説明 |
|---|---|---|
LCP_CI_ARTIFACT_DAYS_TO_KEEP | -1 | 遺物が保管される日数 |
LCP_CI_ARTIFACT_NUM_TO_KEEP | 1 | アーティファクト と スタッシュ を保存する最近のビルドの数を設定します。 |
LCP_CI_BUILD_DAYS_TO_KEEP | 14 | ビルドが保存される日数 |
LCP_CI_BUILD_NUM_TO_KEEP | 10 | 保存されたビルドの数 |
LCP_CI_BUILD_TIMEOUT_MINUTES | 30 | パイプライン実行の制限時間。この時間が過ぎると、Jenkins はパイプラインを中止します。 |
LCP_CI_CLI_LOG_LEVEL | verboseに設定すると、CI サービスは lcp コマンドを実行するときに --verbose フラグを使用します。 これにより、コマンド実行時のデバッグのための詳細情報が提供されます。 | |
LCP_CI_DEPLOY_BRANCH | develop | 自動デプロイメントに使用するブランチを指定します。 有効なブランチ名に設定されていない場合、自動デプロイは無効となります。 |
LCP_CI_DEPLOY_TARGET | dev | 自動デプロイメント がデプロイされる環境を設定します。 LCP_CI_DEPLOY_BRANCHが設定されている場合にのみ使用されます。 |
LCP_CI_GRADLE_JDK | jdk8 | ビルドに使用する CI サービスs Java バージョン を設定します。 |
LCP_CI_LIFERAY_DXP_HOTFIXES_[ENV] | Liferayサービスをデプロイする際にCIが自動的に適用するホットフィックスの名前(.zipの拡張子なし)。 [ENV] を環境名(すべて大文字)に置き換えるか、 COMMONに置き換えます。 | |
LCP_CI_NUM_EXECUTORS | 2 | ビルド エグゼキュータ キューで使用されるエグゼキュータの数。 これを 1 に減らすと、ビルドの並列実行が制限され、場合によってはビルドの失敗が減少する可能性があります。 |
LCP_CI_PRESERVE_STASHES_BUILD_COUNT | 20 | stashesが保存される最近のビルドの数を設定します。 LCP_CI_ARTIFACT_NUM_TO_KEEP 変数で許可されているよりも多くのビルドでStashを保持することはできません。 |
LCP_CI_SCM_MANAGE_HOOKS | true | コード ホスティング プラットフォーム (GitHub など) の 自動 Web フック管理 を有効または無効にします。 |
LCP_CI_SCM_PROVIDER | github | ビルドの取得に使用するソースコントロール管理サービスを設定します。 受け入れられる値は、 bitbucket、 github、および gitlabです。 |
LCP_CI_SCM_REPOSITORY_NAME | ビルドを取得する際に使用するリポジトリ名を設定します (GitHub、Bitbucket あるいは GitLab から)。 | |
LCP_CI_SCM_REPOSITORY_OWNER | ビルドの取得に使用されるリポジトリ所有者。 | |
LCP_CI_SCM_TOKEN | Bitbucket、GitHub、またはGitLabからビルドにアクセスして取得するために必要な個人用アクセストークン。 | |
LCP_CI_USE_DEFAULT_JENKINSFILE | true | デフォルトの Jenkinsfile を有効または無効にします。 |
LCP_DATABASE_SERVICE | データベースサービスのホスト名。 |