継続的インテグレーション

継続的インテグレーション

Liferay Cloud は Jenkins を使用して、継続的インテグレーション・インフラストラクチャ・サービスを実現しています。 プルリクエストを送信したり、あらかじめ設定された GitHub のブランチのいずれかにコミットをプッシュすると、自動的かつ設定可能なビルドが開始されます。

note

Liferay Cloud の顧客(customerログインを使用)は、ビルドを管理・レビューする権限を持ちますが、完全な管理者権限は持ちません。

デフォルトでは、この自動ビルドはコードをコンパイルし、テストを実行するように設定することができます。 Liferay Cloud はサービスをビルドし、そのステータスを環境の Builds ページに表示します。 テストが失敗した場合は、Jenkinsダッシュボードと [https://ci-companyname-infra.lfr.cloud]ログを確認できます。

note

継続的インテグレーションは、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 は既に有効になっています。 そうでない場合は、プロジェクトのリポジトリで以下の手順を実行してください。

  1. CIサービスを[liferaycloud/jenkins:2.222.1-3.2.0].バージョンにアップデートします.

  2. ルートフォルダにある Jenkinsfile を削除してください。

  3. CIサービスの LCP.json ファイルに、以下の環境変数を追加する。 LCP_CI_USE_DEFAULT_JENKINSFILE: true.

  4. CIサービスをデプロイする.

デフォルトのJenkinsfileの拡張

デフォルトのJenkinsfileを拡張するには、プロジェクトリポジトリの ci フォルダに以下のファイルを追加します:

  • Jenkinsfile-before-all
  • Jenkinsfile-before-cloud-build
  • Jenkinsfile-before-cloud-deploy
  • Jenkinsfile-after-all
  • Jenkinsfile-post-always

CIビルドプロセスのステップの基本的な概要は次のとおりです:

  1. 存在する場合は、 [ci/Jenkinsfile-before-all]をロードします。

  2. Liferayワークスペースをビルドします。

  3. 存在する場合は、 [ci/Jenkinsfile-before-cloud-build]をロードします。

  4. コンソールに表示されているLiferay Cloudのビルドを作成します。

  5. 存在する場合は、 [ci/Jenkinsfile-before-cloud-deploy]をロードします。

  6. 現在のブランチがデプロイブランチの場合、ビルドをクラウド上の環境にデプロイすることができます。 LCP_CI_DEPLOY_BRANCH 環境変数でデプロイブランチを設定し、 LCP_CI_DEPLOY_TARGET でデプロイ環境を指定します。

  7. 存在する場合は、 [ci/Jenkinsfile-after-all]をロードします。 これは、すべてのビルドステップが完了したときに実行されます。

  8. 存在する場合は、 [ci/Jenkinsfile-post-always]をロードします。 これは、ビルドが成功しても失敗しても実行されます。

note

バージョン3.x.xのサービスを使用している場合、Jenkinsfileのこれらの拡張は、[lcp/ci/]フォルダーにあります。 バージョンの確認方法については, サービススタックのバージョンについて を参照してください。

Jenkinsサービスの起動ログを監視して、デフォルトのパイプラインでこれらがどのように使用されるかを確認することができます。 完全なデフォルトのJenkinsfileが起動ログに出力されます。

追加のパイプラインのカスタマイズと外部通話

パイプラインの追加の手順を使用して、外部サービスを呼び出すことができます。 例えば、REST APIを通してサードパーティのモニタリングサービスを呼び出したり、ビルドプロセス中に実行するスクリプトを呼び出したりすることができます。

また、リポジトリの ci/ フォルダで[Jenkinsfile] を定義することで、独自のパイプラインを作成することができます。 詳しくは、 Jenkins website を参照してください。

warning

外部サービスやカスタムパイプラインは慎重に使用する必要があり、Liferay Cloud Supportの範囲外です。 Jenkinsのカスタムプラグインはサポートされていません。

note

もし、バージョン 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...")
note

バージョン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 データベースサービスのホスト名。

追加情報