-
Notifications
You must be signed in to change notification settings - Fork 0
/
.gitlab-ci.yml
75 lines (57 loc) · 2.94 KB
/
.gitlab-ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# Select image from https://hub.docker.com/_/php/
image: sunfoxcz/docker-php-build:7.1
# Select what we should cache
cache:
paths:
- vendor/
before_script:
# Install git, the php image doesn't have installed
- apt-get update -yqq
- apt-get install git curl rsync ssh unzip gzip wget -yqq
- bash ci/docker_install.sh
- php composer.phar install
variables:
GIT_DEPTH: "1"
stages:
- deploy
deploy to production:
stage: deploy
environment: production
image: sunfoxcz/docker-php-build:7.1
script:
- echo "Creating production config neon"
- bash ci/create_production_neon.sh "${MYSQL_PRODUCTION_HOST}" "${MYSQL_PRODUCTION_USER}" "${MYSQL_PRODUCTION_PASSWORD}" "${MYSQL_PRODUCTION_DATABASE}"
- echo "Deploy SSH key"
- echo "${SSH_PRIVATE_KEY}" > id_rsa
- chmod 700 id_rsa
- mkdir "${HOME}/.ssh"
- echo "${SSH_HOST_KEY}" > "${HOME}/.ssh/known_hosts"
# install ssh-agent
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
# run ssh-agent
- eval $(ssh-agent -s)
# add ssh key stored in SSH_PRIVATE_KEY variable to the agent store
- ssh-add <(echo "$SSH_PRIVATE_KEY")
# disable host key checking (NOTE: makes you susceptible to man-in-the-middle attacks)
# WARNING: use only in docker container, if you use it with shell you will overwrite your user's ssh config
- mkdir -p ~/.ssh
- echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
- echo ${WWW_ROOT} > WWW_ROOT
- echo ${MYSQL_PRODUCTION_HOST} > MYSQL_PRODUCTION_HOST
- echo ${MYSQL_PRODUCTION_USER} > MYSQL_PRODUCTION_USER
- echo ${MYSQL_PRODUCTION_PASSWORD} > MYSQL_PRODUCTION_PASSWORD
- echo ${MYSQL_PRODUCTION_DATABASE} > MYSQL_PRODUCTION_DATABASE
- echo "Deploying files to production"
- rsync -hrvz --delete --exclude=www/uploaded/ --exclude=temp/sessions/ -e 'ssh -i id_rsa' ./ [email protected]:${WWW_ROOT}
- ssh [email protected] "mkdir -p ${WWW_ROOT}/migrations/basic-data ${WWW_ROOT}/migrations/dummy-data ${WWW_ROOT}/app/migrations/structures"
- echo "Purging cache and temp files"
- ssh [email protected] "rm -rf ${WWW_ROOT}/temp/cache ${WWW_ROOT}/ci ${WWW_ROOT}/nbproject ${WWW_ROOT}/.git" 2> /dev/null
- ssh [email protected] "rm -f ${WWW_ROOT}/.gitlab-ci.yml ${WWW_ROOT}/id_rsa ${WWW_ROOT}/MYSQL_PRODUCTION_HOST ${WWW_ROOT}/MYSQL_PRODUCTION_USER ${WWW_ROOT}/MYSQL_PRODUCTION_PASSWORD ${WWW_ROOT}/MYSQL_PRODUCTION_DATABASE ${WWW_ROOT}/WWW_ROOT ${WWW_ROOT}/BACKUPS_ROOT" 2> /dev/null
- echo "Running SQL migrations"
- ssh [email protected] "php ${WWW_ROOT}/bin/console migrations:continue --production"
- echo "Deploy is finished"
only:
- master
cache:
paths:
- vendor