-
Notifications
You must be signed in to change notification settings - Fork 0
/
up.ps1
143 lines (120 loc) · 4.74 KB
/
up.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
[CmdletBinding(DefaultParameterSetName = "no-arguments")]
Param (
[Parameter(HelpMessage = "Alternative login using app client.",
ParameterSetName = "by-pass")]
[bool]$ByPass = $false
)
$topologyArray = "xp0", "xp1", "xm1";
$currentTopology = "xp0"
$ErrorActionPreference = "Stop";
$startDirectory = ".\run\sitecore-";
$workinDirectoryPath;
$envCheck;
# Double check whether init has been run
$envCheckVariable = "HOST_LICENSE_FOLDER";
foreach ($topology in $topologyArray)
{
$envCheck = Get-Content (Join-Path -Path ($startDirectory + $topology) -ChildPath .env) -Encoding UTF8 | Where-Object { $_ -imatch "^$envCheckVariable=.+" }
if ($envCheck) {
$workinDirectoryPath = $startDirectory + $topology;
$currentTopology = $topology
break
}
}
if (-not $envCheck) {
throw "$envCheckVariable does not have a value. Did you run 'init.ps1 -InitEnv'?"
}
Push-Location $workinDirectoryPath
# Build all containers in the Sitecore instance, forcing a pull of latest base containers
Write-Host "Building containers..." -ForegroundColor Green
docker-compose build
if ($LASTEXITCODE -ne 0) {
Write-Error "Container build failed, see errors above."
}
# Start the Sitecore instance
Write-Host "Starting Sitecore environment..." -ForegroundColor Green
docker-compose up -d
Pop-Location
# Wait for Traefik to expose CM route
Write-Host "Waiting for CM to become available..." -ForegroundColor Green
$startTime = Get-Date
do {
Start-Sleep -Milliseconds 100
try {
$status = Invoke-RestMethod "http://localhost:8079/api/http/routers/cm-secure@docker"
} catch {
if ($_.Exception.Response.StatusCode.value__ -ne "404") {
throw
}
}
} while ($status.status -ne "enabled" -and $startTime.AddSeconds(15) -gt (Get-Date))
if (-not $status.status -eq "enabled") {
$status
Write-Error "Timeout waiting for Sitecore CM to become available via Traefik proxy. Check CM container logs."
}
if ($ByPass) {
dotnet sitecore login --cm https://cm.multisite_poc.localhost/ --auth https://id.multisite_poc.localhost/ --allow-write true --client-id "SitecoreCLIServer" --client-secret "testsecret" --client-credentials true
}else {
dotnet sitecore login --cm https://cm.multisite_poc.localhost/ --auth https://id.multisite_poc.localhost/ --allow-write true
}
if ($LASTEXITCODE -ne 0) {
Write-Error "Unable to log into Sitecore, did the Sitecore environment start correctly? See logs above."
}
# Populate Solr managed schemas to avoid errors during item deploy
Write-Host "Populating Solr managed schema..." -ForegroundColor Green
dotnet sitecore index schema-populate
Write-Host "Rebuilding indexes..." -ForegroundColor Green
dotnet sitecore index rebuild
##
## This script will sync the JSS sample site on first run, and then serialize it.
## Subsequent executions will only push the serialized site. You may wish to remove /
## simplify this logic if using this starter for your own development.
##
# JSS sample has already been deployed and serialized, push the serialized items
if (Test-Path .\src\items\content) {
Write-Host "Pushing items to Sitecore..." -ForegroundColor Green
dotnet sitecore ser push --publish
if ($LASTEXITCODE -ne 0) {
Write-Error "Serialization push failed, see errors above."
}
# JSS sample has not been deployed yet. Use its deployment process to initialize.
} else {
# Some items are needed for JSS to be able to deploy.
Write-Host "Pushing init items to Sitecore..." -ForegroundColor Green
dotnet sitecore ser push --include InitItems
if ($LASTEXITCODE -ne 0) {
Write-Error "Serialization push failed, see errors above."
}
Write-Host "Deploying JSS application..." -ForegroundColor Green
Push-Location src\rendering
try {
jss deploy items -c -d
if (Test-Path ".\data\routes\da-DK.yml"){
jss deploy items -c -d --language da-DK
}
} finally {
Pop-Location
}
if ($LASTEXITCODE -ne 0) {
Write-Error "JSS deploy failed, see errors above."
}
dotnet sitecore publish
if ($LASTEXITCODE -ne 0) {
Write-Error "Item publish failed, see errors above."
}
Write-Host "Pulling JSS deployed items..." -ForegroundColor Green
dotnet sitecore ser pull
}
if (($currentTopology -eq "xm1") -or ($currentTopology -eq "xp1")){
Write-Host "Restart CD" -ForegroundColor Green
Push-Location $workinDirectoryPath
docker-compose restart cd
Pop-Location
}
Write-Host "Opening site..." -ForegroundColor Green
Start-Process https://cm.multisite_poc.localhost/sitecore/
Start-Process https://www.multisite_poc.localhost/
Write-Host ""
Write-Host "Use the following command to monitor your Rendering Host:" -ForegroundColor Green
Write-Host "docker-compose logs -f rendering"
Write-Host ""