From fb05a38a963784716c105e7f214615ad13d2f272 Mon Sep 17 00:00:00 2001 From: Igor Scheller Date: Sun, 22 Oct 2017 17:04:07 +0200 Subject: [PATCH] Added deploy to staging --- .gitlab-ci.yml | 47 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c44507b1..1cc9797b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -15,9 +15,12 @@ variables: MYSQL_RANDOM_ROOT_PASSWORD: "yes" before_script: + # Fix permissions after gitlab messed them up + - find . -type f -exec chmod 644 {} \; + - find . -type d -exec chmod 755 {} \; # Install required Packages - - apt-get update -yqq - - apt-get install -yqq git unzip mysql-client + - apt update -yqq + - apt install -yqq git unzip mysql-client - docker-php-ext-install pdo pdo_mysql gettext # Install xdebug - pecl install xdebug @@ -45,3 +48,43 @@ test:7.0: test:7.1: image: php:7.1 <<: *test_definition + +deploy_staging: + stage: deploy + only: + - master + script: + - |- + if [ -z "${SSH_PRIVATE_KEY}" ] || [ -z "${REMOTE}" ] || [ -z "${REMOTE_PATH}" ]; then + echo "Skipping deployment"; + exit + fi + - mkdir -p ~/.ssh + - echo "$SSH_PRIVATE_KEY" | sed -e 's/\r//g' > ~/.ssh/id_ed25519 + - chmod 600 ~/.ssh/id_ed25519 + - apt update && apt install -yqq rsync openssh-client + - /usr/local/bin/composer --no-ansi install --no-dev + - /usr/local/bin/composer --no-ansi dump-autoload --optimize + - echo "syncing ${PWD}/ to ${REMOTE}:${REMOTE_PATH}/${CI_JOB_ID}-${CI_COMMIT_SHA}/" + - |- + rsync -vAax --exclude '.git*' --exclude .composer/ \ + -e "ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \ + ./ "${REMOTE}:${REMOTE_PATH}/${CI_JOB_ID}-${CI_COMMIT_SHA}/" + - |- + ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no "${REMOTE}" " + set -e + + if [[ -f \"${REMOTE_PATH}/current/config/config.php\" ]]; then + echo \"Config backup\" + cp \"${REMOTE_PATH}/current/config/config.php\" config.php + fi + + echo \"Changing symlink\" + unlink \"${REMOTE_PATH}/current\" + ln -s \"${REMOTE_PATH}/${CI_JOB_ID}-${CI_COMMIT_SHA}\" \"${REMOTE_PATH}/current\" + + if [[ -f config.php ]]; then + echo \"Restoring config\" + cp config.php \"${REMOTE_PATH}/current/config/config.php\" + fi + "