Add create-staging-env-with-addon

This works. Have to adjust syncfromlivetostaging.sh.

Domain replacement works first time, but subsequent runs will result to  Replacement value  is identical to search value.

Because on subsequent runs, the imported database will have the same url as that of the source.
main
jay 2023-09-07 07:11:24 +00:00
parent 640437e9fd
commit 030d5c12e9
1 changed files with 175 additions and 0 deletions

View File

@ -0,0 +1,175 @@
type: install
name: Staging Environment
description: Create staging environment from selected live environment
logo: https://d33v4339jhl8k0.cloudfront.net/docs/assets/629d6154f38bfd3f4a4c3046/images/62ce4ffaeabe9a7235b3d220/white-300.png
skipNodeEmails: false
settings:
fields:
- caption: Target Environment
editable: true
type: envlist
name: sourceEnv
valueField: shortdomain
tooltip: Select the Target Environment
- type: string
name: nodeGroup
caption: Node Group
default: cp
hideLabel: true
hidden: true
- caption: Display Name
editable: true
type: string
name: displayName
default: My Environment
tooltip: Enter the desired display name for the environment
- caption: Environment Name
type: envname
name: stagingEnv
randomName: true
showFullDomain: true
hidden: false
dependsOn: regionFieldName
displayName: ${settings.displayName}
onInstall:
- initNodes:
envName: ${settings.sourceEnv}
namespace: sourceEnv
- cloneSource
- remoteOperations:
envName: ${settings.sourceEnv}
nodeGroup: ${settings.nodeGroup}
cmd: |-
rm -r /var/www/webroot/ROOT/dbexport; mkdir /var/www/webroot/ROOT/dbexport
touch /var/www/webroot/ROOT/dbexport/dbexport.sql
wp db export /var/www/webroot/ROOT/dbexport/dbexport.sql --path=/var/www/webroot/ROOT/ --quiet
wget --directory-prefix=/var/www/webroot/ROOT/ https://deploy-proxy.mightybox.io/kits/Staging_Environment/raw/branch/main/getlivedomain.sh
chmod 701 /var/www/webroot/ROOT/getlivedomain.sh
user: root
sayYes: true
- initNodes:
envName: ${settings.stagingEnv}
namespace: stagingEnv
- mountLive: NFS4
- createLocalScript
- installSyncAddon
actions:
initNodes:
envName: ${this.envName}
namespace: ${this.namespace}
script: |
let nodes = {}, resp = api.env.control.GetEnvInfo(envName, session)
if (resp.result != 0) return resp
resp.nodes.sort((node1, node2) => node1.id - node2.id)
for (let node of resp.nodes) {
nodes[node.nodeGroup] = nodes[node.nodeGroup] || []
nodes[node.nodeGroup].push(node)
}
let globals = {}
globals[namespace] = nodes
return { result: 0, onAfterReturn: { setGlobals: globals } }
cloneSource:
- env.control.CloneEnv:
envName: ${settings.sourceEnv}
srcEnvName: ${settings.sourceEnv}
dstEnvName: ${settings.stagingEnv}
useExternalMounts: false
remoteOperations:
env.control.ExecCmdByGroup:
envName: ${settings.sourceEnv}
nodeGroup: ${this.nodeGroup}
commandList:
- command: ${this.cmd}
mountLive:
- log: Mount Storage
- env.file.AddMountPointById:
envName: ${settings.stagingEnv}
nodeId: ${globals.stagingEnv.cp[0].id}
path: /var/www/webroot/sourcefiles
protocol: nfs4
sourcePath: /var/www/webroot/ROOT
sourceNodeId: ${globals.sourceEnv.cp[0].id}
name: LiveFilesMount
readOnly: false
createLocalScript:
- env.control.ExecCmdByGroup:
envName: ${settings.stagingEnv}
nodeGroup: cp
commandList:
- command: |-
wget --directory-prefix=/var/www/webroot/ROOT/ https://deploy-proxy.mightybox.io/kits/Staging_Environment/raw/branch/main/syncfromlivetostaging.sh
chmod 701 /var/www/webroot/ROOT/syncfromlivetostaging.sh
installSyncAddon:
install:
envName: ${settings.stagingEnv}
nodeGroup: cp
jps:
type: update
name: Sync From Live
description: Sync from live website
actions:
LiveToStagingSync:
- env.control.ExecCmdByGroup:
envName: ${settings.sourceEnv}
nodeGroup: cp
commandList:
- command: |-
cd /var/www/webroot/ROOT/ && wp db export /var/www/webroot/ROOT/dbexport.sql --path=/var/www/webroot/ROOT/
cd /var/www/webroot/ROOT/
./getlivedomain.sh
- env.control.ExecCmdByGroup:
envName: ${settings.stagingEnv}
nodeGroup: cp
commandList:
- command: |-
cd /var/www/webroot/ROOT/
./syncfromlivetostaging.sh
StagingToLiveSync:
- cmd [cp] : |-
cd /var/www/webroot/ROOT/ && wp db export /var/www/webroot/sourcefiles/dbexport.sql --path=/var/www/webroot/ROOT/ && cp -R -u /var/www/webroot/ROOT/* /var/www/webroot/sourcefiles/
- env.control.ExecCmdByGroup:
envName: ${settings.sourceEnv}
nodeGroup: cp
commandList:
- command: |-
cd /var/www/webroot/ROOT/ && wp db import /var/www/webroot/ROOT/dbexport.sql --path=/var/www/webroot/ROOT/ && wp cache flush
buttons:
- caption: Sync From Live
action: LiveToStagingSync
confirmText: Do you want to initiate sync process?
loadingText: Syching from live...
successText: The syching process has been finished successfully.
logsPath: "/var/www/webroot/LiveToStagingSync.log"
logsNodeGroup: cp
menu:
confirmText: Do you really want to sync this staging environemnt to the Live site?
loadingText: Load text while waiting
action: StagingToLiveSync
caption: Sync To Live
successText: Staging site synched to Live succesfully
title: Sync Staging To Live
submitButtonText: Sync To Live
logsPath: "/var/www/webroot/StagingToSyncSync.log"
logsNodeGroup: cp