Store all the deployment related script and process files under SVN
1. Create the following folder structure under svn tools directory
a. Existing repo:
https://repos.exphosted.com/svnrepos/tools/
b. Add the below struture in the existing repo
https://repos.exphosted.com/svnrepos/tools/scripts/product_name1/deployment https://repos.exphosted.com/svnrepos/tools/scripts/product_name1/database_backup https://repos.exphosted.com/svnrepos/tools/scripts/product_name1/services https://repos.exphosted.com/svnrepos/tools/scripts/product_name1/[additional scripts goes here with proper folder name]
Eg: 1. Recordexa
1. Deployment script
RepoURL: https://repos.exphosted.com/svnrepos/tools/scripts/recordexa/deployment/
deployment/
development/
tincan/
Capfile
config/
lib/
runcap.sh
staging/
tincan/
Capfile
config/
lib/
runcap.sh
production/
tincan/
Capfile
config/
lib/
runcap.sh
2. Database backup script
RepoURL: https://repos.exphosted.com/svnrepos/tools/scripts/recordexa/database_backup/
database_backup/
development/
runbackup.sh
staging/
runbackup.sh
production/
runbackup.sh
3. Services script
RepoURL: https://repos.exphosted.com/svnrepos/tools/scripts/recordexa/services/
services/
status_of_services.sh
tomcat_sss.sh
development/
god.sh
staging/
god.sh
production/
god.sh
Note: god.sh goes under environments specific as this script has environment variable (RAILS_ENV=development) if this can be passed dynamically then this can be set global for all environments
Eg: 2. Learnexa
1. Deployment script
RepoURL: https://repos.exphosted.com/svnrepos/tools/scripts/learnexa/deployment/
deployment/
development/
crossbow/
Capfile
config/
lib/
runcap.sh
staging/
crossbow/
Capfile
config/
lib/
runcap.sh
production/
crossbow/
Capfile
config/
lib/
runcap.sh
2. Database backup script
RepoURL: https://repos.exphosted.com/svnrepos/tools/scripts/learnexa/database_backup/
database_backup/
development/
runbackup.sh
staging/
runbackup.sh
production/
runbackup.sh
3. Services script
RepoURL: https://repos.exphosted.com/svnrepos/tools/scripts/recordexa/services/
#Add all services
2. Add other scripts and process files in the same structure based on the product
3. First time - Checkout the code based on the product and it's environment as a app user, So that those folders/files will be under svn,
Following each individual folder(deployment, database_backup, services) has to be checked-out, We should not checkout by the top level directory, As in our server we don't have such directory structure(product_name1/deployment, product_name1/database_backup, product_name1/services) we only have the inner level structure.
https://repos.exphosted.com/svnrepos/tools/scripts/product_name1/deployment https://repos.exphosted.com/svnrepos/tools/scripts/product_name1/database_backup https://repos.exphosted.com/svnrepos/tools/scripts/product_name1/services
eg:
a. Checkout by folder
cd /home/expdev01
svn co https://repos.exphosted.com/svnrepos/tools/scripts/recordexa/deployment/production
b. Checkout by specific files
cd /deploy/systasks
svn co https://repos.exphosted.com/svnrepos/tools/scripts/recordexa/services/production/god.sh
4. In future if you modify any of this folder/files mention it in the release specification in wiki, Before the deployment this has to be updated by doing 'svn up' and then normal deployment steps has to be followed
a. Checkout by specific files (If you have changes in specific file the do svn up for the specific file by navigating to the specific directory structure)
cd /deploy/systasks
svn export https://repos.exphosted.com/svnrepos/tools/scripts/recordexa/services/production/god.sh (or svn co https://repos.exphosted.com/svnrepos/tools/scripts/recordexa/services/production/god.sh
</code>
b. Checkout by folder
cd /home/expdev01
svn co https://repos.exphosted.com/svnrepos/tools/scripts/recordexa/deployment/production