diff --git a/Build.ps1 b/Build.ps1
index 0e275f892..3fefc363f 100644
--- a/Build.ps1
+++ b/Build.ps1
@@ -27,6 +27,8 @@ param(
[Parameter()]
[switch]$IncludeSh,
[Parameter()]
+ [switch]$IncludeUt,
+ [Parameter()]
[switch]$SkipModuleAssets,
[Parameter(HelpMessage = "If the docker image is already built it should be skipped.")]
[switch]$SkipExistingImage,
@@ -126,7 +128,7 @@ $xcMiscTags = $availableTags | Where-Object { $_ -like "sitecore-certificates:*"
$assetTags = $availableTags | Where-Object { $_ -match "(community/)?sitecore(-custom)?-assets:.*" }
$moduleAssetTags = $availableTags | Where-Object { $_ -like "community/modules/*" }
$xmTags = $availableTags | Where-Object { $_ -match "(community/)?sitecore-xm([1]{0,1})(-custom)?-(?!.*spe|.*sxa|.*jss).*:.*" }
-$xpTags = $availableTags | Where-Object { $_ -match "(community/)?sitecore-xp([1]{0,1})(-custom)?-(?!.*spe|.*sxa|.*jss|.*sh).*:.*" }
+$xpTags = $availableTags | Where-Object { $_ -match "(community/)?sitecore-xp([1]{0,1})(-custom)?-(?!.*spe|.*sxa|.*jss|.*sh|ut).*:.*" }
$xp0Tags = $availableTags | Where-Object { $_ -match "(community/)?sitecore-xp0(-custom)?-(?!.*spe|.*sxa|.*jss).*:.*" }
$xcTags = $availableTags | Where-Object { $_ -match "(community/)?sitecore-xc(-custom)?-(?!.*spe|.*sxa|.*jss).*:.*" }
@@ -143,11 +145,12 @@ $xpSpeTags = $availableTags | Where-Object { $_ -match "(community/)?sitecore-xp
$xpSxaTags = $availableTags | Where-Object { $_ -match "(community/)?sitecore-xp([1]{0,1})(-custom)?-(.*sxa)(?!.*jss).*:.*" }
$xpJssTags = $availableTags | Where-Object { $_ -match "(community/)?sitecore-xp([1]{0,1})(-custom)?-(.*jss).*:.*" }
$xpShTags = $availableTags | Where-Object { $_ -match "sitecore-xp([1]{0,1})(-custom)?-(.*sh).*:.*" }
+$xpUtTags = $availableTags | Where-Object { $_ -match "sitecore-xp([1]{0,1})(-custom)?-(ut).*:.*" }
$xcSpeTags = $availableTags | Where-Object { $_ -match "(community/)?sitecore-xc-(spe).*:.*" }
$xcSxaTags = $availableTags | Where-Object { $_ -match "(community/)?sitecore-xc-(sxa).*:.*" }
-$knownTags = $defaultTags + $xpMiscTags + $xcMiscTags + $assetTags + $xmTags + $xpTags + $xp0Tags + $xcTags + $xmSpeTags + $xp0SpeTags + $xpSpeTags + $xcSpeTags + $xmSxaTags + $xp0SxaTags + $xpSxaTags + $xcSxaTags + $xmJssTags + $xp0JssTags + $xpJssTags + $xpShTags
+$knownTags = $defaultTags + $xpMiscTags + $xcMiscTags + $assetTags + $xmTags + $xpTags + $xp0Tags + $xcTags + $xmSpeTags + $xp0SpeTags + $xpSpeTags + $xcSpeTags + $xmSxaTags + $xp0SxaTags + $xpSxaTags + $xcSxaTags + $xmJssTags + $xp0JssTags + $xpJssTags + $xpShTags + $xpUtTags
if ($SkipModuleAssets)
{
# remove module tags from the avaiableTags to prevent getting processed later
@@ -295,6 +298,14 @@ foreach ($wv in $OSVersion)
}
}
+ if ($IncludeUt)
+ {
+ if ($Topology -eq "xp")
+ {
+ $xpUtTags | SitecoreFilter -Version $scv | WindowsFilter -Version $wv | ForEach-Object { $tags.Add($_) > $null }
+ }
+ }
+
if ($IncludeSh)
{
if ($Topology -eq "xp")
diff --git a/README.md b/README.md
index 50d64be45..dbe2aa1a0 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
[//]: # "start: stats"
-[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg?style=flat-square)](https://opensource.org/licenses/MIT) ![Repositories](https://img.shields.io/badge/Repositories-261-blue.svg?style=flat-square) ![Tags](https://img.shields.io/badge/Tags-2328-blue.svg?style=flat-square) ![Deprecated](https://img.shields.io/badge/Deprecated-0-lightgrey.svg?style=flat-square) ![Dockerfiles](https://img.shields.io/badge/Dockerfiles-129-blue.svg?style=flat-square) ![Default version](https://img.shields.io/badge/Default%20version-10.0.0%20on%20ltsc2019/1809-blue?style=flat-square)
+[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg?style=flat-square)](https://opensource.org/licenses/MIT) ![Repositories](https://img.shields.io/badge/Repositories-264-blue.svg?style=flat-square) ![Tags](https://img.shields.io/badge/Tags-2343-blue.svg?style=flat-square) ![Deprecated](https://img.shields.io/badge/Deprecated-0-lightgrey.svg?style=flat-square) ![Dockerfiles](https://img.shields.io/badge/Dockerfiles-132-blue.svg?style=flat-square) ![Default version](https://img.shields.io/badge/Default%20version-10.0.0%20on%20ltsc2019/1809-blue?style=flat-square)
[//]: # "end: stats"
diff --git a/build-images.yml b/build-images.yml
index 1f0e3015a..447e18a9d 100644
--- a/build-images.yml
+++ b/build-images.yml
@@ -9,6 +9,7 @@
# - build.includeExperimentalImages
# - build.includeJss
# - build.includeSh
+# - build.includeUt
# - build.includeSpe
# - build.includeSxa
# - build.includeShortTags
@@ -89,6 +90,7 @@ stages:
IncludeSxa = [System.Convert]::ToBoolean($(build.includeSxa))
IncludeJss = [System.Convert]::ToBoolean($(build.includeJss))
IncludeSh = [System.Convert]::ToBoolean($(build.includeSh))
+ IncludeUt = [System.Convert]::ToBoolean($(build.includeUt))
IncludeExperimental = [System.Convert]::ToBoolean($(build.includeExperimentalImages))
SkipExistingImage = [System.Convert]::ToBoolean($(build.skipExistingImages))
SitecoreRegistry = "$(sitecore.container.registry)"
@@ -156,6 +158,7 @@ stages:
IncludeSxa = [System.Convert]::ToBoolean($(build.includeSxa))
IncludeJss = [System.Convert]::ToBoolean($(build.includeJss))
IncludeSh = [System.Convert]::ToBoolean($(build.includeSh))
+ IncludeUt = [System.Convert]::ToBoolean($(build.includeUt))
IncludeExperimental = [System.Convert]::ToBoolean($(build.includeExperimentalImages))
SkipExistingImage = [System.Convert]::ToBoolean($(build.skipExistingImages))
SitecoreRegistry = "$(sitecore.container.registry)"
diff --git a/build/IMAGES.md b/build/IMAGES.md
index 5f269ec1f..5857a792e 100644
--- a/build/IMAGES.md
+++ b/build/IMAGES.md
@@ -24,6 +24,9 @@
| 9.3.0 | sitecore-xp-xconnect-indexworker | windowsservercore | ltsc2019 | `sitecore-xp-xconnect-indexworker:9.3.0-windowsservercore-ltsc2019` [Dockerfile](windows/9.3.x/sitecore-xp-xconnect-worker/Dockerfile) |
| 9.3.0 | sitecore-xp-xconnect-automationengine | windowsservercore | ltsc2019 | `sitecore-xp-xconnect-automationengine:9.3.0-windowsservercore-ltsc2019` [Dockerfile](windows/9.3.x/sitecore-xp-xconnect-worker/Dockerfile) |
| 9.3.0 | sitecore-xp-xconnect | windowsservercore | ltsc2019 | `sitecore-xp-xconnect:9.3.0-windowsservercore-ltsc2019` [Dockerfile](windows/9.3.x/sitecore-xp-xconnect/Dockerfile) |
+| 9.3.0 | sitecore-xp-ut-sqldev | windowsservercore | ltsc2019 | `sitecore-xp-ut-sqldev:9.3.0-windowsservercore-ltsc2019` [Dockerfile](windows/9.3.x/sitecore-xp-ut-sqldev/Dockerfile) |
+| 9.3.0 | sitecore-xp-ut-processing | windowsservercore | ltsc2019 | `sitecore-xp-ut-processing:9.3.0-windowsservercore-ltsc2019` [Dockerfile](windows/9.3.x/sitecore-xp-ut-processing/Dockerfile) |
+| 9.3.0 | sitecore-xp-ut-collection | windowsservercore | ltsc2019 | `sitecore-xp-ut-collection:9.3.0-windowsservercore-ltsc2019` [Dockerfile](windows/9.3.x/sitecore-xp-ut-collection/Dockerfile) |
| 9.3.0 | sitecore-xp-sxa-standalone | windowsservercore | ltsc2019 | `sitecore-xp-sxa-standalone:9.3.0-windowsservercore-ltsc2019` [Dockerfile](windows/9.x.x/sitecore-sxa/Dockerfile) |
| 9.3.0 | sitecore-xp-sxa-sqldev | windowsservercore | ltsc2019 | `sitecore-xp-sxa-sqldev:9.3.0-windowsservercore-ltsc2019` [Dockerfile](windows/9.x.x/sitecore-sxa-sqldev/Dockerfile) |
| 9.3.0 | sitecore-xp-sxa-ps-standalone | windowsservercore | ltsc2019 | `sitecore-xp-sxa-ps-standalone:9.3.0-windowsservercore-ltsc2019` [Dockerfile](windows/9.x.x/sitecore-sxa-ps/Dockerfile) |
@@ -113,6 +116,9 @@
| 9.3.0 | sitecore-xp-xconnect-indexworker | windowsservercore | 2009 | `sitecore-xp-xconnect-indexworker:9.3.0-windowsservercore-2009` [Dockerfile](windows/9.3.x/sitecore-xp-xconnect-worker/Dockerfile) |
| 9.3.0 | sitecore-xp-xconnect-automationengine | windowsservercore | 2009 | `sitecore-xp-xconnect-automationengine:9.3.0-windowsservercore-2009` [Dockerfile](windows/9.3.x/sitecore-xp-xconnect-worker/Dockerfile) |
| 9.3.0 | sitecore-xp-xconnect | windowsservercore | 2009 | `sitecore-xp-xconnect:9.3.0-windowsservercore-2009` [Dockerfile](windows/9.3.x/sitecore-xp-xconnect/Dockerfile) |
+| 9.3.0 | sitecore-xp-ut-sqldev | windowsservercore | 2009 | `sitecore-xp-ut-sqldev:9.3.0-windowsservercore-2009` [Dockerfile](windows/9.3.x/sitecore-xp-ut-sqldev/Dockerfile) |
+| 9.3.0 | sitecore-xp-ut-processing | windowsservercore | 2009 | `sitecore-xp-ut-processing:9.3.0-windowsservercore-2009` [Dockerfile](windows/9.3.x/sitecore-xp-ut-processing/Dockerfile) |
+| 9.3.0 | sitecore-xp-ut-collection | windowsservercore | 2009 | `sitecore-xp-ut-collection:9.3.0-windowsservercore-2009` [Dockerfile](windows/9.3.x/sitecore-xp-ut-collection/Dockerfile) |
| 9.3.0 | sitecore-xp-sxa-standalone | windowsservercore | 2009 | `sitecore-xp-sxa-standalone:9.3.0-windowsservercore-2009` [Dockerfile](windows/9.x.x/sitecore-sxa/Dockerfile) |
| 9.3.0 | sitecore-xp-sxa-sqldev | windowsservercore | 2009 | `sitecore-xp-sxa-sqldev:9.3.0-windowsservercore-2009` [Dockerfile](windows/9.x.x/sitecore-sxa-sqldev/Dockerfile) |
| 9.3.0 | sitecore-xp-sxa-solr | nanoserver | 2009 | `sitecore-xp-sxa-solr:9.3.0-nanoserver-2009` [Dockerfile](windows/9.x.x/sitecore-xp-solr/Dockerfile) |
@@ -208,6 +214,9 @@
| 9.3.0 | sitecore-xp-xconnect-indexworker | windowsservercore | 2004 | `sitecore-xp-xconnect-indexworker:9.3.0-windowsservercore-2004` [Dockerfile](windows/9.3.x/sitecore-xp-xconnect-worker/Dockerfile) |
| 9.3.0 | sitecore-xp-xconnect-automationengine | windowsservercore | 2004 | `sitecore-xp-xconnect-automationengine:9.3.0-windowsservercore-2004` [Dockerfile](windows/9.3.x/sitecore-xp-xconnect-worker/Dockerfile) |
| 9.3.0 | sitecore-xp-xconnect | windowsservercore | 2004 | `sitecore-xp-xconnect:9.3.0-windowsservercore-2004` [Dockerfile](windows/9.3.x/sitecore-xp-xconnect/Dockerfile) |
+| 9.3.0 | sitecore-xp-ut-sqldev | windowsservercore | 2004 | `sitecore-xp-ut-sqldev:9.3.0-windowsservercore-2004` [Dockerfile](windows/9.3.x/sitecore-xp-ut-sqldev/Dockerfile) |
+| 9.3.0 | sitecore-xp-ut-processing | windowsservercore | 2004 | `sitecore-xp-ut-processing:9.3.0-windowsservercore-2004` [Dockerfile](windows/9.3.x/sitecore-xp-ut-processing/Dockerfile) |
+| 9.3.0 | sitecore-xp-ut-collection | windowsservercore | 2004 | `sitecore-xp-ut-collection:9.3.0-windowsservercore-2004` [Dockerfile](windows/9.3.x/sitecore-xp-ut-collection/Dockerfile) |
| 9.3.0 | sitecore-xp-sxa-standalone | windowsservercore | 2004 | `sitecore-xp-sxa-standalone:9.3.0-windowsservercore-2004` [Dockerfile](windows/9.x.x/sitecore-sxa/Dockerfile) |
| 9.3.0 | sitecore-xp-sxa-sqldev | windowsservercore | 2004 | `sitecore-xp-sxa-sqldev:9.3.0-windowsservercore-2004` [Dockerfile](windows/9.x.x/sitecore-sxa-sqldev/Dockerfile) |
| 9.3.0 | sitecore-xp-sxa-solr | nanoserver | 2004 | `sitecore-xp-sxa-solr:9.3.0-nanoserver-2004` [Dockerfile](windows/9.x.x/sitecore-xp-solr/Dockerfile) |
@@ -303,6 +312,9 @@
| 9.3.0 | sitecore-xp-xconnect-indexworker | windowsservercore | 1909 | `sitecore-xp-xconnect-indexworker:9.3.0-windowsservercore-1909` [Dockerfile](windows/9.3.x/sitecore-xp-xconnect-worker/Dockerfile) |
| 9.3.0 | sitecore-xp-xconnect-automationengine | windowsservercore | 1909 | `sitecore-xp-xconnect-automationengine:9.3.0-windowsservercore-1909` [Dockerfile](windows/9.3.x/sitecore-xp-xconnect-worker/Dockerfile) |
| 9.3.0 | sitecore-xp-xconnect | windowsservercore | 1909 | `sitecore-xp-xconnect:9.3.0-windowsservercore-1909` [Dockerfile](windows/9.3.x/sitecore-xp-xconnect/Dockerfile) |
+| 9.3.0 | sitecore-xp-ut-sqldev | windowsservercore | 1909 | `sitecore-xp-ut-sqldev:9.3.0-windowsservercore-1909` [Dockerfile](windows/9.3.x/sitecore-xp-ut-sqldev/Dockerfile) |
+| 9.3.0 | sitecore-xp-ut-processing | windowsservercore | 1909 | `sitecore-xp-ut-processing:9.3.0-windowsservercore-1909` [Dockerfile](windows/9.3.x/sitecore-xp-ut-processing/Dockerfile) |
+| 9.3.0 | sitecore-xp-ut-collection | windowsservercore | 1909 | `sitecore-xp-ut-collection:9.3.0-windowsservercore-1909` [Dockerfile](windows/9.3.x/sitecore-xp-ut-collection/Dockerfile) |
| 9.3.0 | sitecore-xp-sxa-standalone | windowsservercore | 1909 | `sitecore-xp-sxa-standalone:9.3.0-windowsservercore-1909` [Dockerfile](windows/9.x.x/sitecore-sxa/Dockerfile) |
| 9.3.0 | sitecore-xp-sxa-sqldev | windowsservercore | 1909 | `sitecore-xp-sxa-sqldev:9.3.0-windowsservercore-1909` [Dockerfile](windows/9.x.x/sitecore-sxa-sqldev/Dockerfile) |
| 9.3.0 | sitecore-xp-sxa-solr | nanoserver | 1909 | `sitecore-xp-sxa-solr:9.3.0-nanoserver-1909` [Dockerfile](windows/9.x.x/sitecore-xp-solr/Dockerfile) |
@@ -398,6 +410,9 @@
| 9.3.0 | sitecore-xp-xconnect-indexworker | windowsservercore | 1903 | `sitecore-xp-xconnect-indexworker:9.3.0-windowsservercore-1903` [Dockerfile](windows/9.3.x/sitecore-xp-xconnect-worker/Dockerfile) |
| 9.3.0 | sitecore-xp-xconnect-automationengine | windowsservercore | 1903 | `sitecore-xp-xconnect-automationengine:9.3.0-windowsservercore-1903` [Dockerfile](windows/9.3.x/sitecore-xp-xconnect-worker/Dockerfile) |
| 9.3.0 | sitecore-xp-xconnect | windowsservercore | 1903 | `sitecore-xp-xconnect:9.3.0-windowsservercore-1903` [Dockerfile](windows/9.3.x/sitecore-xp-xconnect/Dockerfile) |
+| 9.3.0 | sitecore-xp-ut-sqldev | windowsservercore | 1903 | `sitecore-xp-ut-sqldev:9.3.0-windowsservercore-1903` [Dockerfile](windows/9.3.x/sitecore-xp-ut-sqldev/Dockerfile) |
+| 9.3.0 | sitecore-xp-ut-processing | windowsservercore | 1903 | `sitecore-xp-ut-processing:9.3.0-windowsservercore-1903` [Dockerfile](windows/9.3.x/sitecore-xp-ut-processing/Dockerfile) |
+| 9.3.0 | sitecore-xp-ut-collection | windowsservercore | 1903 | `sitecore-xp-ut-collection:9.3.0-windowsservercore-1903` [Dockerfile](windows/9.3.x/sitecore-xp-ut-collection/Dockerfile) |
| 9.3.0 | sitecore-xp-sxa-standalone | windowsservercore | 1903 | `sitecore-xp-sxa-standalone:9.3.0-windowsservercore-1903` [Dockerfile](windows/9.x.x/sitecore-sxa/Dockerfile) |
| 9.3.0 | sitecore-xp-sxa-sqldev | windowsservercore | 1903 | `sitecore-xp-sxa-sqldev:9.3.0-windowsservercore-1903` [Dockerfile](windows/9.x.x/sitecore-sxa-sqldev/Dockerfile) |
| 9.3.0 | sitecore-xp-sxa-solr | nanoserver | 1903 | `sitecore-xp-sxa-solr:9.3.0-nanoserver-1903` [Dockerfile](windows/9.x.x/sitecore-xp-solr/Dockerfile) |
diff --git a/build/sitecore-packages.json b/build/sitecore-packages.json
index 9e9f1245e..f99e5ca54 100644
--- a/build/sitecore-packages.json
+++ b/build/sitecore-packages.json
@@ -359,6 +359,10 @@
"url": "https://sitecoredev.azureedge.net/~/media/3BA8C0FD6894405ABF3CD53803007272.ashx",
"hash": "9A7841C0773443BF07E8789EB99ACC90A6CE64326B5B67B0904671B3CC2401AA"
},
+ "Sitecore Universal Tracker 3.0.0.zip": {
+ "url": "https://sitecoredev.azureedge.net/~/media/4B3AA63825BD482F85ED794290210E8A.ashx",
+ "hash": "44C2043976D5C86B290E8FACA840618C6BFF9FBF978DC3A6205E0F820DE61072"
+ },
"Sitecore Zenith Integration 1.273.0.scwdp.zip": {
"url": "",
"hash": ""
diff --git a/build/windows/9.3.0/sitecore-assets/Dockerfile b/build/windows/9.3.0/sitecore-assets/Dockerfile
index d5020103e..9cc21e335 100644
--- a/build/windows/9.3.0/sitecore-assets/Dockerfile
+++ b/build/windows/9.3.0/sitecore-assets/Dockerfile
@@ -50,7 +50,8 @@ RUN $zips = Get-ChildItem -Path 'C:\\downloads\\*.zip' -Exclude @('*.scwdp.zip',
$zips | ForEach-Object { Move-Item -Path $_.FullName -Destination 'C:\\packages'; }; `
$zips = Get-ChildItem -Path 'C:\\downloads\\*.zip' -Exclude '*Configuration files*.zip'; `
$zips | ForEach-Object { Move-Item -Path $_.FullName -Destination 'C:\\packages'; }; `
- $zips = Get-ChildItem -Path 'C:\\packages\\*.scwdp.zip' | Rename-Item -NewName {$_.Name -replace '.rev\..(\d*)|(r[0-9]+.[0-9]+)'};
+ $zips = Get-ChildItem -Path 'C:\\packages\\*.scwdp.zip' | Rename-Item -NewName {$_.Name -replace '.rev\..(\d*)|(r[0-9]+.[0-9]+)'}; `
+ $zips = Get-ChildItem -Path 'C:\\packages\\*.deploy.zip' | ForEach-Object { Remove-Item -Path $_.FullName -Force; };
# move installers
RUN New-Item -Path 'C:\\install\\setup' -ItemType 'Directory' -Force | Out-Null; `
diff --git a/build/windows/9.3.0/sitecore-assets/build.json b/build/windows/9.3.0/sitecore-assets/build.json
index f2c3f817d..ca259e216 100644
--- a/build/windows/9.3.0/sitecore-assets/build.json
+++ b/build/windows/9.3.0/sitecore-assets/build.json
@@ -24,6 +24,7 @@
"Sitecore.PowerShell.Extensions-6.0.scwdp.zip",
"Sitecore Publishing Service 4.2.0-win-x64.zip",
"Sitecore Publishing Module 9.3.0.0 rev. r00546.2197.scwdp.zip",
- "Sitecore Horizon 9.3.0 for Azure.zip"
+ "Sitecore Horizon 9.3.0 for Azure.zip",
+ "Sitecore Universal Tracker 3.0.0.zip"
]
}
\ No newline at end of file
diff --git a/build/windows/9.3.0/sitecore-assets/tools/entrypoints/ut-processing/Development.ps1 b/build/windows/9.3.0/sitecore-assets/tools/entrypoints/ut-processing/Development.ps1
new file mode 100644
index 000000000..2b52f9f85
--- /dev/null
+++ b/build/windows/9.3.0/sitecore-assets/tools/entrypoints/ut-processing/Development.ps1
@@ -0,0 +1,58 @@
+[CmdletBinding()]
+param(
+ [Parameter(Mandatory = $false)]
+ [hashtable]$WatchDirectoryParameters
+)
+
+# setup
+$ErrorActionPreference = "STOP"
+
+$timeFormat = "HH:mm:ss:fff"
+
+# print start message
+Write-Host ("$(Get-Date -Format $timeFormat): Universal Tracker Processing Development ENTRYPOINT, starting...")
+
+# check to see if we should start the Watch-Directory.ps1 script
+$watchDirectoryJobName = "Watch-Directory.ps1"
+$useWatchDirectory = $null -ne $WatchDirectoryParameters -bor (Test-Path -Path "C:\src" -PathType "Container") -eq $true
+
+if ($useWatchDirectory)
+{
+ # setup default parameters if none is supplied
+ if ($null -eq $WatchDirectoryParameters)
+ {
+ $WatchDirectoryParameters = @{ Path = "C:\src"; Destination = "C:\inetpub\wwwroot"; }
+ }
+
+ # start Watch-Directory.ps1 in background, kill foreground process if it fails
+ Start-Job -Name $watchDirectoryJobName -ArgumentList $WatchDirectoryParameters -ScriptBlock {
+ param([hashtable]$params)
+
+ & "C:\tools\scripts\Watch-Directory.ps1" @params
+
+ } | Out-Null
+
+ # wait to see if job have failed (it will if for example parsing in invalid parameters)...
+ Start-Sleep -Milliseconds 1000
+
+ Get-Job -Name $watchDirectoryJobName | ForEach-Object {
+ $job = $_
+
+ if ($job.State -ne "Running")
+ {
+ # writes output stream
+ Receive-Job $job
+
+ # exit
+ exit 1
+ }
+
+ Write-Host "$(Get-Date -Format $timeFormat): Job '$($job.Name)' started..."
+ }
+}
+else
+{
+ Write-Host ("$(Get-Date -Format $timeFormat): Skipping start of '$watchDirectoryJobName', to enable you should mount a directory into 'C:\src'.")
+}
+
+& "C:\\inetpub\\wwwroot\\$($env:SC_ROLE_EXE)"
diff --git a/build/windows/9.3.x/sitecore-xp-ut-collection/Dockerfile b/build/windows/9.3.x/sitecore-xp-ut-collection/Dockerfile
new file mode 100644
index 000000000..5761197db
--- /dev/null
+++ b/build/windows/9.3.x/sitecore-xp-ut-collection/Dockerfile
@@ -0,0 +1,79 @@
+# escape=`
+ARG BASE_IMAGE
+ARG ASSETS_IMAGE
+ARG CERTIFICATES_IMAGE
+
+FROM $ASSETS_IMAGE as assets
+FROM $CERTIFICATES_IMAGE as certificates
+FROM $BASE_IMAGE as build
+
+SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
+
+ARG ASSETS_USE_WDP
+
+COPY --from=assets ["${ASSETS_USE_WDP}", "C:\\temp\\packages\\"]
+
+# expand selected wdp into installation directory
+RUN Expand-Archive -Path 'C:\\temp\\packages\\*.zip' -DestinationPath 'C:\\temp'; `
+ Copy-Item -Path 'C:\\temp\\Content\\Sitecore.Tracking.Collection.Service\\*' -Destination 'C:\\inetpub\\wwwroot' -Recurse -Force;
+
+# copy tools, certificates and transforms
+COPY --from=assets ["C:\\install\\tools\\", "C:\\inetpub\\wwwroot\\temp\\install\\tools\\"]
+COPY --from=certificates ["C:\\certificates\\", "C:\\inetpub\\wwwroot\\temp\\install\\certificates\\"]
+COPY .\\config C:\\inetpub\\wwwroot\\config\\
+
+# Use custom config that contains license path
+COPY .\sitecorehost.xml C:\\inetpub\\wwwroot\\
+
+# add installers
+COPY --from=assets ["C:\\install\\setup\\", "C:\\inetpub\\wwwroot\\temp\\install\\setup\\"]
+
+FROM $BASE_IMAGE
+
+SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
+
+COPY --from=build ["C:\\inetpub\\wwwroot\\", "C:\\inetpub\\wwwroot\\"]
+
+RUN $env:INSTALL_TEMP = 'C:\\inetpub\\wwwroot\\temp\\install'; `
+ $env:IIS_SITE_PATH = 'IIS:\Sites\Default Web Site'; `
+ $env:IIS_SITE_HOMEDIR_PATH = 'C:\\inetpub\\wwwroot'; `
+ $env:IIS_APPPOOL_IDENTITY = 'IIS AppPool\DefaultAppPool'; `
+ # install dependencies
+ Start-Process msiexec.exe -ArgumentList '/i', (Join-Path $env:INSTALL_TEMP '\\setup\\urlrewrite.msi'), '/quiet', '/norestart' -NoNewWindow -Wait; `
+ Start-Process (Join-Path $env:INSTALL_TEMP '\\setup\\vc_redist.exe') -ArgumentList '/install', '/passive', '/norestart' -NoNewWindow -Wait; `
+ Start-Process (Join-Path $env:INSTALL_TEMP '\\setup\\dotnet-hosting.exe') -ArgumentList '/install', '/quiet' -NoNewWindow -Wait; `
+ # install tools
+ Copy-Item -Path (Join-Path $env:INSTALL_TEMP '\\tools') -Force -Recurse -Destination 'C:\\tools' ; `
+ setx /M PATH $($env:PATH + ';C:\tools\scripts;C:\tools\bin;C:\Program Files\dotnet') | Out-Null; `
+ # install certificates
+ $password = ConvertTo-SecureString -String (Get-Content -Path (Join-Path $env:INSTALL_TEMP '\\certificates\\password')) -Force -AsPlainText; `
+ Import-PfxCertificate -FilePath (Join-Path $env:INSTALL_TEMP '\\certificates\\sitecore-root.pfx') -CertStoreLocation 'cert:\localmachine\root' -Password $password | Out-Null; `
+ Import-PfxCertificate -FilePath (Join-Path $env:INSTALL_TEMP '\\certificates\\sitecore-root.pfx') -CertStoreLocation 'cert:\localmachine\my' -Password $password | Out-Null; `
+ # configure Windows to disable DNS caching
+ Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters' -Name 'ServerPriorityTimeLimit' -Value 0 -Type DWord; `
+ # configure app pool group memberships
+ Add-LocalGroupMember -Group 'Performance Monitor Users' -Member $env:IIS_APPPOOL_IDENTITY; `
+ # configure app pool filesystem permissions
+ $rule = New-Object System.Security.AccessControl.FileSystemAccessRule($env:IIS_APPPOOL_IDENTITY, 'FullControl', @('ContainerInherit', 'ObjectInherit'), 'None', 'Allow'); `
+ $acl = Get-Acl -Path $env:IIS_SITE_HOMEDIR_PATH; `
+ $acl.SetAccessRule($rule); `
+ $acl | Set-Acl -Path $env:IIS_SITE_HOMEDIR_PATH; `
+ # configure app pool certificate permissions
+ $rule = New-Object System.Security.AccessControl.FileSystemAccessRule($env:IIS_APPPOOL_IDENTITY, 'Read', 'None', 'None', 'Allow'); `
+ Get-ChildItem -Path 'cert:\localmachine' -Recurse | Where-Object { $_.Issuer -eq 'CN=sitecore-root' -and $_.HasPrivateKey } | ForEach-Object { `
+ $path = [IO.Path]::Combine($env:ProgramData, 'Microsoft\Crypto\RSA\MachineKeys', $_.PrivateKey.CspKeyContainerInfo.UniqueKeyContainerName); `
+ $acl = Get-Acl -Path $path; `
+ $acl.SetAccessRule($rule); `
+ $acl | Set-Acl -Path $path; `
+ }; `
+ # configure SSL binding because Tracking Collection service requires HTTPS
+ $env:IIS_SITE_NAME = 'Default Web Site'; `
+ Import-Module WebAdministration; `
+ $trackingCollectionCert = Import-PfxCertificate -FilePath (Join-Path $env:INSTALL_TEMP '\\certificates\\tracking-collection.pfx') -CertStoreLocation 'cert:\localmachine\my' -Password $password; `
+ New-WebBinding -Name $env:IIS_SITE_NAME -IPAddress '*' -Port '443' -Protocol "https" -HostHeader '*'; `
+ $binding = Get-WebBinding -Name $env:IIS_SITE_NAME -Protocol "https"; `
+ $binding.AddSslCertificate($trackingCollectionCert.GetCertHashString(), 'my'); `
+ # configure SSL flags
+ Set-WebConfigurationProperty -PSPath 'machine/webroot/apphost' -Filter 'system.webServer/security/access' -Name 'sslFlags' -Value 'SslNegotiateCert'; `
+ # delete temporary files
+ Remove-Item -Path $env:INSTALL_TEMP -Force -Recurse;
diff --git a/build/windows/9.3.x/sitecore-xp-ut-collection/build.json b/build/windows/9.3.x/sitecore-xp-ut-collection/build.json
new file mode 100644
index 000000000..6745f2b68
--- /dev/null
+++ b/build/windows/9.3.x/sitecore-xp-ut-collection/build.json
@@ -0,0 +1,12 @@
+{
+ "tags": [{
+ "tag": "sitecore-xp-ut-collection:9.3.0-windowsservercore-${windowsservercore_version}",
+ "build-options": [
+ "--build-arg BASE_IMAGE=mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-${windowsservercore_version}",
+ "--build-arg ASSETS_IMAGE=sitecore-assets:9.3.0-nanoserver-${nanoserver_version}",
+ "--build-arg ASSETS_USE_WDP='C:\\packages\\Sitecore.Tracking.Collection.Service.3.0.0-r00051.268.wdp.zip'",
+ "--build-arg CERTIFICATES_IMAGE=sitecore-certificates:latest-nanoserver-${nanoserver_version}"
+ ]
+ }],
+ "sources": []
+}
\ No newline at end of file
diff --git a/build/windows/9.3.x/sitecore-xp-ut-collection/config/deployment.xml b/build/windows/9.3.x/sitecore-xp-ut-collection/config/deployment.xml
new file mode 100644
index 000000000..12d5556cc
--- /dev/null
+++ b/build/windows/9.3.x/sitecore-xp-ut-collection/config/deployment.xml
@@ -0,0 +1,11 @@
+
+
+
+ false
+
+
+
+ user id=sa;password=8Tombs-Given-Clock#-arming-Alva-debut-Spine-monica-Normal-Ted-About1-chard-Easily-granddad-5Context!;data source=sql;database=Sitecore.Tracking;ConnectRetryCount=5;ConnectRetryInterval=10;Connection Timeout=50;
+
+
+
\ No newline at end of file
diff --git a/build/windows/9.3.x/sitecore-xp-ut-collection/sitecorehost.xml b/build/windows/9.3.x/sitecore-xp-ut-collection/sitecorehost.xml
new file mode 100644
index 000000000..66fdcb4b1
--- /dev/null
+++ b/build/windows/9.3.x/sitecore-xp-ut-collection/sitecorehost.xml
@@ -0,0 +1,56 @@
+
+
+
+
+ true
+
+
+
+ Web
+
+
+
+ Sitecore.Framework.Logging.Serilog.ConfigureSitecoreLogging, Sitecore.Framework.Logging.Serilog
+
+
+ Serilog.Sinks.Literate
+ Serilog.Sinks.RollingFile
+ Serilog.Enrichers.Environment
+
+
+ Debug
+
+
+
+ LiterateConsole
+
+ [{Timestamp:HH:mm:ss} {SourceContext} [{Level}] {Message}{NewLine}{Exception}
+
+
+
+ RollingFile
+
+ Logs\tracking-log-{Date}.txt
+ {Timestamp:o} [{Level:u3}] ({Application}/{MachineName}) {Message}{NewLine}{Exception}
+ 7
+ False
+
+
+
+
+ FromLogContext
+ WithMachineName
+
+
+ SitecoreTracking
+
+
+
+
+ C:/license/license.xml
+
+
\ No newline at end of file
diff --git a/build/windows/9.3.x/sitecore-xp-ut-processing/Dockerfile b/build/windows/9.3.x/sitecore-xp-ut-processing/Dockerfile
new file mode 100644
index 000000000..76445a17e
--- /dev/null
+++ b/build/windows/9.3.x/sitecore-xp-ut-processing/Dockerfile
@@ -0,0 +1,85 @@
+# escape=`
+ARG BASE_IMAGE
+ARG ASSETS_IMAGE
+ARG CERTIFICATES_IMAGE
+
+FROM $ASSETS_IMAGE as assets
+FROM $CERTIFICATES_IMAGE as certificates
+FROM $BASE_IMAGE as build
+
+SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
+
+ARG ASSETS_USE_WDP
+
+COPY --from=assets ["${ASSETS_USE_WDP}", "C:\\temp\\packages\\"]
+
+# expand selected wdp into installation directory
+RUN Expand-Archive -Path 'C:\\temp\\packages\\*.zip' -DestinationPath 'C:\\temp'; `
+ Copy-Item -Path 'C:\\temp\\Content\\Sitecore.Tracking.Processing.Service\\*' -Destination 'C:\\inetpub\\wwwroot' -Recurse -Force;
+
+# copy tools, certificates and transforms
+COPY --from=assets ["C:\\install\\tools\\", "C:\\inetpub\\wwwroot\\temp\\install\\tools\\"]
+COPY --from=certificates ["C:\\certificates\\", "C:\\inetpub\\wwwroot\\temp\\install\\certificates\\"]
+COPY .\\config C:\\inetpub\\wwwroot\\config\\
+
+# Use custom config that contains license path
+COPY .\sitecorehost.xml C:\\inetpub\\wwwroot\\
+
+# add installers
+COPY --from=assets ["C:\\install\\setup\\", "C:\\inetpub\\wwwroot\\temp\\install\\setup\\"]
+
+FROM $BASE_IMAGE
+
+SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
+
+ARG SC_ROLE_EXE
+
+COPY --from=build ["C:\\inetpub\\wwwroot\\", "C:\\inetpub\\wwwroot\\"]
+
+RUN $env:INSTALL_TEMP = 'C:\\inetpub\\wwwroot\\temp\\install'; `
+ $env:IIS_SITE_PATH = 'IIS:\Sites\Default Web Site'; `
+ $env:IIS_SITE_HOMEDIR_PATH = 'C:\\inetpub\\wwwroot'; `
+ $env:IIS_APPPOOL_IDENTITY = 'IIS AppPool\DefaultAppPool'; `
+ # install dependencies
+ Start-Process msiexec.exe -ArgumentList '/i', (Join-Path $env:INSTALL_TEMP '\\setup\\urlrewrite.msi'), '/quiet', '/norestart' -NoNewWindow -Wait; `
+ Start-Process (Join-Path $env:INSTALL_TEMP '\\setup\\vc_redist.exe') -ArgumentList '/install', '/passive', '/norestart' -NoNewWindow -Wait; `
+ Start-Process (Join-Path $env:INSTALL_TEMP '\\setup\\dotnet-hosting.exe') -ArgumentList '/install', '/quiet' -NoNewWindow -Wait; `
+ # install tools
+ Copy-Item -Path (Join-Path $env:INSTALL_TEMP '\\tools') -Force -Recurse -Destination 'C:\\tools' ; `
+ setx /M PATH $($env:PATH + ';C:\tools\scripts;C:\tools\bin;C:\Program Files\dotnet') | Out-Null; `
+ # install certificates
+ $password = ConvertTo-SecureString -String (Get-Content -Path (Join-Path $env:INSTALL_TEMP '\\certificates\\password')) -Force -AsPlainText; `
+ Import-PfxCertificate -FilePath (Join-Path $env:INSTALL_TEMP '\\certificates\\sitecore-root.pfx') -CertStoreLocation 'cert:\localmachine\root' -Password $password | Out-Null; `
+ Import-PfxCertificate -FilePath (Join-Path $env:INSTALL_TEMP '\\certificates\\sitecore-root.pfx') -CertStoreLocation 'cert:\localmachine\my' -Password $password | Out-Null; `
+ # configure Windows to disable DNS caching
+ Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters' -Name 'ServerPriorityTimeLimit' -Value 0 -Type DWord; `
+ # configure app pool group memberships
+ Add-LocalGroupMember -Group 'Performance Monitor Users' -Member $env:IIS_APPPOOL_IDENTITY; `
+ # configure app pool filesystem permissions
+ $rule = New-Object System.Security.AccessControl.FileSystemAccessRule($env:IIS_APPPOOL_IDENTITY, 'FullControl', @('ContainerInherit', 'ObjectInherit'), 'None', 'Allow'); `
+ $acl = Get-Acl -Path $env:IIS_SITE_HOMEDIR_PATH; `
+ $acl.SetAccessRule($rule); `
+ $acl | Set-Acl -Path $env:IIS_SITE_HOMEDIR_PATH; `
+ # configure app pool certificate permissions
+ $rule = New-Object System.Security.AccessControl.FileSystemAccessRule($env:IIS_APPPOOL_IDENTITY, 'Read', 'None', 'None', 'Allow'); `
+ Get-ChildItem -Path 'cert:\localmachine' -Recurse | Where-Object { $_.Issuer -eq 'CN=sitecore-root' -and $_.HasPrivateKey } | ForEach-Object { `
+ $path = [IO.Path]::Combine($env:ProgramData, 'Microsoft\Crypto\RSA\MachineKeys', $_.PrivateKey.CspKeyContainerInfo.UniqueKeyContainerName); `
+ $acl = Get-Acl -Path $path; `
+ $acl.SetAccessRule($rule); `
+ $acl | Set-Acl -Path $path; `
+ }; `
+ # configure SSL binding because Tracking Processing service requires HTTPS
+ $env:IIS_SITE_NAME = 'Default Web Site'; `
+ Import-Module WebAdministration; `
+ $trackingProcessingCert = Import-PfxCertificate -FilePath (Join-Path $env:INSTALL_TEMP '\\certificates\\tracking-processing.pfx') -CertStoreLocation 'cert:\localmachine\my' -Password $password; `
+ New-WebBinding -Name $env:IIS_SITE_NAME -IPAddress '*' -Port '443' -Protocol "https" -HostHeader '*'; `
+ $binding = Get-WebBinding -Name $env:IIS_SITE_NAME -Protocol "https"; `
+ $binding.AddSslCertificate($trackingProcessingCert.GetCertHashString(), 'my'); `
+ # configure SSL flags
+ Set-WebConfigurationProperty -PSPath 'machine/webroot/apphost' -Filter 'system.webServer/security/access' -Name 'sslFlags' -Value 'SslNegotiateCert'; `
+ # delete temporary files
+ Remove-Item -Path $env:INSTALL_TEMP -Force -Recurse;
+
+ENV SC_ROLE_EXE=${SC_ROLE_EXE}
+
+ENTRYPOINT ["powershell", "-NoProfile", "& C:\\inetpub\\wwwroot\\$($env:SC_ROLE_EXE)"]
\ No newline at end of file
diff --git a/build/windows/9.3.x/sitecore-xp-ut-processing/build.json b/build/windows/9.3.x/sitecore-xp-ut-processing/build.json
new file mode 100644
index 000000000..fd38ddc6b
--- /dev/null
+++ b/build/windows/9.3.x/sitecore-xp-ut-processing/build.json
@@ -0,0 +1,13 @@
+{
+ "tags": [{
+ "tag": "sitecore-xp-ut-processing:9.3.0-windowsservercore-${windowsservercore_version}",
+ "build-options": [
+ "--build-arg BASE_IMAGE=mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-${windowsservercore_version}",
+ "--build-arg ASSETS_IMAGE=sitecore-assets:9.3.0-nanoserver-${nanoserver_version}",
+ "--build-arg ASSETS_USE_WDP='C:\\packages\\Sitecore.Tracking.Processing.Service.3.0.0-r00075.427.wdp.zip'",
+ "--build-arg CERTIFICATES_IMAGE=sitecore-certificates:latest-nanoserver-${nanoserver_version}",
+ "--build-arg SC_ROLE_EXE=Tracking.Processing.WebHost.exe"
+ ]
+ }],
+ "sources": []
+}
\ No newline at end of file
diff --git a/build/windows/9.3.x/sitecore-xp-ut-processing/config/deployment.xml b/build/windows/9.3.x/sitecore-xp-ut-processing/config/deployment.xml
new file mode 100644
index 000000000..9b01df70d
--- /dev/null
+++ b/build/windows/9.3.x/sitecore-xp-ut-processing/config/deployment.xml
@@ -0,0 +1,26 @@
+
+
+
+ false
+
+
+
+ user id=sa;password=8Tombs-Given-Clock#-arming-Alva-debut-Spine-monica-Normal-Ted-About1-chard-Easily-granddad-5Context!;data source=sql;database=Sitecore.Tracking;ConnectRetryCount=5;ConnectRetryInterval=10;Connection Timeout=50;
+
+
+
+ http://xconnect
+
+
+
+ 5.0
+
+ 60
+
+ 5
+
+ 1
+
+ 90
+
+
\ No newline at end of file
diff --git a/build/windows/9.3.x/sitecore-xp-ut-processing/sitecorehost.xml b/build/windows/9.3.x/sitecore-xp-ut-processing/sitecorehost.xml
new file mode 100644
index 000000000..1e41911a4
--- /dev/null
+++ b/build/windows/9.3.x/sitecore-xp-ut-processing/sitecorehost.xml
@@ -0,0 +1,55 @@
+
+
+ Production
+
+
+ Web
+
+
+
+ Sitecore.Framework.Logging.Serilog.ConfigureSitecoreLogging, Sitecore.Framework.Logging.Serilog
+
+
+ Serilog.Sinks.Console
+ Serilog.Sinks.RollingFile
+ Serilog.Enrichers.Environment
+
+
+ Information
+
+
+
+ LiterateConsole
+
+ [{Timestamp:HH:mm:ss} {Level:u3}] {SourceContext} - {Message}{NewLine}{Exception}
+
+
+
+ RollingFile
+
+ App_Data\logs\Processing-{Date}.log
+ [{Timestamp:o}] [{Level:u3}] [{Application}/{MachineName}] {SourceContext} - {Message}{NewLine}{Exception}
+
+
+
+
+ FromLogContext
+ WithMachineName
+
+
+ Tracking.Processing.WebHost
+
+
+
+
+
+
+
+ Sitecore.Tracking.Processing.Engine.Services.XConnectAggregationService, Sitecore.Tracking.Processing.Engine
+ Sitecore.Tracking.Processing.Abstractions.Services.IAggregationService, Sitecore.Tracking.Processing.Abstractions
+
+
+
+ C:/license/license.xml
+
+
\ No newline at end of file
diff --git a/build/windows/9.3.x/sitecore-xp-ut-sqldev/Dockerfile b/build/windows/9.3.x/sitecore-xp-ut-sqldev/Dockerfile
new file mode 100644
index 000000000..1fee70c83
--- /dev/null
+++ b/build/windows/9.3.x/sitecore-xp-ut-sqldev/Dockerfile
@@ -0,0 +1,20 @@
+# escape=`
+ARG BASE_IMAGE
+ARG ASSETS_IMAGE
+
+FROM $ASSETS_IMAGE as assets
+FROM $BASE_IMAGE as build
+
+ARG ASSETS_USE_DACPAC_ZIP
+
+ENV INSTALL_PATH='C:\\install\\' `
+ DATA_PATH='C:\\data\\' `
+ TEMP_PATH='c:\\temp'
+
+COPY --from=assets ["${ASSETS_USE_DACPAC_ZIP}", "${INSTALL_PATH}"]
+
+COPY . ${INSTALL_PATH}
+
+RUN & (Join-Path $env:INSTALL_PATH "\\Extract-Databases.ps1") -Path $env:INSTALL_PATH; `
+ & (Join-Path $env:INSTALL_PATH "\\Install-Databases.ps1") -InstallPath $env:INSTALL_PATH -DataPath $env:DATA_PATH; `
+ Get-ChildItem -Path $env:INSTALL_PATH -Exclude "*.mdf", "*.ldf" | Remove-Item -Force;
\ No newline at end of file
diff --git a/build/windows/9.3.x/sitecore-xp-ut-sqldev/Extract-Databases.ps1 b/build/windows/9.3.x/sitecore-xp-ut-sqldev/Extract-Databases.ps1
new file mode 100644
index 000000000..c1e3d1fed
--- /dev/null
+++ b/build/windows/9.3.x/sitecore-xp-ut-sqldev/Extract-Databases.ps1
@@ -0,0 +1,35 @@
+[CmdletBinding()]
+param(
+ [Parameter(Mandatory = $true)]
+ [ValidateScript( { Test-Path $_ -PathType 'Container' })]
+ [string]$Path
+)
+
+Add-Type -Assembly "System.IO.Compression"
+Add-Type -Assembly "System.IO.Compression.FileSystem"
+
+Get-ChildItem -Path $Path -Filter "*.zip" | ForEach-Object {
+ $zipPath = $_.FullName
+
+ try
+ {
+ $stream = New-Object IO.FileStream($zipPath, [IO.FileMode]::Open)
+ $zip = New-Object IO.Compression.ZipArchive($stream, [IO.Compression.ZipArchiveMode]::Read)
+
+ ($zip.Entries | Where-Object { $_.FullName -like "Sitecore.Tracking.dacpac" }) | Foreach-Object {
+ [IO.Compression.ZipFileExtensions]::ExtractToFile($_, (Join-Path $Path $_.Name), $true)
+ }
+ }
+ finally
+ {
+ if ($zip -ne $null)
+ {
+ $zip.Dispose()
+ }
+
+ if ($stream -ne $null)
+ {
+ $stream.Dispose()
+ }
+ }
+}
\ No newline at end of file
diff --git a/build/windows/9.3.x/sitecore-xp-ut-sqldev/Install-Databases.ps1 b/build/windows/9.3.x/sitecore-xp-ut-sqldev/Install-Databases.ps1
new file mode 100644
index 000000000..45608942b
--- /dev/null
+++ b/build/windows/9.3.x/sitecore-xp-ut-sqldev/Install-Databases.ps1
@@ -0,0 +1,34 @@
+[CmdletBinding()]
+param(
+ [Parameter(Mandatory = $true)]
+ [ValidateScript( { Test-Path $_ -PathType 'Container' })]
+ [string]$InstallPath,
+ [Parameter(Mandatory = $true)]
+ [ValidateScript( { Test-Path $_ -PathType 'Container' })]
+ [string]$DataPath
+)
+
+[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | Out-Null
+
+$server = New-Object Microsoft.SqlServer.Management.Smo.Server($env:COMPUTERNAME)
+$server.Properties["DefaultFile"].Value = $InstallPath
+$server.Properties["DefaultLog"].Value = $InstallPath
+$server.Alter()
+
+$sqlPackageExePath = Get-Item "C:\Program Files\Microsoft SQL Server\*\DAC\bin\SqlPackage.exe" | Select-Object -Last 1 -Property FullName -ExpandProperty FullName
+
+Get-ChildItem -Path $InstallPath -Filter "*.dacpac" | ForEach-Object {
+ $databaseName = $_.BaseName
+ $dacpacPath = Join-Path $InstallPath ("\{0}" -f $_.Name)
+
+ # Install
+ & $sqlPackageExePath /a:Publish /sf:$dacpacPath /tdn:$databaseName /tsn:$env:COMPUTERNAME /q
+
+ # Detach
+ Invoke-Sqlcmd -Query "EXEC MASTER.dbo.sp_detach_db @dbname = N'$databaseName', @keepfulltextindexfile = N'false'"
+}
+
+$server = New-Object Microsoft.SqlServer.Management.Smo.Server($env:COMPUTERNAME)
+$server.Properties["DefaultFile"].Value = $DataPath
+$server.Properties["DefaultLog"].Value = $DataPath
+$server.Alter()
\ No newline at end of file
diff --git a/build/windows/9.3.x/sitecore-xp-ut-sqldev/build.json b/build/windows/9.3.x/sitecore-xp-ut-sqldev/build.json
new file mode 100644
index 000000000..1d9019150
--- /dev/null
+++ b/build/windows/9.3.x/sitecore-xp-ut-sqldev/build.json
@@ -0,0 +1,12 @@
+{
+ "tags": [{
+ "tag": "sitecore-xp-ut-sqldev:9.3.0-windowsservercore-${windowsservercore_version}",
+ "build-options": [
+ "--memory 4GB",
+ "--build-arg BASE_IMAGE=sitecore-xp-sqldev:9.3.0-windowsservercore-${windowsservercore_version}",
+ "--build-arg ASSETS_IMAGE=sitecore-assets:9.3.0-nanoserver-${nanoserver_version}",
+ "--build-arg ASSETS_USE_DACPAC_ZIP='C:\\packages\\Sitecore.Tracking.Sql.3.0.0-r00061.352.dacpac.zip'"
+ ]
+ }],
+ "sources": []
+}
\ No newline at end of file
diff --git a/build/windows/dependencies/sitecore-certificates/Dockerfile b/build/windows/dependencies/sitecore-certificates/Dockerfile
index a40930674..91dc57295 100644
--- a/build/windows/dependencies/sitecore-certificates/Dockerfile
+++ b/build/windows/dependencies/sitecore-certificates/Dockerfile
@@ -14,6 +14,8 @@ RUN $env:ROOT_CERT_NAME = 'sitecore-root'; `
$env:IDENTITY_SSL_CERT_NAME = 'identity'; `
$env:CM_SSL_CERT_NAME = 'cm'; `
$env:AUTHORINGHOST_SSL_CERT_NAME = 'authoringhost'; `
+ $env:TRACKING_COLLECTION_SSL_CERT_NAME = 'tracking-collection'; `
+ $env:TRACKING_PROCESSING_SSL_CERT_NAME = 'tracking-processing'; `
$env:CERT_STORE = 'Cert:\LocalMachine\My'; `
$env:CERT_PASSWORD = 'Twelve4-4Cranial-Rag-kayo4-Ragweed-This8-grunge9-0Foss-7finalist-hubby'; `
New-Item -Path 'C:\\certificates' -ItemType 'Directory' | Out-Null; `
@@ -27,6 +29,8 @@ RUN $env:ROOT_CERT_NAME = 'sitecore-root'; `
New-SelfSignedCertificate -CertStoreLocation $env:CERT_STORE -DnsName $env:IDENTITY_SSL_CERT_NAME, '127.0.0.1', 'localhost' -Signer $rootCert -KeyExportPolicy 'Exportable' -Provider 'Microsoft Enhanced RSA and AES Cryptographic Provider' | Export-PfxCertificate -FilePath ('C:\\certificates\\{1}.pfx' -f $env:CERT_PATH, $env:IDENTITY_SSL_CERT_NAME) -Password $password | Out-Null; `
New-SelfSignedCertificate -CertStoreLocation $env:CERT_STORE -DnsName $env:CM_SSL_CERT_NAME, '127.0.0.1', 'localhost' -Signer $rootCert -KeyExportPolicy 'Exportable' -Provider 'Microsoft Enhanced RSA and AES Cryptographic Provider' | Export-PfxCertificate -FilePath ('C:\\certificates\\{1}.pfx' -f $env:CERT_PATH, $env:CM_SSL_CERT_NAME) -Password $password | Out-Null; `
New-SelfSignedCertificate -CertStoreLocation $env:CERT_STORE -DnsName $env:AUTHORINGHOST_SSL_CERT_NAME, '127.0.0.1', 'localhost' -Signer $rootCert -KeyExportPolicy 'Exportable' -Provider 'Microsoft Enhanced RSA and AES Cryptographic Provider' | Export-PfxCertificate -FilePath ('C:\\certificates\\{1}.pfx' -f $env:CERT_PATH, $env:AUTHORINGHOST_SSL_CERT_NAME) -Password $password | Out-Null; `
+ New-SelfSignedCertificate -CertStoreLocation $env:CERT_STORE -DnsName $env:TRACKING_COLLECTION_SSL_CERT_NAME, '127.0.0.1', 'localhost' -Signer $rootCert -KeyExportPolicy 'Exportable' -Provider 'Microsoft Enhanced RSA and AES Cryptographic Provider' | Export-PfxCertificate -FilePath ('C:\\certificates\\{1}.pfx' -f $env:CERT_PATH, $env:TRACKING_COLLECTION_SSL_CERT_NAME) -Password $password | Out-Null; `
+ New-SelfSignedCertificate -CertStoreLocation $env:CERT_STORE -DnsName $env:TRACKING_PROCESSING_SSL_CERT_NAME, '127.0.0.1', 'localhost' -Signer $rootCert -KeyExportPolicy 'Exportable' -Provider 'Microsoft Enhanced RSA and AES Cryptographic Provider' | Export-PfxCertificate -FilePath ('C:\\certificates\\{1}.pfx' -f $env:CERT_PATH, $env:TRACKING_PROCESSING_SSL_CERT_NAME) -Password $password | Out-Null; `
Import-PfxCertificate -FilePath ('C:\\certificates\\sitecore-root.pfx') -CertStoreLocation 'cert:\localmachine\root' -Password $password | Out-Null; `
(Get-ChildItem -Path $env:CERT_STORE | Where-Object { $_.Subject -eq ('CN={0}' -f $env:ROOT_CERT_NAME ) }).Thumbprint | Out-File -FilePath ('C:\\certificates\\{0}.thumbprint' -f $env:ROOT_CERT_NAME) -NoNewline -Encoding utf8; `
(Get-ChildItem -Path $env:CERT_STORE | Where-Object { $_.Subject -eq ('CN={0}' -f $env:XCONNECT_SSL_CERT_NAME ) }).Thumbprint | Out-File -FilePath ('C:\\certificates\\{0}.thumbprint' -f $env:XCONNECT_SSL_CERT_NAME) -NoNewline -Encoding utf8; `
@@ -36,6 +40,8 @@ RUN $env:ROOT_CERT_NAME = 'sitecore-root'; `
(Get-ChildItem -Path $env:CERT_STORE | Where-Object { $_.Subject -eq ('CN={0}' -f $env:IDENTITY_SSL_CERT_NAME ) }).Thumbprint | Out-File -FilePath ('C:\\certificates\\{0}.thumbprint' -f $env:IDENTITY_SSL_CERT_NAME) -NoNewline -Encoding utf8; `
(Get-ChildItem -Path $env:CERT_STORE | Where-Object { $_.Subject -eq ('CN={0}' -f $env:CM_SSL_CERT_NAME ) }).Thumbprint | Out-File -FilePath ('C:\\certificates\\{0}.thumbprint' -f $env:CM_SSL_CERT_NAME) -NoNewline -Encoding utf8; `
(Get-ChildItem -Path $env:CERT_STORE | Where-Object { $_.Subject -eq ('CN={0}' -f $env:AUTHORINGHOST_SSL_CERT_NAME ) }).Thumbprint | Out-File -FilePath ('C:\\certificates\\{0}.thumbprint' -f $env:AUTHORINGHOST_SSL_CERT_NAME) -NoNewline -Encoding utf8; `
+ (Get-ChildItem -Path $env:CERT_STORE | Where-Object { $_.Subject -eq ('CN={0}' -f $env:TRACKING_COLLECTION_SSL_CERT_NAME ) }).Thumbprint | Out-File -FilePath ('C:\\certificates\\{0}.thumbprint' -f $env:TRACKING_COLLECTION_SSL_CERT_NAME) -NoNewline -Encoding utf8; `
+ (Get-ChildItem -Path $env:CERT_STORE | Where-Object { $_.Subject -eq ('CN={0}' -f $env:TRACKING_PROCESSING_SSL_CERT_NAME ) }).Thumbprint | Out-File -FilePath ('C:\\certificates\\{0}.thumbprint' -f $env:TRACKING_PROCESSING_SSL_CERT_NAME) -NoNewline -Encoding utf8; `
$env:CERT_PASSWORD | Out-File -FilePath 'C:\\certificates\\password' -NoNewline -Encoding utf8;
FROM $BASE_IMAGE
diff --git a/build/windows/tests/9.3.x/README.md b/build/windows/tests/9.3.x/README.md
index 900fa1199..164317bdb 100644
--- a/build/windows/tests/9.3.x/README.md
+++ b/build/windows/tests/9.3.x/README.md
@@ -33,6 +33,26 @@ PS> docker-compose -f docker-compose.xp.sh.yml up
- `/sitecore/system/Marketing Control Panel/Experience Analytics/Dimensions/Pages/By page/Computer`
- `/sitecore/system/Marketing Control Panel/Experience Analytics/Dimensions/Pages/By page/MobilePhone`
- `/sitecore/system/Marketing Control Panel/Experience Analytics/Dimensions/Pages/By page/Tablet`
+
+## Running XP with Universal Tracker (UT)
+
+### Considerations
+
+- The Universal Tracker module (version 3) doesn't natively support working with environment variables in configuration files. For this reason, the connection string of the Sitecore Tracking database has been hardcoded in the `\config\deployment.xml` configuration patch file.
+
+- The status pages for both Universal Tracker services has been configured to be accessible remotely, browsing the following urls:
+ - Tracking Collection Status: `https://tracking-collection/status`
+ - Tracking Processing Status: `http://tracking-processing/status`
+
+- The Tracking Processing batch size has been lowered to `1` to facilitate local development.
+
+### Starting XP with Universal Tracker instance
+
+To start Sitecore XP with Universal Tracker services run the following command in PowerShell:
+
+```{.ps1}
+PS> docker-compose -f docker-compose.xp.ut.yml up
+```
## Running XC
diff --git a/build/windows/tests/9.3.x/data/tracking-collection/.gitkeep b/build/windows/tests/9.3.x/data/tracking-collection/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/build/windows/tests/9.3.x/data/tracking-processing/.gitkeep b/build/windows/tests/9.3.x/data/tracking-processing/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/build/windows/tests/9.3.x/docker-compose.xp.ut.yml b/build/windows/tests/9.3.x/docker-compose.xp.ut.yml
new file mode 100644
index 000000000..be2110676
--- /dev/null
+++ b/build/windows/tests/9.3.x/docker-compose.xp.ut.yml
@@ -0,0 +1,211 @@
+version: "2.4"
+
+services:
+
+ monitor:
+ image: rahnemann/windows-hosts-writer:1.3-nanoserver-${NANOSERVER_VERSION}
+ volumes:
+ - C:\windows\system32\drivers\etc:C:\driversetc
+ - source: '\\.\pipe\docker_engine'
+ target: '\\.\pipe\docker_engine'
+ type: npipe
+
+ sql:
+ image: ${REGISTRY}sitecore-xp-ut-sqldev:${SITECORE_VERSION}-windowsservercore-${WINDOWSSERVERCORE_VERSION}
+ volumes:
+ - .\data\sql:C:\Data
+ mem_limit: 2GB
+ ports:
+ - "44010:1433"
+ environment:
+ SA_PASSWORD: ${SQL_SA_PASSWORD}
+ ACCEPT_EULA: "Y"
+
+ solr:
+ image: ${REGISTRY}sitecore-xp-solr:${SITECORE_VERSION}-nanoserver-${NANOSERVER_VERSION}
+ volumes:
+ - .\data\solr:C:\Data
+ mem_limit: 1GB
+ ports:
+ - "44011:8983"
+
+ xconnect:
+ image: ${REGISTRY}sitecore-xp-xconnect:${SITECORE_VERSION}-windowsservercore-${WINDOWSSERVERCORE_VERSION}
+ entrypoint: powershell.exe -Command "& C:\\tools\\entrypoints\\xconnect\\Development.ps1"
+ volumes:
+ - .\data\xconnect:C:\inetpub\wwwroot\App_Data\logs
+ mem_limit: 1GB
+ environment:
+ ENTRYPOINT_STDOUT_XCONNECT_LOG_ENABLED: 'true'
+ ENTRYPOINT_STDOUT_IIS_ACCESS_LOG_ENABLED: 'true'
+ ENTRYPOINT_STDOUT_IIS_ERROR_LOG_ENABLED: 'true'
+ SITECORE_LICENSE: ${SITECORE_LICENSE}
+ SITECORE_SITECORE:XCONNECT:COLLECTIONSEARCH:SERVICES:SOLR.SOLRREADERSETTINGS:OPTIONS:REQUIREHTTPS: 'false'
+ SITECORE_SITECORE:XCONNECT:SEARCHINDEXER:SERVICES:SOLR.SOLRWRITERSETTINGS:OPTIONS:REQUIREHTTPS: 'false'
+ SITECORE_CONNECTIONSTRINGS_MESSAGING: Data Source=sql;Database=Sitecore.Messaging;User ID=sa;Password=${SQL_SA_PASSWORD}
+ SITECORE_CONNECTIONSTRINGS_PROCESSING.ENGINE.STORAGE: Data Source=sql;Database=Sitecore.ProcessingEngineStorage;User ID=sa;Password=${SQL_SA_PASSWORD}
+ SITECORE_CONNECTIONSTRINGS_REPORTING: Data Source=sql;Database=Sitecore.Reporting;User ID=sa;Password=${SQL_SA_PASSWORD}
+ SITECORE_CONNECTIONSTRINGS_XDB.MARKETINGAUTOMATION: Data Source=sql;Database=Sitecore.MarketingAutomation;User ID=sa;Password=${SQL_SA_PASSWORD}
+ SITECORE_CONNECTIONSTRINGS_XDB.PROCESSING.POOLS: Data Source=sql;Database=Sitecore.Processing.Pools;User ID=sa;Password=${SQL_SA_PASSWORD}
+ SITECORE_CONNECTIONSTRINGS_XDB.REFERENCEDATA: Data Source=sql;Database=Sitecore.ReferenceData;User ID=sa;Password=${SQL_SA_PASSWORD}
+ SITECORE_CONNECTIONSTRINGS_COLLECTION: Data Source=sql;Database=Sitecore.Xdb.Collection.ShardMapManager;User ID=sa;Password=${SQL_SA_PASSWORD}
+ SITECORE_CONNECTIONSTRINGS_SOLRCORE: http://solr:8983/solr/sitecore_xdb
+ depends_on:
+ sql:
+ condition: service_healthy
+ solr:
+ condition: service_started
+
+ xconnect-automationengine:
+ image: ${REGISTRY}sitecore-xp-xconnect-automationengine:${SITECORE_VERSION}-windowsservercore-${WINDOWSSERVERCORE_VERSION}
+ entrypoint: powershell.exe -Command "& C:\\tools\\entrypoints\\worker\\Development.ps1"
+ volumes:
+ - .\data\xconnect-automationengine:C:\worker\App_Data\logs
+ mem_limit: 500MB
+ environment:
+ SITECORE_LICENSE: ${SITECORE_LICENSE}
+ SITECORE_CONNECTIONSTRINGS_XCONNECT.COLLECTION: http://xconnect
+ SITECORE_CONNECTIONSTRINGS_XDB.MARKETINGAUTOMATION: Data Source=sql;Database=Sitecore.MarketingAutomation;User ID=sa;Password=${SQL_SA_PASSWORD}
+ SITECORE_CONNECTIONSTRINGS_XDB.REFERENCEDATA: Data Source=sql;Database=Sitecore.ReferenceData;User ID=sa;Password=${SQL_SA_PASSWORD}
+ SITECORE_CONNECTIONSTRINGS_MESSAGING: Data Source=sql;Database=Sitecore.Messaging;User ID=sa;Password=${SQL_SA_PASSWORD}
+ depends_on:
+ sql:
+ condition: service_healthy
+ xconnect:
+ condition: service_started
+
+ xconnect-indexworker:
+ image: ${REGISTRY}sitecore-xp-xconnect-indexworker:${SITECORE_VERSION}-windowsservercore-${WINDOWSSERVERCORE_VERSION}
+ entrypoint: powershell.exe -Command "& C:\\tools\\entrypoints\\worker\\Development.ps1"
+ volumes:
+ - .\data\xconnect-indexworker:C:\worker\App_Data\logs
+ mem_limit: 500MB
+ environment:
+ SITECORE_LICENSE: ${SITECORE_LICENSE}
+ SITECORE_CONNECTIONSTRINGS_COLLECTION: Data Source=sql;Initial Catalog=Sitecore.Xdb.Collection.ShardMapManager;User ID=sa;Password=${SQL_SA_PASSWORD}
+ SITECORE_CONNECTIONSTRINGS_SOLRCORE: http://solr:8983/solr/sitecore_xdb
+ SITECORE_SITECORE:XCONNECT:SEARCHINDEXER:SERVICES:SOLR.SOLRREADERSETTINGS:OPTIONS:REQUIREHTTPS: 'false'
+ SITECORE_SITECORE:XCONNECT:SEARCHINDEXER:SERVICES:SOLR.SOLRWRITERSETTINGS:OPTIONS:REQUIREHTTPS: 'false'
+ depends_on:
+ sql:
+ condition: service_healthy
+ solr:
+ condition: service_started
+
+ xconnect-processingengine:
+ image: ${REGISTRY}sitecore-xp-xconnect-processingengine:${SITECORE_VERSION}-windowsservercore-${WINDOWSSERVERCORE_VERSION}
+ entrypoint: powershell.exe -Command "& C:\\tools\\entrypoints\\worker\\Development.ps1"
+ volumes:
+ - .\data\xconnect-processingengine:C:\worker\App_Data\logs
+ mem_limit: 500MB
+ restart: unless-stopped
+ environment:
+ SITECORE_LICENSE: ${SITECORE_LICENSE}
+ SITECORE_CONNECTIONSTRINGS_PROCESSING.ENGINE.STORAGE: Data Source=sql;Database=Sitecore.Processing.Engine.Storage;User ID=sa;Password=${SQL_SA_PASSWORD}
+ SITECORE_CONNECTIONSTRINGS_PROCESSING.ENGINE.TASKS: Data Source=sql;Database=Sitecore.Processing.Engine.Tasks;User ID=sa;Password=${SQL_SA_PASSWORD}
+ SITECORE_CONNECTIONSTRINGS_PROCESSING.WEBAPI.BLOB: http://xconnect
+ SITECORE_CONNECTIONSTRINGS_PROCESSING.WEBAPI.TABLE: http://xconnect
+ SITECORE_CONNECTIONSTRINGS_XCONNECT.COLLECTION: http://xconnect
+ SITECORE_CONNECTIONSTRINGS_XCONNECT.CONFIGURATION: http://xconnect
+ SITECORE_CONNECTIONSTRINGS_XCONNECT.SEARCH: http://xconnect
+ SITECORE_CONNECTIONSTRINGS_MESSAGING: Data Source=sql;Database=Sitecore.Messaging;User ID=sa;Password=${SQL_SA_PASSWORD}
+ SITECORE_CONNECTIONSTRINGS_REPORTING: Data Source=sql;Database=Sitecore.Reporting;User ID=sa;Password=${SQL_SA_PASSWORD}
+ SITECORE_SETTINGS:SERILOG:MINIMUMLEVEL:DEFAULT: Information
+ depends_on:
+ sql:
+ condition: service_healthy
+ xconnect:
+ condition: service_started
+
+ cd:
+ image: ${REGISTRY}sitecore-xp-cd:${SITECORE_VERSION}-windowsservercore-${WINDOWSSERVERCORE_VERSION}
+ entrypoint: powershell.exe -Command "& C:\\tools\\entrypoints\\iis\\Development.ps1"
+ ports:
+ - "44002:80"
+ environment:
+ SITECORE_LICENSE: ${SITECORE_LICENSE}
+ SITECORE_APPSETTINGS_ROLE:DEFINE: ContentDelivery
+ SITECORE_CONNECTIONSTRINGS_SECURITY: Data Source=sql;Initial Catalog=Sitecore.Core;User ID=sa;Password=${SQL_SA_PASSWORD}
+ SITECORE_CONNECTIONSTRINGS_WEB: Data Source=sql;Initial Catalog=Sitecore.Web;User ID=sa;Password=${SQL_SA_PASSWORD}
+ SITECORE_CONNECTIONSTRINGS_EXPERIENCEFORMS: Data Source=sql;Initial Catalog=Sitecore.ExperienceForms;User ID=sa;Password=${SQL_SA_PASSWORD}
+ SITECORE_CONNECTIONSTRINGS_SOLR.SEARCH: http://solr:8983/solr
+ SITECORE_CONNECTIONSTRINGS_MESSAGING: Data Source=sql;Database=Sitecore.Messaging;User ID=sa;Password=${SQL_SA_PASSWORD}
+ SITECORE_CONNECTIONSTRINGS_EXM.MASTER: Data Source=sql;Database=Sitecore.EXM.Master;User ID=sa;Password=${SQL_SA_PASSWORD}
+ SITECORE_CONNECTIONSTRINGS_XCONNECT.COLLECTION: http://xconnect
+ SITECORE_CONNECTIONSTRINGS_XDB.MARKETINGAUTOMATION.OPERATIONS.CLIENT: http://xconnect
+ SITECORE_CONNECTIONSTRINGS_SITECORE.REPORTING.CLIENT: http://xconnect
+ SITECORE_CONNECTIONSTRINGS_XDB.REFERENCEDATA.CLIENT: http://xconnect
+ depends_on:
+ sql:
+ condition: service_healthy
+ solr:
+ condition: service_started
+ xconnect:
+ condition: service_started
+
+ cm:
+ image: ${REGISTRY}sitecore-xp-standalone:${SITECORE_VERSION}-windowsservercore-${WINDOWSSERVERCORE_VERSION}
+ entrypoint: powershell.exe -Command "& C:\\tools\\entrypoints\\iis\\Development.ps1"
+ ports:
+ - "44001:80"
+ environment:
+ SITECORE_LICENSE: ${SITECORE_LICENSE}
+ SITECORE_APPSETTINGS_ROLE:DEFINE: Standalone
+ SITECORE_CONNECTIONSTRINGS_CORE: Data Source=sql;Initial Catalog=Sitecore.Core;User ID=sa;Password=${SQL_SA_PASSWORD}
+ SITECORE_CONNECTIONSTRINGS_SECURITY: Data Source=sql;Initial Catalog=Sitecore.Core;User ID=sa;Password=${SQL_SA_PASSWORD}
+ SITECORE_CONNECTIONSTRINGS_MASTER: Data Source=sql;Initial Catalog=Sitecore.Master;User ID=sa;Password=${SQL_SA_PASSWORD}
+ SITECORE_CONNECTIONSTRINGS_WEB: Data Source=sql;Initial Catalog=Sitecore.Web;User ID=sa;Password=${SQL_SA_PASSWORD}
+ SITECORE_CONNECTIONSTRINGS_EXPERIENCEFORMS: Data Source=sql;Initial Catalog=Sitecore.ExperienceForms;User ID=sa;Password=${SQL_SA_PASSWORD}
+ SITECORE_CONNECTIONSTRINGS_SOLR.SEARCH: http://solr:8983/solr
+ SITECORE_CONNECTIONSTRINGS_MESSAGING: Data Source=sql;Database=Sitecore.Messaging;User ID=sa;Password=${SQL_SA_PASSWORD}
+ SITECORE_CONNECTIONSTRINGS_XDB.MARKETINGAUTOMATION: Data Source=sql;Database=Sitecore.MarketingAutomation;User ID=sa;Password=${SQL_SA_PASSWORD}
+ SITECORE_CONNECTIONSTRINGS_XDB.PROCESSING.POOLS: Data Source=sql;Database=Sitecore.Processing.Pools;User ID=sa;Password=${SQL_SA_PASSWORD}
+ SITECORE_CONNECTIONSTRINGS_XDB.REFERENCEDATA: Data Source=sql;Database=Sitecore.ReferenceData;User ID=sa;Password=${SQL_SA_PASSWORD}
+ SITECORE_CONNECTIONSTRINGS_XDB.PROCESSING.TASKS: Data Source=sql;Database=Sitecore.Processing.Tasks;User ID=sa;Password=${SQL_SA_PASSWORD}
+ SITECORE_CONNECTIONSTRINGS_EXM.MASTER: Data Source=sql;Database=Sitecore.EXM.Master;User ID=sa;Password=${SQL_SA_PASSWORD}
+ SITECORE_CONNECTIONSTRINGS_REPORTING: Data Source=sql;Database=Sitecore.Reporting;User ID=sa;Password=${SQL_SA_PASSWORD}
+ SITECORE_CONNECTIONSTRINGS_SITECORE.REPORTING.CLIENT: http://xconnect
+ SITECORE_CONNECTIONSTRINGS_XCONNECT.COLLECTION: http://xconnect
+ SITECORE_CONNECTIONSTRINGS_XDB.MARKETINGAUTOMATION.OPERATIONS.CLIENT: http://xconnect
+ SITECORE_CONNECTIONSTRINGS_XDB.MARKETINGAUTOMATION.REPORTING.CLIENT: http://xconnect
+ SITECORE_CONNECTIONSTRINGS_XDB.REFERENCEDATA.CLIENT: http://xconnect
+ SITECORE_APPSETTINGS_TELERIK.ASYNCUPLOAD.CONFIGURATIONENCRYPTIONKEY: ${TELERIK_ENCRYPTION_KEY}
+ SITECORE_APPSETTINGS_TELERIK.UPLOAD.CONFIGURATIONHASHKEY: ${TELERIK_ENCRYPTION_KEY}
+ SITECORE_APPSETTINGS_TELERIK.WEB.UI.DIALOGPARAMETERSENCRYPTIONKEY: ${TELERIK_ENCRYPTION_KEY}
+ depends_on:
+ sql:
+ condition: service_healthy
+ solr:
+ condition: service_started
+ xconnect:
+ condition: service_started
+
+ tracking-collection:
+ image: ${REGISTRY}sitecore-xp-ut-collection:${SITECORE_VERSION}-windowsservercore-${WINDOWSSERVERCORE_VERSION}
+ entrypoint: powershell.exe -Command "& C:\\tools\\entrypoints\\iis\\Development.ps1"
+ mem_limit: 1GB
+ volumes:
+ - ${LICENSE_PATH}:C:\license
+ - .\data\tracking-collection:C:\inetpub\wwwroot\logs
+ ports:
+ - "44021:80"
+ - "44022:443"
+ depends_on:
+ sql:
+ condition: service_healthy
+
+ tracking-processing:
+ image: ${REGISTRY}sitecore-xp-ut-processing:${SITECORE_VERSION}-windowsservercore-${WINDOWSSERVERCORE_VERSION}
+ entrypoint: powershell.exe -Command "& C:\\tools\\entrypoints\\ut-processing\\Development.ps1"
+ mem_limit: 1GB
+ volumes:
+ - ${LICENSE_PATH}:C:\license
+ - .\data\tracking-processing:C:\inetpub\wwwroot\app_data\logs
+ ports:
+ - "44023:80"
+ - "44024:443"
+ depends_on:
+ sql:
+ condition: service_healthy
+ xconnect:
+ condition: service_started
\ No newline at end of file