継続的インテグレーション
Liferay Cloud は Jenkins を使用して、継続的インテグレーション・インフラストラクチャ・サービスを実現しています。 プルリクエストを送信したり、あらかじめ設定された GitHub のブランチのいずれかにコミットをプッシュすると、自動的かつ設定可能なビルドが開始されます。
Liferay Cloud の顧客(customer
ログインを使用)は、ビルドを管理・レビューする権限を持ちますが、完全な管理者権限は持ちません。
デフォルトでは、この自動ビルドはコードをコンパイルし、テストを実行するように設定することができます。 Liferay Cloud はサービスをビルドし、そのステータスを環境の Builds ページに表示します。 テストが失敗した場合は、Jenkinsダッシュボードと [https://ci-companyname-infra.lfr.cloud]
ログを確認できます。
継続的インテグレーションは、GitHub、GitLab、Bitbucketからデプロイする場合にのみ機能し、CLIでは機能しません。
詳しくは、 CI service limitations を参照してください。
デフォルトのJenkinsfileの使用
CIサービスのバージョン [liferaycloud/jenkins:2.222.1-3.2.0]
からは、オーバーライドされていない場合、デフォルトのJenkinsfileが利用可能です。 デフォルトの Jenkinsfile は、バージョン 4.x.x のサービスを使用しているプロジェクト では常に利用可能です。.
デフォルトのJenkinsfileは、それまでJenkinsfileに保存されていたすべてのロジックをカプセル化し、Jenkinsプラグインに移動させます。 つまり、CI構成を必要とせずに、すべてのバグ修正、セキュリティ修正、および改善を適用できます。
さらに、CIパイプラインの各ステップをカスタマイズするための拡張ポイントも用意されています。
デフォルトのJenkinsfileを有効にする
プロジェクトが バージョン 4.x.xに更新されている場合、デフォルトの Jenkinsfile は既に有効になっています。 そうでない場合は、プロジェクトのリポジトリで以下の手順を実行してください。
CIサービスを
[liferaycloud/jenkins:2.222.1-3.2.0]
.バージョンにアップデートします.ルートフォルダにある
Jenkinsfile
を削除してください。CIサービスの
LCP.json
ファイルに、以下の環境変数を追加する。LCP_CI_USE_DEFAULT_JENKINSFILE: true
.
デフォルトのJenkinsfileの拡張
デフォルトのJenkinsfileを拡張するには、プロジェクトリポジトリの ci
フォルダに以下のファイルを追加します:
Jenkinsfile-before-all
Jenkinsfile-before-cloud-build
Jenkinsfile-before-cloud-deploy
Jenkinsfile-after-all
Jenkinsfile-post-always
CIビルドプロセスのステップの基本的な概要は次のとおりです:
存在する場合は、
[ci/Jenkinsfile-before-all]
をロードします。Liferayワークスペースをビルドします。
存在する場合は、
[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]
をロードします。 これは、ビルドが成功しても失敗しても実行されます。
バージョン3.x.xのサービスを使用している場合、Jenkinsfileのこれらの拡張は、[lcp/ci/]フォルダーにあります。 バージョンの確認方法については, サービススタックのバージョンについて を参照してください。
Jenkinsサービスの起動ログを監視して、デフォルトのパイプラインでこれらがどのように使用されるかを確認することができます。 完全なデフォルトのJenkinsfileが起動ログに出力されます。
追加のパイプラインのカスタマイズと外部通話
パイプラインの追加の手順を使用して、外部サービスを呼び出すことができます。 例えば、REST APIを通してサードパーティのモニタリングサービスを呼び出したり、ビルドプロセス中に実行するスクリプトを呼び出したりすることができます。
また、リポジトリの ci/
フォルダで[Jenkinsfile]
を定義することで、独自のパイプラインを作成することができます。 詳しくは、 Jenkins website を参照してください。
外部サービスやカスタムパイプラインは慎重に使用する必要があり、Liferay Cloud Supportの範囲外です。 Jenkinsのカスタムプラグインはサポートされていません。
もし、バージョン 3.x.x のサービスを使用していて、独自の [Jenkinsfile]を定義している場合は、代わりにリポジトリのルートに定義する必要があります。 バージョン確認の詳細については、 サービススタックのバージョンについて を参照してください。
異なる拡張ポイント間でのコードの再利用
これらの拡張ポイント間でコードを共有する方法が必要になるでしょう。 基本的な方法の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...")
バージョン3.x.xのサービスを使用している場合、これらのファイルはリポジトリ内の[lcp/ci/]ディレクトリにあります。 バージョン確認の詳細については、 サービススタックのバージョンについて を参照してください。
環境変数リファレンス
次の環境変数は、デフォルトのJenkinsファイルでのみ使用されます。 これらが何をするのかは、 パイプラインオプションに関する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_deploy_branch |
昂じる |
自動デプロイメントに使用するブランチを指定する. 有効なブランチ名が設定されていない場合、自動デプロイは無効となります。 |
lcp_ci_deploy_target |
[automatic deployment] がデプロイされる環境を設定します。 [LCP_CI_DEPLOY_BRANCH] が設定されている場合にのみ使用されます。 |
|
lcp_ci_liferay_dxp_hotfixes_{ENV} |
Liferayサービスをデプロイする際にCIが自動的に適用するHotfixの名前( .zip の拡張子なし)。 環境名を[{ENV}] (全て大文字で)、または[COMMON] に置き換えます。 |
|
lcp_ci_preserve_stashes_build_count |
20 |
stashes が保存される最近のビルドの数を設定します。 LCP_CI_ARTIFACT_NUM_TO_KEEP 変数で許可されているよりも多くのビルドでStashを保持することはできません。 |
lcp_ci_scm_manage_hooks |
true |
コードホスティングプラットフォーム(GitHubなど)の [automatic web hook management] を有効または無効にするオプションです。 |
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 |
false |
デフォルトのJenkinsfileを有効または無効にするオプション |
lcp_database_service |
データベースサービスのホスト名。 |