-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbitbucket-pipelines.yml
142 lines (118 loc) · 6.09 KB
/
bitbucket-pipelines.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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# Пайплайны битбакета
image: docker/compose:latest
options:
docker: true
# Описание возможных тестов (Задаем Definitions для использования в анкорах)
definitions:
steps:
- step: &Build
name: Build (Docker-compose up & composer-update)
services:
- docker
caches:
- docker
# runs-on:
# - self.hosted
# - linux
script:
# Экспоритруем переменные зашитые в битбакет для развертки
- echo "Экспоритруем переменные зашитые в битбакет для развертки"
- echo DB_NAME=$DB_NAME > .env
- echo DB_USER=$DB_USER >> .env
- echo DB_PASSWORD=$DB_PASSWORD >> .env
# Build docker containers (Пока убрали чтобы сборки быстрее проходили)
- echo "Билдим контейнеры через docker-compose"
- docker-compose build
# Поднимаем все контейнеры через docker-compose
- echo "Поднимаем все контейнеры через docker-compose"
- docker-compose up -d
# Обновляем зависимости композера
- echo "Обновляем зависимости composer"
- docker-compose exec -T app composer install --no-interaction
- step: &Test
name: Tests (Applying migrations &Unit/Functional tests)
services:
- docker
caches:
- docker
# runs-on:
# - self.hosted
# - linux
script:
# Экспортируем переменные зашитые в битбакет для развертки
- echo "Экспоритруем переменные зашитые в битбакет для развертки"
- echo DB_NAME=$DB_NAME > .env
- echo DB_USER=$DB_USER >> .env
- echo DB_PASSWORD=$DB_PASSWORD >> .env
- echo REDIS_HOST=$REDIS_HOST >> .env
- echo DB_DSN=$DB_DSN >> .env
- echo DB_TEST_DSN=$DB_TEST_DSN >> .env
- echo DB_TEST_CHARSET=$DB_TEST_CHARSET >> .env
- echo DB_CHARSET=$DB_CHARSET >> .env
- echo DOMAIN=$DOMAIN >> .env
- echo DOMAIN_PROTOCOL=$DOMAIN_PROTOCOL >> .env
- echo DB_TEST_NAME=$DB_TEST_NAME >> .env
- echo DB_TEST_USER=$DB_TEST_USER >> .env
- echo DB_TEST_PASSWORD=$DB_TEST_PASSWORD >> .env
- echo ENVIRONMENT=dev >> .env
- echo DEBUG_STATUS=true >> .env
# Build docker containers (Пока убрали чтобы сборки быстрее проходили)
- echo "Билдим контейнеры через docker-compose"
- docker-compose build
# Поднимаем все контейнеры через docker-compose
- echo "Поднимаем все контейнеры через docker-compose"
- docker-compose up -d
- echo "Обновляем зависимости composer"
# Обновляем зависимости композера
- docker-compose exec -T app composer install --no-interaction
- echo "Даем больше прав юзеру MySQL для создания триггеров"
# Даем prod_user MySQL все необходимые права, а также создаем новую базу для миграций
- docker exec -t db mysql -u root -p$DB_PASSWORD --execute "use dev_eft;
CREATE DATABASE test_migrations_db;
GRANT SUPER ON *.* to 'prod_user'@'%' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON dev_eft.* to 'prod_user'@'%' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON test_migrations_db.* to 'prod_user'@'%' WITH GRANT OPTION;"
# Накатываем миграции на dev_eft
- echo "Накатываем миграции на dev_eft"
- docker-compose exec -T app php yii migrate --interactive=0
# Накатываем миграции на test_migrations_db
- echo "Накатываем миграции на test_migrations_db"
- docker-compose exec -T app php yii migrate --db db_test --interactive=0;
# Начинаем тестирование модульными и функциональными тестами
- echo "Functional и Unit тестирование"
- docker-compose exec -T app vendor/bin/codecept run
# Все виды конвейеров
pipelines:
# default:
# - step: *Build
# - step: *Test
# Кастомные экшены - дублируют основные
custom:
Build-action:
- step: *Build
Testing-action:
- step: *Test
# Автодеплой в мастер на Prod а также дополнительный прогон всех остальных тестов, как выше
branches:
master:
- step:
<<: *Build
name: Build on Master (Docker-compose up & composer-update)
- step:
<<: *Test
name: Tests on Master (Apply migrations & Unit/Functional tests)
# - step:
# image: atlassian/default-image:latest
# name: Deploy master to Prod
# runs-on:
# - self.hosted
# - linux
# deployment: Production
# script:
# - mkdir -p ~/.ssh
# - ssh-keyscan wiki-tarkov.ru >> ~/.ssh/known_hosts
# - (umask 077 ; echo $MY_SSH_KEY | base64 --decode > ~/.ssh/id_rsa)
# - ssh -i ~/.ssh/id_rsa [email protected] 'cd /var/www/wiki-tarkov/html && git pull origin master'
# # Этого мы не делаем, т.к. изначально Prod накатывался SQL дампом
# # - ssh -i ~/.ssh/id_rsa [email protected] 'cd /var/www/wiki-tarkov/html && php yii migrate --interactive=0'
# - echo "Затянули ветку master с BitBucket успешно"