|
|
|
image: php
|
|
|
|
|
|
|
|
cache:
|
|
|
|
paths:
|
|
|
|
- .composer
|
|
|
|
|
|
|
|
services:
|
|
|
|
- mariadb:10.2
|
|
|
|
|
|
|
|
variables:
|
|
|
|
MYSQL_DATABASE: engelsystem
|
|
|
|
MYSQL_USER: engel
|
|
|
|
MYSQL_PASSWORD: engelsystem
|
|
|
|
MYSQL_HOST: mariadb
|
|
|
|
COMPOSER_HOME: .composer
|
|
|
|
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 update -yqq
|
|
|
|
- apt install -yqq git unzip mariadb-client
|
|
|
|
- docker-php-ext-install pdo pdo_mysql gettext
|
|
|
|
# Install xdebug
|
|
|
|
- pecl install xdebug
|
|
|
|
- docker-php-ext-enable xdebug
|
|
|
|
# MySQL DB
|
|
|
|
- mysql -h "$MYSQL_HOST" -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" "$MYSQL_DATABASE" < db/install.sql
|
|
|
|
- mysql -h "$MYSQL_HOST" -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" "$MYSQL_DATABASE" < db/update.sql
|
|
|
|
# Install Composer
|
|
|
|
- curl -sS https://getcomposer.org/installer | php -- --no-ansi --install-dir /usr/local/bin/ --filename composer
|
|
|
|
- /usr/local/bin/composer --no-ansi install
|
|
|
|
|
|
|
|
.test_template: &test_definition
|
|
|
|
artifacts:
|
|
|
|
name: "${CI_JOB_NAME}_${CI_PROJECT_ID}_${PHP_VERSION}"
|
|
|
|
expire_in: 1 week
|
|
|
|
paths:
|
|
|
|
- ./coverage/
|
|
|
|
coverage: '/^\s*Lines:\s*(\d+(?:\.\d+)?%)/'
|
|
|
|
script: vendor/bin/phpunit --colors=never --coverage-text --coverage-html ./coverage/
|
|
|
|
|
|
|
|
test:7.0:
|
|
|
|
image: php:7.0
|
|
|
|
<<: *test_definition
|
|
|
|
|
|
|
|
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
|
|
|
|
"
|