1740441178
2025-02-23 18:56:00
導入
このブログ投稿では、最適化するDXPに展開するためのGitLab CI/CDパイプライン構成について説明します。ビルドステージを含むDXPへのすべての展開ステップをできるだけ自動化できるようにしたかったので、操作はほとんどマニュアルではありませんでした。最終結果は次のように見えます: Gitlab CI/CD DXPテンプレートリポジトリ。
私が言わなければならない、これは私が最初に考えたのは明らかに簡単です。一般に、ビルドから生産まで展開する最新段階までのフルランは、約30分かかる場合があります。
PowerShellとGitlab CI
Gitlabは、ランナーを構成するときにデフォルトシェルとしてBashを使用します。私自身のセットアップで、私は Docker画像 同じDockerインスタンスで2つの異なるランナーを構成します(そうすることができます)。 1つは、Bashベースのスクリプトを実行し、もう1つはPowerShellベースのスクリプトを実行する必要があるものです。その結果、パイプラインはPowerShellを頻繁に利用しています(pwsh タグ)展開タスクは、私の構成で使用されているため、デフォルトのランナーの代わりにPowerShellベースのランナーを使用するように規定しています。 Optimizely DXPのAPIおよび展開コマンドはPowerShellベースであるため、特定の段階の前提条件になります。 PowerShellスクリプトの処理パッケージのアップロードと展開のトリガーが見つかります。
これがタグの例です pwsh 指定されています:
send-package-dxp:
stage: send-package
image: mcr.microsoft.com/powershell:lts
tags:
- pwsh
script:
- Install-Module -Name EpiCloud -Force
- Connect-EpiCloud -ClientKey $DXP_CLIENT_KEY -ClientSecret $DXP_CLIENT_SECRET -ProjectId $DXP_PROJECT_ID
- $packageLocation = Get-EpiDeploymentPackageLocation
- $foundPackageLocations = Get-ChildItem -Path $ARTIFACTS_LOCATION -Filter "*.nupkg" | Sort-Object -Property Name -Descending
- $resolvedPackagePath = $foundPackageLocations | Select-Object -First 1
- "Write-Host "The following package will be deployed: $resolvedPackagePath""
- Add-EpiDeploymentPackage -SasUrl $packageLocation -Path $resolvedPackagePath.FullName
なしで pwsh タグ、これらのPowerShellコマンドは、デフォルトのシェルがそれらをサポートしていないため、GitLab CI/CDで適切に実行できません。
パイプラインのハイライト
-
展開に失敗した処理:パイプラインには、失敗した展開をリセットまたは完了するためのロールバックメカニズムが含まれています。
-
前導入と生産のための手動トリガー:セーフティネットを追加するために、前導入と生産の展開段階が手動に設定されており、リリース前に最終検証が可能になります。
これが視覚的な例です:
そして、仕事の依存関係:
最終的な考え
リマインダーとして、リポジトリで利用可能な完全なファイルを参照できます。 CI/CD DXP DXP TRC。
明確に定義されたCI/CDパイプラインを最適化するために使用することにより、次のことができます。
- 手動の展開作業を削減します。
- 環境全体で一貫性を確保します。
- 展開リスクを最小限に抑えます。
- 必要に応じて簡単なロールバックを有効にします。
このGitLab CIテンプレートは、DXPの展開に構造をもたらし、開発および運用チームの生活を容易にします。
幸せな展開! 🚀
#GitLab #CICDを使用して最適化のDXP展開を自動化します
