Skip to content

Commit

Permalink
fix
Browse files Browse the repository at this point in the history
  • Loading branch information
dbjpanda committed Oct 9, 2018
1 parent 1e5fa69 commit 305b9f5
Show file tree
Hide file tree
Showing 5 changed files with 78 additions and 61 deletions.
1 change: 0 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ NETWORK_NAME=traefik-network
DRUPAL_VERSION=8

# Database Config
MYSQL_HOSTNAME=test.mariadb
MYSQL_DATABASE=drupal
MYSQL_USER=test
MYSQL_PASSWORD=pass
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,5 @@

# Ignore .env files as they are personal
.env
travis_rsa
travis_rsa.pub
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,9 @@ Step 1
./travis/server-setup.sh
``````
Step 2 (Change travis env variables such as DEPLOY_SERVER, SECURE etc. as per your requirement. If you want to encrypt any sensitive variables execute below commands)
Step 2 (Change travis env variables such as DEPLOY_SERVER, secure etc. according to your requirement and encrypt sensitive variables like below)
``````
travis encrypt MASTER_MYSQL_USER=travis MASTER_MYSQL_PASSWORD=travistest MASTER_MYSQL_ROOT_PASSWORD=helloworld MASTER_ADMIN_PASS=pass DEV_MYSQL_USER=travis DEV_MYSQL_PASSWORD=travistest DEV_MYSQL_ROOT_PASSWORD=helloworld DEV_ADMIN_PASS=pass DOCKER_USERNAME=dbjpanda DOCKER_PASSWORD=pass
travis encrypt MYSQL_USER=travis MYSQL_PASSWORD=travistest MYSQL_ROOT_PASSWORD=helloworld ADMIN_PASS=pass DOCKER_USERNAME=dbjpanda DOCKER_PASSWORD=pass
``````
Step 3
Expand Down
2 changes: 1 addition & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ services:
PROJECT_NAME: ${PROJECT_NAME}
DOMAIN_NAME: ${DOMAIN_NAME}
DRUPAL_VERSION: ${DRUPAL_VERSION}
MYSQL_HOSTNAME: ${MYSQL_HOSTNAME}
MYSQL_HOSTNAME: ${PROJECT_NAME}.mariadb
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
Expand Down
130 changes: 73 additions & 57 deletions travis/deploy.sh
Original file line number Diff line number Diff line change
@@ -1,73 +1,89 @@
#!/usr/bin/env bash

# Prepare Env variables
PROJECT_NAME=${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH}
MYSQL_HOSTNAME=${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH}.mariadb
if [ ${TRAVIS_BRANCH} == master ]; then
SERVER=${MASTER_SERVER}
DOMAIN_NAME=${MASTER_DOMAIN}
MYSQL_HOSTNAME=${PROJECT_NAME}.mariadb
MYSQL_USER=${MASTER_MYSQL_USER}
MYSQL_PASSWORD=${MASTER_MYSQL_PASSWORD}
MYSQL_ROOT_PASSWORD=${MASTER_MYSQL_ROOT_PASSWORD}
ADMIN_PASS=${MASTER_ADMIN_PASS}
fi
if [ ${TRAVIS_BRANCH} == dev ]; then
SERVER=${DEV_SERVER}
DOMAIN_NAME=${DEV_DOMAIN}
MYSQL_HOSTNAME=${PROJECT_NAME}.mariadb
MYSQL_USER=${DEV_MYSQL_USER}
MYSQL_PASSWORD=${DEV_MYSQL_PASSWORD}
MYSQL_ROOT_PASSWORD=${DEV_MYSQL_ROOT_PASSWORD}
ADMIN_PASS=${DEV_ADMIN_PASS}
fi
set -xe

ssh -o StrictHostKeyChecking=no "${DEPLOY_USER}"@"${SERVER_IP}" << EOF
echo "#################################################################################################################"
ssh -o StrictHostKeyChecking=no "${DEPLOY_USER}"@"${SERVER}" << EOF
# Functions Definition
drupal_install(){
if [ \$(docker network ls | grep -c traefik-network) == 0 ]; then
echo "Creating traefik network";
docker network create -d bridge traefik-network;
echo "Creating traefik network"
docker network create -d bridge traefik-network
fi
if [ \$(docker ps | grep -c traefik) == 0 ]; then
echo "Creating traefik container";
docker run -d --network=traefik-network -p 80:80 -p 8080:8080 -v /var/run/docker.sock:/var/run/docker.sock --name=traefik traefik:latest --api --docker;
fi
if [ ! -e .env ]; then
cp .env.example .env;
echo "Creating traefik container"
docker run -d --network=traefik-network -p 80:80 -p 8080:8080 -v /var/run/docker.sock:/var/run/docker.sock --name=traefik traefik:latest --api --docker
fi
PROJECT_NAME=${PROJECT_NAME} DOMAIN_NAME=${DOMAIN_NAME} MYSQL_HOSTNAME=${MYSQL_HOSTNAME} MYSQL_USER=${MYSQL_USER} MYSQL_PASSWORD=${MYSQL_PASSWORD} docker-compose up -d;
docker exec -i ${PROJECT_NAME} composer install --no-dev --no-progress --optimize-autoloader --no-interaction --no-ansi;
docker exec -i ${PROJECT_NAME} drush si --account-pass=${ADMIN_PASS} --yes;
}
EXISTING_MASTER_PROJECT=\$(ls | grep 'master' | grep -v 'backup')
EXISTING_DEV_PROJECT=\$(ls | grep 'dev')
if [ ${TRAVIS_BRANCH} == 'dev' ]; then
if [ ! -d ${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH}-* ]; then
git clone -b ${TRAVIS_BRANCH} --single-branch [email protected]:${TRAVIS_REPO_SLUG}.git ${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH}-$RANDOM
cd ${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH}-*
git checkout ${TRAVIS_COMMIT::8}
cp .env.example .env
PROJECT_NAME=${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH} DOMAIN_NAME=${DEV_DOMAIN} MYSQL_USER=${MYSQL_USER} MYSQL_PASSWORD=${MYSQL_PASSWORD} MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} docker-compose up -d
else
cd ${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH}-*
git pull origin ${TRAVIS_BRANCH}
git checkout ${TRAVIS_COMMIT::8}
PROJECT_NAME=${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH} DOMAIN_NAME=${DEV_DOMAIN} MYSQL_USER=${MYSQL_USER} MYSQL_PASSWORD=${MYSQL_PASSWORD} MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} docker-compose up -d
fi
docker exec -i ${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH} composer install --no-dev --no-progress --optimize-autoloader --no-interaction --no-ansi
docker exec -i ${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH} drush si --account-pass=${ADMIN_PASS} --yes;
if [ ! -d "${PROJECT_NAME}" ]; then
git clone -b ${TRAVIS_BRANCH} --single-branch [email protected]:${TRAVIS_REPO_SLUG}.git ${PROJECT_NAME};
cd ${PROJECT_NAME};
drupal_install;
else
cd ${PROJECT_NAME};
git pull origin ${TRAVIS_BRANCH};
if [ \$(docker exec ${PROJECT_NAME} drush status bootstrap | grep -c Successful) == 0 ]; then
echo "Previous Drupal has been corrupted. Install a fresh Drupal again";
docker rm -f \$(docker ps -a -q)
docker system prune -f
cd ..
sudo rm -rf ${PROJECT_NAME}
git clone -b ${TRAVIS_BRANCH} --single-branch [email protected]:${TRAVIS_REPO_SLUG}.git ${PROJECT_NAME};
cd ${PROJECT_NAME};
drupal_install;
if [ \$(docker exec \${EXISTING_MASTER_PROJECT} drush status bootstrap 2> /dev/null | grep -c Successful) == 1 ]; then
docker exec -i \${EXISTING_MASTER_PROJECT} drush sql-dump --result-file=../dump.sql
sudo mv ../${TRAVIS_REPO_SLUG#*/}-master-*/code/drupal/dump.sql ./code/drupal
docker exec -i ${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH} drush sql-cli < ./code/drupal/dump.sql
docker exec -i ${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH} drush -y cim
else
docker exec -i ${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH} drush cim --partial
docker exec -i ${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH} drush -y csim live_config
fi
docker exec -i ${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH} drush -y dcdi
docker exec -i ${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH} drush updb
docker exec -i ${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH} drush cr
fi
PROJECT_NAME=${PROJECT_NAME} DOMAIN_NAME=${DOMAIN_NAME} MYSQL_HOSTNAME=${MYSQL_HOSTNAME} MYSQL_USER=${MYSQL_USER} MYSQL_PASSWORD=${MYSQL_PASSWORD} docker-compose up -d;
docker exec -i ${PROJECT_NAME} composer install --no-dev --no-progress --optimize-autoloader --no-interaction --no-ansi;
docker exec -i ${PROJECT_NAME} drush cim;
docker exec -i ${PROJECT_NAME} drush cr;
fi
if [ ${TRAVIS_BRANCH} == 'master' ]; then
if [ ! -d ${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH}-* ]; then
git clone -b ${TRAVIS_BRANCH} --single-branch [email protected]:${TRAVIS_REPO_SLUG}.git ${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH}-${TRAVIS_COMMIT::8}
cd ${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH}-${TRAVIS_COMMIT::8}
cp .env.example .env
PROJECT_NAME=${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH}-${TRAVIS_COMMIT::8} DOMAIN_NAME=${PRO_DOMAIN} MYSQL_USER=${MYSQL_USER} MYSQL_PASSWORD=${MYSQL_PASSWORD} MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} docker-compose up -d
docker exec -i ${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH}-${TRAVIS_COMMIT::8} composer install --no-dev --no-progress --optimize-autoloader --no-interaction --no-ansi
docker exec -i ${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH}-${TRAVIS_COMMIT::8} drush si --account-pass=${ADMIN_PASS} --yes;
docker exec -i ${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH}-${TRAVIS_COMMIT::8} drush cim --partial
docker exec -i ${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH}-${TRAVIS_COMMIT::8} drush -y csim live_config
docker exec -i ${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH}-${TRAVIS_COMMIT::8} drush -y dcdi
docker exec -i ${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH}-${TRAVIS_COMMIT::8} drush updb
docker exec -i ${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH}-${TRAVIS_COMMIT::8} drush cr
else
if [ -d backup-${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH}-* ]; then
echo "Removing previous backup"
docker rm -f -v \$(docker ps -a -q --filter name=backup)
sudo rm -rf backup-${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH}-*
fi
mv \${EXISTING_MASTER_PROJECT} backup-\${EXISTING_MASTER_PROJECT}
mv \${EXISTING_DEV_PROJECT} ${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH}-${TRAVIS_COMMIT::8}
cd ${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH}-${TRAVIS_COMMIT::8}
PROJECT_NAME=${TRAVIS_REPO_SLUG#*/}-${TRAVIS_BRANCH}-${TRAVIS_COMMIT::8} DOMAIN_NAME=${PRO_DOMAIN} MYSQL_USER=${MYSQL_USER} MYSQL_PASSWORD=${MYSQL_PASSWORD} MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} docker-compose -p \${EXISTING_DEV_PROJECT} up -d
cd ..
ACTIVE_MASTER_PROJECT_NAME=\$(docker inspect --format "{{ index .Config.Labels \"com.docker.compose.project\"}}" \${EXISTING_MASTER_PROJECT})
cd backup-\${EXISTING_MASTER_PROJECT}
PROJECT_NAME=backup-\${EXISTING_MASTER_PROJECT} DOMAIN_NAME=${PRO_DOMAIN} MYSQL_USER=${MYSQL_USER} MYSQL_PASSWORD=${MYSQL_PASSWORD} MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} docker-compose -p \${ACTIVE_MASTER_PROJECT_NAME} up --no-start
rm .env
fi
fi
echo "#################################################################################################################"
EOF

0 comments on commit 305b9f5

Please sign in to comment.