Skip to content

Commit efc610c

Browse files
authored
Merge pull request #619 from PROCOLLAB-github/devops-structure-rework
Devops structure rework
2 parents e293876 + 0f6715e commit efc610c

File tree

13 files changed

+99
-244
lines changed

13 files changed

+99
-244
lines changed

.github/pull_request_template.md

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
1-
# Краткое название
1+
# Что изменено
22

3-
## Описание изменений
3+
Кратко опишите изменения и при необходимости приложите ссылку на задачу.
44

5-
_Опишите изменения, которые вы внесли в код. Не забывайте указывать номер задачи или ссылку на тикет._
5+
## Проверка
66

7+
Укажите, как проверялись изменения.
78

8-
## Тестирование
9+
- автоматические проверки
10+
- ручная проверка
11+
- шаги для воспроизведения
12+
- ожидаемый результат
913

10-
_Опишите, как тестировали свои изменения. Например, какие тесты проходят, а какие нет._
14+
## Риски и ограничения
1115

12-
## Проверка кода
16+
Укажите важные ограничения и возможные побочные эффекты.
1317

14-
_Опишите, как проверить ваш код._
15-
16-
## Дополнительная информация
17-
18-
_Здесь вы можете добавить какую-либо дополнительную информацию о своих изменениях._
18+
- миграции, изменения переменных окружения, feature flags
19+
- замечания по деплою
20+
- места, которые требуют повышенного внимания
Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,32 @@
1-
name: Django CI
1+
name: CI
22

33
on:
44
push:
55
branches:
6-
- '**'
6+
- "**"
77

88
jobs:
9-
django-test:
9+
lint:
10+
name: Lint
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v3
14+
15+
- name: Set up Python 3.11
16+
uses: actions/setup-python@v4
17+
with:
18+
python-version: 3.11
19+
20+
- name: Install lint dependencies
21+
run: |
22+
python -m pip install --upgrade pip
23+
pip install flake8
24+
25+
- name: Run flake8
26+
run: flake8 $(git ls-files '*.py')
27+
28+
test:
29+
name: Tests
1030
runs-on: ubuntu-latest
1131
steps:
1232
- uses: actions/checkout@v3
@@ -45,4 +65,4 @@ jobs:
4565
env:
4666
DEBUG: True
4767
DJANGO_SETTINGS_MODULE: procollab.settings
48-
PYTHONUNBUFFERED: 1
68+
PYTHONUNBUFFERED: 1

.github/workflows/dev-ci.yml

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: 'Deploy dev server'
1+
name: Deploy Dev
22

33
on:
44
push:
@@ -8,9 +8,10 @@ on:
88

99
jobs:
1010
deploy:
11+
name: Deploy
1112
runs-on: ubuntu-latest
1213
steps:
13-
- name: run on server
14+
- name: Deploy to server
1415
uses: garygrossgarten/github-action-ssh@release
1516
with:
1617
host: ${{ secrets.DEV_SERVER_HOST }}
@@ -32,20 +33,20 @@ jobs:
3233
echo "DATABASE_HOST=${{ secrets.DEV_DATABASE_HOST }}" >> .env &&
3334
echo "DATABASE_PORT=${{ secrets.DEV_DATABASE_PORT }}" >> .env &&
3435
35-
echo "EMAIL_USER=${{ secrets.EMAIL_USER }}" >> .env &&
36-
echo "EMAIL_PASSWORD=${{ secrets.EMAIL_PASSWORD }}" >> .env &&
37-
echo "EMAIL_HOST=${{ secrets.EMAIL_HOST }}" >> .env &&
38-
echo "EMAIL_PORT=${{ secrets.EMAIL_PORT }}" >> .env &&
36+
3937
echo "SELECTEL_ACCOUNT_ID=${{ secrets.SELECTEL_ACCOUNT_ID }}" >> .env &&
4038
echo "SELECTEL_CONTAINER_NAME=${{ secrets.SELECTEL_CONTAINER_NAME }}" >> .env &&
4139
echo "SELECTEL_CONTAINER_PASSWORD=${{ secrets.SELECTEL_CONTAINER_PASSWORD }}" >> .env &&
4240
echo "SELECTEL_CONTAINER_USERNAME=${{ secrets.SELECTEL_CONTAINER_USERNAME }}" >> .env &&
4341
44-
echo "CLICKUP_API_TOKEN=${{ secrets.CLICKUP_API_TOKEN }}" >> .env &&
45-
echo "CLICKUP_SPACE_ID=${{ secrets.CLICKUP_SPACE_ID }}" >> .env &&
46-
47-
echo "SENTRY_DSN=${{ secrets.SENTRY_DSN }}" >> .env &&
48-
42+
echo "EMAIL_USER=${{ secrets.EMAIL_USER }}" >> .env &&
4943
echo "UNISENDER_GO_API_KEY=${{ secrets.UNISENDER_GO_API_KEY }}" >> .env &&
5044
51-
docker compose -f docker-compose.dev-ci.yml up -d --build --force-recreate
45+
docker compose -f docker-compose.dev-ci.yml up -d --build --force-recreate --remove-orphans &&
46+
47+
install -d /etc/nginx/procollab/includes &&
48+
install -m 644 deploy/nginx/host/includes/proxy_app.inc /etc/nginx/procollab/includes/proxy_app.inc &&
49+
install -m 644 deploy/nginx/host/dev/dev.procollab.ru /etc/nginx/sites-available/dev.procollab.ru &&
50+
ln -sfn /etc/nginx/sites-available/dev.procollab.ru /etc/nginx/sites-enabled/dev.procollab.ru &&
51+
nginx -t &&
52+
systemctl reload nginx

.github/workflows/lints.yml

Lines changed: 0 additions & 29 deletions
This file was deleted.

.github/workflows/new_deploy.yml

Lines changed: 0 additions & 47 deletions
This file was deleted.

.github/workflows/release-ci.yml

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: 'Build and Deploy server'
1+
name: Release Prod
22

33
on:
44
release:
@@ -7,7 +7,7 @@ on:
77

88
jobs:
99
test:
10-
name: 'Test before deploy'
10+
name: Tests
1111
runs-on: ubuntu-latest
1212
steps:
1313
- uses: actions/checkout@v3
@@ -46,7 +46,7 @@ jobs:
4646
DEBUG: True
4747

4848
build:
49-
name: 'Build & Publish'
49+
name: Build Image
5050
runs-on: ubuntu-latest
5151
needs: [ test ]
5252
steps:
@@ -86,11 +86,12 @@ jobs:
8686
cache-to: type=gha,mode=max
8787
tags: ${{ steps.meta.outputs.tags }}
8888
labels: ${{ steps.meta.outputs.labels }}
89-
run:
89+
deploy:
90+
name: Deploy
9091
runs-on: ubuntu-latest
9192
needs: [ build ]
9293
steps:
93-
- name: run on server
94+
- name: Deploy to server
9495
uses: garygrossgarten/github-action-ssh@release
9596
with:
9697
host: ${{ secrets.SERVER_HOST }}
@@ -113,20 +114,12 @@ jobs:
113114
echo "DATABASE_HOST=${{ secrets.DATABASE_HOST }}" >> .env &&
114115
echo "DATABASE_PORT=${{ secrets.DATABASE_PORT }}" >> .env &&
115116
116-
echo "EMAIL_USER=${{ secrets.EMAIL_USER }}" >> .env &&
117-
echo "EMAIL_PASSWORD=${{ secrets.EMAIL_PASSWORD }}" >> .env &&
118-
echo "EMAIL_HOST=${{ secrets.EMAIL_HOST }}" >> .env &&
119-
echo "EMAIL_PORT=${{ secrets.EMAIL_PORT }}" >> .env &&
120117
echo "SELECTEL_ACCOUNT_ID=${{ secrets.SELECTEL_ACCOUNT_ID }}" >> .env &&
121118
echo "SELECTEL_CONTAINER_NAME=${{ secrets.SELECTEL_CONTAINER_NAME }}" >> .env &&
122119
echo "SELECTEL_CONTAINER_PASSWORD=${{ secrets.SELECTEL_CONTAINER_PASSWORD }}" >> .env &&
123120
echo "SELECTEL_CONTAINER_USERNAME=${{ secrets.SELECTEL_CONTAINER_USERNAME }}" >> .env &&
124-
125-
echo "CLICKUP_API_TOKEN=${{ secrets.CLICKUP_API_TOKEN }}" >> .env &&
126-
echo "CLICKUP_SPACE_ID=${{ secrets.CLICKUP_SPACE_ID }}" >> .env &&
127-
128-
echo "SENTRY_DSN=${{ secrets.SENTRY_DSN }}" >> .env &&
129121
122+
echo "EMAIL_USER=${{ secrets.EMAIL_USER }}" >> .env &&
130123
echo "UNISENDER_GO_API_KEY=${{ secrets.UNISENDER_GO_API_KEY }}" >> .env &&
131124
132125
docker compose -f docker-compose.prod-ci.yml -p prod up -d
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
server {
2+
listen 80;
3+
server_name dev.procollab.ru;
4+
5+
location ^~ /.well-known/acme-challenge/ {
6+
root /var/www/certbot;
7+
default_type "text/plain";
8+
try_files $uri =404;
9+
}
10+
11+
location / {
12+
return 301 https://$host$request_uri;
13+
}
14+
}
15+
16+
server {
17+
listen 443 ssl;
18+
server_name dev.procollab.ru;
19+
20+
ssl_certificate /etc/letsencrypt/live/dev.procollab.ru-0001/fullchain.pem;
21+
ssl_certificate_key /etc/letsencrypt/live/dev.procollab.ru-0001/privkey.pem;
22+
23+
location / {
24+
include /etc/nginx/procollab/includes/proxy_app.inc;
25+
}
26+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
proxy_pass http://127.0.0.1:8000;
2+
3+
proxy_http_version 1.1;
4+
proxy_set_header Upgrade $http_upgrade;
5+
proxy_set_header Connection "upgrade";
6+
7+
proxy_set_header Host $host;
8+
proxy_set_header X-Real-IP $remote_addr;
9+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
10+
proxy_set_header X-Forwarded-Proto $scheme;
11+
12+
proxy_read_timeout 600s;
13+
proxy_send_timeout 600s;
14+
proxy_connect_timeout 60s;
15+
proxy_buffering off;

docker-compose.dev-ci.yml

Lines changed: 0 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -16,51 +16,6 @@ services:
1616
ports:
1717
- "127.0.0.1:8000:8000"
1818

19-
grafana:
20-
image: grafana/grafana:latest
21-
restart: unless-stopped
22-
expose:
23-
- 3000
24-
volumes:
25-
- grafana-data:/var/lib/grafana
26-
- grafana-configs:/etc/grafana
27-
environment:
28-
- GF_SERVER_ROOT_URL=%(protocol)s://%(domain)s:%(http_port)s/grafana
29-
- GF_SERVER_SERVE_FROM_SUB_PATH=true
30-
31-
prometheus:
32-
image: prom/prometheus:v2.36.0
33-
restart: unless-stopped
34-
expose:
35-
- 9090
36-
volumes:
37-
- prom-data:/prometheus
38-
- ./prometheus:/etc/prometheus
39-
40-
#nginx:
41-
# restart: unless-stopped
42-
# build: ./nginx
43-
# depends_on:
44-
# - web
45-
# ports:
46-
# - 8000:80
47-
48-
loki:
49-
image: grafana/loki:2.9.0
50-
restart: unless-stopped
51-
ports:
52-
- "3100:3100"
53-
command: -config.file=/etc/loki/local-config.yaml
54-
55-
promtail:
56-
image: grafana/promtail:2.9.0
57-
restart: unless-stopped
58-
volumes:
59-
- /var/log:/var/log
60-
- ./promtail:/etc/promtail
61-
- ./log:/procollab/log
62-
command: -config.file=/etc/promtail/config.yml
63-
6419
redis:
6520
image: redis:latest
6621
restart: unless-stopped
@@ -85,12 +40,5 @@ services:
8540
- web
8641
volumes:
8742
- .:/procollab
88-
8943
volumes:
90-
grafana-data:
91-
grafana-configs:
92-
prom-data:
93-
prom-configs:
94-
log:
95-
promtail:
9644
redis-data:

docs/readme.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,3 @@
55
- [redoc](https://api.procollab.ru/redoc)
66

77
## [WebSockets для чатов](/docs/chats.md)
8-

0 commit comments

Comments
 (0)