-
Notifications
You must be signed in to change notification settings - Fork 22
/
Copy pathinstall.sh
executable file
·162 lines (124 loc) · 6.73 KB
/
install.sh
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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
#!/bin/bash
VALID_ENVIRONMENTS=" production staging devbox latest deploy integration stage qa "
MY_PATH=`dirname $(readlink -f "$0")`
RELEASEFOLDER=$(readlink -f "${MY_PATH}/../../..")
function usage {
echo "Usage:"
echo " $0 -e <environment> [-r <releaseFolder>] [-s]"
echo " -e Environment (e.g. production, staging, devbox,...)"
echo " -s If set the systemstorage will not be imported"
echo ""
exit $1
}
while getopts 'e:r:s' OPTION ; do
case "${OPTION}" in
e) ENVIRONMENT="${OPTARG}";;
r) RELEASEFOLDER=`echo "${OPTARG}" | sed -e "s/\/*$//" `;; # delete last slash
s) SKIPIMPORTFROMSYSTEMSTORAGE=true;;
\?) echo; usage 1;;
esac
done
if [ ! -f "${RELEASEFOLDER}/htdocs/index.php" ] ; then echo "Invalid release folder" ; exit 1; fi
if [ ! -f "${RELEASEFOLDER}/tools/n98-magerun.phar" ] ; then echo "Could not find n98-magerun.phar" ; exit 1; fi
if [ ! -f "${RELEASEFOLDER}/tools/apply.php" ] ; then echo "Could not find apply.php" ; exit 1; fi
if [ ! -f "${RELEASEFOLDER}/Configuration/settings.csv" ] ; then echo "Could not find settings.csv" ; exit 1; fi
# Checking environment
if [ -z "${ENVIRONMENT}" ]; then echo "ERROR: Please provide an environment code (e.g. -e staging)"; exit 1; fi
if [[ "${VALID_ENVIRONMENTS}" =~ " ${ENVIRONMENT} " ]] ; then
echo "Environment: ${ENVIRONMENT}"
else
echo "ERROR: Illegal environment code" ; exit 1;
fi
echo
echo "Linking to shared directories"
echo "-----------------------------"
if [[ -n ${SKIPSHAREDFOLDERCONFIG} ]] && ${SKIPSHAREDFOLDERCONFIG} ; then
echo "Skipping shared directory config because parameter was set"
else
SHAREDFOLDER="${RELEASEFOLDER}/../../shared"
if [ ! -d "${SHAREDFOLDER}" ] ; then
echo "Could not find '../../shared'. Trying '../../../shared' now"
SHAREDFOLDER="${RELEASEFOLDER}/../../../shared";
fi
if [ ! -d "${SHAREDFOLDER}" ] ; then echo "Shared directory ${SHAREDFOLDER} not found"; exit 1; fi
if [ ! -d "${SHAREDFOLDER}/media" ] ; then echo "Shared directory ${SHAREDFOLDER}/media not found"; exit 1; fi
if [ ! -d "${SHAREDFOLDER}/var" ] ; then echo "Shared directory ${SHAREDFOLDER}/var not found"; exit 1; fi
if [ -d "${RELEASEFOLDER}/htdocs/media" ]; then echo "Found existing media folder that shouldn't be there"; exit 1; fi
if [ -d "${RELEASEFOLDER}/htdocs/var" ]; then echo "Found existing var folder that shouldn't be there"; exit 1; fi
echo "Setting symlink (${RELEASEFOLDER}/htdocs/media) to shared media folder (${SHAREDFOLDER}/media)"
ln -s "${SHAREDFOLDER}/media" "${RELEASEFOLDER}/htdocs/media" || { echo "Error while linking to shared media directory" ; exit 1; }
echo "Setting symlink (${RELEASEFOLDER}/htdocs/var) to shared var folder (${SHAREDFOLDER}/var)"
ln -s "${SHAREDFOLDER}/var" "${RELEASEFOLDER}/htdocs/var" || { echo "Error while linking to shared var directory" ; exit 1; }
fi
echo
echo "Running modman"
echo "--------------"
cd "${RELEASEFOLDER}" || { echo "Error while switching to release directory" ; exit 1; }
tools/modman deploy-all --force || { echo "Error while running modman" ; exit 1; }
echo
echo "Systemstorage"
echo "-------------"
if [[ -n ${SKIPIMPORTFROMSYSTEMSTORAGE} ]] && ${SKIPIMPORTFROMSYSTEMSTORAGE} ; then
echo "Skipping import system storage backup because parameter was set"
else
if [ -z "${MASTER_SYSTEM}" ] ; then
if [ ! -f "${RELEASEFOLDER}/Configuration/mastersystem.txt" ] ; then echo "Could not find mastersystem.txt"; exit 1; fi
MASTER_SYSTEM=`cat ${RELEASEFOLDER}/Configuration/mastersystem.txt`
if [ -z "${MASTER_SYSTEM}" ] ; then echo "Error reading master system"; exit 1; fi
fi
if [ "${MASTER_SYSTEM}" == "${ENVIRONMENT}" ] ; then
echo "Current environment is the master environment. Skipping import."
else
echo "Current environment is not the master environment. Importing system storage..."
if [ -z "${PROJECT}" ] ; then
if [ ! -f "${RELEASEFOLDER}/Configuration/project.txt" ] ; then echo "Could not find project.txt"; exit 1; fi
PROJECT=`cat ${RELEASEFOLDER}/Configuration/project.txt`
if [ -z "${PROJECT}" ] ; then echo "Error reading project name"; exit 1; fi
fi
# Apply db settings
cd "${RELEASEFOLDER}/htdocs" || { echo "Error while switching to htdocs directory" ; exit 1; }
../tools/apply.php "${ENVIRONMENT}" ../Configuration/settings.csv --groups db || { echo "Error while applying db settings" ; exit 1; }
if [ -z "${SYSTEM_STORAGE_ROOT_PATH}" ] ; then
SYSTEM_STORAGE_ROOT_PATH="/home/systemstorage/systemstorage/${PROJECT}/backup/${MASTER_SYSTEM}"
fi
# Import systemstorage
../tools/systemstorage_import.sh -p "${RELEASEFOLDER}/htdocs/" -s "${SYSTEM_STORAGE_ROOT_PATH}" || { echo "Error while importing systemstorage"; exit 1; }
fi
fi
echo
echo "Applying settings"
echo "-----------------"
cd "${RELEASEFOLDER}/htdocs" || { echo "Error while switching to htdocs directory" ; exit 1; }
../tools/apply.php ${ENVIRONMENT} ../Configuration/settings.csv || { echo "Error while applying settings" ; exit 1; }
echo
if [ -f "${RELEASEFOLDER}/htdocs/shell/aoe_classpathcache.php" ] ; then
echo
echo "Setting revalidate class path cache flag (Aoe_ClassPathCache)"
echo "-------------------------------------------------------------"
cd "${RELEASEFOLDER}/htdocs/shell" || { echo "Error while switching to htdocs/shell directory" ; exit 1; }
php aoe_classpathcache.php -action setRevalidateFlag || { echo "Error while revalidating Aoe_ClassPathCache" ; exit 1; }
fi
echo
echo "Triggering Magento setup scripts via n98-magerun"
echo "------------------------------------------------"
cd -P "${RELEASEFOLDER}/htdocs/" || { echo "Error while switching to htdocs directory" ; exit 1; }
../tools/n98-magerun.phar sys:setup:run || { echo "Error while triggering the update scripts using n98-magerun" ; exit 1; }
# Cache should be handled by customizing the id_prefix!
#echo
#echo "Cache"
#echo "-----"
#
#if [ "${ENVIRONMENT}" == "devbox" ] || [ "${ENVIRONMENT}" == "latest" ] || [ "${ENVIRONMENT}" == "deploy" ] ; then
# cd -P "${RELEASEFOLDER}/htdocs/" || { echo "Error while switching to htdocs directory" ; exit 1; }
# ../tools/n98-magerun.phar cache:flush || { echo "Error while flushing cache using n98-magerun" ; exit 1; }
# ../tools/n98-magerun.phar cache:enable || { echo "Error while enabling cache using n98-magerun" ; exit 1; }
#fi
if [ -f "${RELEASEFOLDER}/htdocs/maintenance.flag" ] ; then
echo
echo "Deleting maintenance.flag"
echo "-------------------------"
rm "${RELEASEFOLDER}/htdocs/maintenance.flag" || { echo "Error while deleting the maintenance.flag" ; exit 1; }
fi
echo
echo "Successfully completed installation."
echo