-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path.gitlab-ci.yml
72 lines (65 loc) · 1.75 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
stages:
- build
- staging
- release
variables:
PROJECT_TEST_DOMAIN: test.open-genes.com
PROJECT_DEMO_DOMAIN: demo.open-genes.com
PROJECT_NAME: open-genes
cache:
key: ${CI_COMMIT_REF_SLUG}-${CI_JOB_NAME}
paths:
- app/vendor/
build:
stage: build
tags:
- docker
image: docker:stable
services:
- docker:dind
script:
- docker run --rm -v $PWD/app:/app composer@sha256:d374b2e1f715621e9d9929575d6b35b11cf4a6dc237d4a08f2e6d1611f534675 install
artifacts:
paths:
- app/vendor/
when: manual
deploy-test:
extends: .deploy
environment:
name: test
variables:
PROJECT_DIR: /var/www/${PROJECT_TEST_DOMAIN}/api
PROJECT_DOTENV: ${DROPLET_TEST_DOTENV}
deploy-demo:
extends: .deploy
environment:
name: stage
variables:
PROJECT_DIR: /var/www/${PROJECT_DEMO_DOMAIN}/api
PROJECT_DOTENV: ${DROPLET_DEMO_DOTENV}
deploy-prod:
extends: .deploy
stage: release
environment:
name: production
variables:
PROJECT_DIR: /var/www/${PROJECT_NAME}/api
PROJECT_DOTENV: ${DROPLET_PROD_DOTENV}
only:
- master
.deploy:
stage: staging
dependencies:
- build
image: instrumentisto/rsync-ssh
script:
- rsync -zhrl -e 'ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' app/ ${DROPLET_USER}@${DROPLET_IP}:${PROJECT_DIR}/app/
- ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${DROPLET_USER}@${DROPLET_IP} "php ${PROJECT_DIR}/app/console/yii.php migrate --interactive=0 --migrationPath=@yii/rbac/migrations,@app/migrations"
before_script:
- mkdir ~/.ssh
- echo ${PROJECT_DOTENV} | base64 -d > app/.env
- echo ${DROPLET_KEY} | base64 -d > ~/.ssh/id_rsa
- chmod 600 ~/.ssh/id_rsa
- mkdir -p app/runtime/assets || true
cache: {}
when: manual