Created
February 28, 2018 12:00
-
-
Save kcabading/ab1db4c42bf596ec43679a2f252c48e3 to your computer and use it in GitHub Desktop.
Revisions
-
kcabading created this gist
Feb 28, 2018 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,96 @@ #!/bin/bash # PLACEHOLDERS # [STAGING_FOLDER] - staging directory in your server # [STAGING_URL] - staging url # [STAGING_USER] - staging user in the server # [STAGING_MYSQLUSER] - staging mysql user # [STAGING_MYSQLPASSWORD] - staging mysql password # [ROOTUSER] - Mysql root user # [ROOTPASSWORD] - Mysql root password echo "BRANCH: $GIT_BRANCH"; echo "NAME: $JOB_NAME"; echo "BUILD#: $3"; if [ $# -ne 3 ] && [ $# -ne 5 ] then printf "Invalid number of arguments provided. \$1=branchname \$2=jobname \$3=buildnumber\nUsage: /root/scripts/deploy.sh $GIT_BRANCH $JOB_NAME\n"; exit 1; fi #assign params GIT_BRANCH=$1 JOB_NAME=$2 BUILD_NUMBER=$3 DOMAIN=$4 USERNAME=$5 #initialise constants PROJECTWORKSPACE="/var/lib/jenkins/workspace/$JOB_NAME"; PROJECTSTAGING="[STAGING_FOLDER]/$JOB_NAME"; WORDPRESS="/root/repo/WordPress"; PROJECT=`echo $JOB_NAME | sed -E -e "s/(.com|.net|.org)//"`; echo $GIT_BRANCH; if [ $GIT_BRANCH = "origin/staging" ];then echo "BUILDING STAGING"; # First build? if [ $BUILD_NUMBER = 1 ];then echo "INIT STAGING"; sudo mkdir -p $PROJECTSTAGING; fi # Sync Job workspace to staging sudo rsync -avz $PROJECTWORKSPACE/ $PROJECTSTAGING/; sudo rsync -avz $WORDPRESS/ $PROJECTSTAGING/; # First build? if [ $BUILD_NUMBER = 1 ] || [ ! -d "$PROJECTSTAGING" ] ;then # Update wp-config variables sudo sed -e "s/\$WP_SITEURL\|\$WP_HOME/[STAGING_URL]/$JOB_NAME/g" -e "s/\$DB_NAME/staging_${PROJECT}_db/g" -e "s/\$DB_USER/[STAGING_MYSQLUSER]/g" -e "s/\$DB_PASSWORD/[STAGING_MYSQLPASSWORD]/g" -e "s/\$DB_HOST/localhost/g" $PROJECTSTAGING/wp-config-sample.php | sudo tee $PROJECTSTAGING/wp-config.php; # Generate Salt Secret Key #SALT=$(curl -L https://api.wordpress.org/secret-key/1.1/salt/) && echo $SALT | sudo tee -a $PROJECTSTAGING/wp-config.php; # import initial sql file mysql -u[ROOTUSER] -p'[ROOTPASSWORD]' -e "CREATE DATABASE staging_${PROJECT}_db; GRANT ALL PRIVILEGES ON staging_${PROJECT}_db.* TO [STAGING_MYSQLUSER]@localhost"; echo "Database created"; mysql -u[STAGING_MYSQLUSER] -p'[STAGING_MYSQLPASSWORD]' staging_${PROJECT}_db < db.sql; echo "db_name: staging_${JOB_NAME}_db \n"; echo "db_user: staging_[STAGING_MYSQLUSER] \n"; fi sudo chmod -R 755 $PROJECTSTAGING; sudo chown -R [STAGINGUSER]:[STAGINGUSER] $PROJECTSTAGING; echo "SUCCESSFULLY BUILD AND DEPLOYED STAGING"; else echo "BUILDING LIVE"; #DBNAME=`echo $JOB_NAME | sed -E -e "s/(.com|.net|.org)//"`; PROJECTWEBROOT="/home/$USERNAME/www"; # Account directory exist? if [ -d "$PROJECTWEBROOT" ]; then echo "SYNCING PROJECT"; # Sync Job Workspace to production. sudo rsync -avz $PROJECTWORKSPACE/ $PROJECTWEBROOT/; sudo rsync -avz $WORDPRESS/ $PROJECTWEBROOT/; sudo chmod -R 755 $PROJECTWEBROOT; sudo chown -R $USERNAME:$USERNAME $PROJECTWEBROOT/; else # Create Account yes | /root/scripts/createaccount.sh $DOMAIN $USERNAME; # Generate password DBPASSWORD=`cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 16 | head -n 1`; # First deployment, create database and user mysql -u[ROOTUSER] -p'[ROOTPASSWORD]' -e "CREATE DATABASE ${USERNAME}_db; GRANT ALL PRIVILEGES ON ${USERNAME}_db.* TO ${USERNAME}@localhost identified by '${DBPASSWORD}'"; # Restore database mysql -u$USERNAME -p"$DBPASSWORD" ${USERNAME}_db < db.sql; # Sync Job Workspace to production sudo rsync -avz $PROJECTWORKSPACE/ $PROJECTWEBROOT/; sudo rsync -avz $WORDPRESS/ $PROJECTWEBROOT/; # Update wp-config variables sudo sed -e "s/\$WP_SITEURL\|\$WP_HOME/https:\/\/$DOMAIN/g" -e "s/\$DB_NAME/${USERNAME}_db/g" -e "s/\$DB_USER/${USERNAME}/g" -e "s/\$DB_PASSWORD/${DBPASSWORD}/g" -e "s/\$DB_HOST/localhost/g" $PROJECTWEBROOT/wp-config-sample.php | sudo tee $PROJECTWEBROOT/wp-config.php; # Generate Salt Secret Key #SALT=$(curl -L https://api.wordpress.org/secret-key/1.1/salt/) && echo $SALT | sudo tee -a $PROJECTWEBROOT/wp-config.php; sudo chmod -R 755 $PROJECTWEBROOT; sudo chown -R $USERNAME:$USERNAME $PROJECTWEBROOT/; echo "db_name: ${USERNAME}_db"; echo "db_user: ${USERNAME}"; echo "db_password: ${DBPASSWORD}"; fi fi