Skip to content
Merged

Dev #631

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
e293876
Merge pull request #618 from PROCOLLAB-github/feature/program-courses
Toksi86 Mar 24, 2026
9ff44e5
Убран лишний пустой перенос в docs/readme.md
Toksi86 Mar 27, 2026
957c6c5
Упрощены workflow CI/CD, обновлён PR template и удалена интеграция Cl…
Toksi86 Mar 27, 2026
1dee5f0
Подготовлен переход dev на host nginx и убраны лишние переменные из w…
Toksi86 Mar 27, 2026
0f6715e
Убраны неиспользуемые переменные из release workflow
Toksi86 Mar 27, 2026
efc610c
Merge pull request #619 from PROCOLLAB-github/devops-structure-rework
Toksi86 Mar 27, 2026
cb800db
Удалён django_prometheus и вычищены legacy-конфиги observability
Toksi86 Mar 27, 2026
79902b2
Усилен security baseline и вычищены мёртвые настройки
Toksi86 Mar 27, 2026
b2ff8f6
Исправлены websocket-тесты, выявленные во время реворка devops-структуры
Toksi86 Mar 27, 2026
bdb82b8
Merge pull request #620 from PROCOLLAB-github/devops-structure-rework
Toksi86 Mar 27, 2026
e1d1d01
Исправлены chat permissions для swagger schema
Toksi86 Mar 27, 2026
2c9e6de
Merge pull request #621 from PROCOLLAB-github/devops-structure-rework
Toksi86 Mar 27, 2026
dbd4adb
Удалены legacy skills endpoints из users API
Toksi86 Apr 8, 2026
0b8bc05
Исправлен flake8 в users serializers
Toksi86 Apr 8, 2026
f3a3e1f
Merge pull request #623 from PROCOLLAB-github/devops-structure-rework
Toksi86 Apr 8, 2026
91c3e5a
Унифицирован deploy dev/prod и подготовлен prod host nginx
Toksi86 Apr 17, 2026
9df207a
Merge pull request #624 from PROCOLLAB-github/devops-structure-rework
Toksi86 Apr 17, 2026
79d7dd6
Исправлен деплой dev для локального image и reload nginx
Toksi86 Apr 17, 2026
c33df3b
Merge pull request #625 from PROCOLLAB-github/devops-structure-rework
Toksi86 Apr 20, 2026
75d0cfd
Удалён legacy grafana route из container nginx
Toksi86 Apr 20, 2026
fd239d5
Merge remote-tracking branch 'origin/dev' into devops-structure-rework
Toksi86 Apr 20, 2026
b43b189
Merge branch 'master' into devops-structure-rework
Toksi86 Apr 20, 2026
660ac18
Merge pull request #626 from PROCOLLAB-github/merge-master-into-dev-prep
Toksi86 Apr 20, 2026
2d2c214
Усилен deploy path dev/prod и убран legacy startup flow
Toksi86 Apr 22, 2026
94f051c
Merge pull request #627 from PROCOLLAB-github/prod-release-hardening
Toksi86 Apr 22, 2026
9919e5b
Скорректированы deploy workflows и compose-конфиги
Toksi86 Apr 22, 2026
580f9c1
Merge pull request #628 from PROCOLLAB-github/prod-release-hardening
Toksi86 Apr 22, 2026
ddfac1f
Возвращён прежний Redis image для совместимости volume
Toksi86 Apr 22, 2026
4046758
Возвращена blocking-проверка Celery после деплоя
Toksi86 Apr 22, 2026
466734d
Merge pull request #629 from PROCOLLAB-github/prod-release-hardening
Toksi86 Apr 22, 2026
9885657
Скорректирована blocking-проверка Celery после деплоя
Toksi86 Apr 22, 2026
d3aa132
Merge pull request #630 from PROCOLLAB-github/prod-release-hardening
Toksi86 Apr 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 13 additions & 11 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
# Краткое название
# Что изменено

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

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

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

## Тестирование
- автоматические проверки
- ручная проверка
- шаги для воспроизведения
- ожидаемый результат

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

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

_Опишите, как проверить ваш код._

## Дополнительная информация

_Здесь вы можете добавить какую-либо дополнительную информацию о своих изменениях._
- миграции, изменения переменных окружения, feature flags
- замечания по деплою
- места, которые требуют повышенного внимания
28 changes: 24 additions & 4 deletions .github/workflows/django-test.yml → .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,32 @@
name: Django CI
name: CI

on:
push:
branches:
- '**'
- "**"

jobs:
django-test:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: Set up Python 3.11
uses: actions/setup-python@v4
with:
python-version: 3.11

- name: Install lint dependencies
run: |
python -m pip install --upgrade pip
pip install flake8

- name: Run flake8
run: flake8 $(git ls-files '*.py')

test:
name: Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
Expand Down Expand Up @@ -45,4 +65,4 @@ jobs:
env:
DEBUG: True
DJANGO_SETTINGS_MODULE: procollab.settings
PYTHONUNBUFFERED: 1
PYTHONUNBUFFERED: 1
127 changes: 93 additions & 34 deletions .github/workflows/dev-ci.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: 'Deploy dev server'
name: Deploy Dev

on:
push:
Expand All @@ -8,44 +8,103 @@ on:

jobs:
deploy:
name: Deploy
runs-on: ubuntu-latest
steps:
- name: run on server
- name: Deploy to server
uses: garygrossgarten/github-action-ssh@release
with:
host: ${{ secrets.DEV_SERVER_HOST }}
username: ${{ secrets.DEV_SERVER_USER }}
password: ${{ secrets.DEV_SERVER_PASSWORD }}
command: |
cd /root/api &&
git checkout dev &&
git pull &&

rm -f .env &&
touch .env &&

echo "DJANGO_SECRET_KEY=${{ secrets.DEV_DJANGO_SECRET_KEY }}" >> .env &&

echo "DATABASE_NAME=${{ secrets.DEV_DATABASE_NAME }}" >> .env &&
echo "DATABASE_PASSWORD=${{ secrets.DEV_DATABASE_PASSWORD }}" >> .env &&
echo "DATABASE_USER=${{ secrets.DEV_DATABASE_USER }}" >> .env &&
echo "DATABASE_HOST=${{ secrets.DEV_DATABASE_HOST }}" >> .env &&
echo "DATABASE_PORT=${{ secrets.DEV_DATABASE_PORT }}" >> .env &&

echo "EMAIL_USER=${{ secrets.EMAIL_USER }}" >> .env &&
echo "EMAIL_PASSWORD=${{ secrets.EMAIL_PASSWORD }}" >> .env &&
echo "EMAIL_HOST=${{ secrets.EMAIL_HOST }}" >> .env &&
echo "EMAIL_PORT=${{ secrets.EMAIL_PORT }}" >> .env &&
echo "SELECTEL_ACCOUNT_ID=${{ secrets.SELECTEL_ACCOUNT_ID }}" >> .env &&
echo "SELECTEL_CONTAINER_NAME=${{ secrets.SELECTEL_CONTAINER_NAME }}" >> .env &&
echo "SELECTEL_CONTAINER_PASSWORD=${{ secrets.SELECTEL_CONTAINER_PASSWORD }}" >> .env &&
echo "SELECTEL_CONTAINER_USERNAME=${{ secrets.SELECTEL_CONTAINER_USERNAME }}" >> .env &&

echo "CLICKUP_API_TOKEN=${{ secrets.CLICKUP_API_TOKEN }}" >> .env &&
echo "CLICKUP_SPACE_ID=${{ secrets.CLICKUP_SPACE_ID }}" >> .env &&

echo "SENTRY_DSN=${{ secrets.SENTRY_DSN }}" >> .env &&

echo "UNISENDER_GO_API_KEY=${{ secrets.UNISENDER_GO_API_KEY }}" >> .env &&

docker compose -f docker-compose.dev-ci.yml up -d --build --force-recreate
set -eu

cd /root/api
git fetch --all --tags --prune
git branch -r --contains "${{ github.sha }}" | grep -q 'origin/dev'
git checkout --detach "${{ github.sha }}"
git rev-parse HEAD

export IMAGE_TAG="${{ github.sha }}"

rm -f .env
touch .env

echo "DJANGO_SECRET_KEY=${{ secrets.DEV_DJANGO_SECRET_KEY }}" >> .env

echo "DATABASE_NAME=${{ secrets.DEV_DATABASE_NAME }}" >> .env
echo "DATABASE_PASSWORD=${{ secrets.DEV_DATABASE_PASSWORD }}" >> .env
echo "DATABASE_USER=${{ secrets.DEV_DATABASE_USER }}" >> .env
echo "DATABASE_HOST=${{ secrets.DEV_DATABASE_HOST }}" >> .env
echo "DATABASE_PORT=${{ secrets.DEV_DATABASE_PORT }}" >> .env

echo "SELECTEL_ACCOUNT_ID=${{ secrets.SELECTEL_ACCOUNT_ID }}" >> .env
echo "SELECTEL_CONTAINER_NAME=${{ secrets.SELECTEL_CONTAINER_NAME }}" >> .env
echo "SELECTEL_CONTAINER_PASSWORD=${{ secrets.SELECTEL_CONTAINER_PASSWORD }}" >> .env
echo "SELECTEL_CONTAINER_USERNAME=${{ secrets.SELECTEL_CONTAINER_USERNAME }}" >> .env

echo "EMAIL_USER=${{ secrets.EMAIL_USER }}" >> .env
echo "UNISENDER_GO_API_KEY=${{ secrets.UNISENDER_GO_API_KEY }}" >> .env

chmod 600 .env

docker compose -f docker-compose.dev-ci.yml config >/dev/null
docker compose -f docker-compose.dev-ci.yml build web &&
docker compose -f docker-compose.dev-ci.yml run --rm web python manage.py migrate &&
docker compose -f docker-compose.dev-ci.yml up -d --force-recreate --remove-orphans &&

install -d /etc/nginx/procollab/includes &&
install -m 644 deploy/nginx/host/includes/proxy_app.inc /etc/nginx/procollab/includes/proxy_app.inc &&
install -m 644 deploy/nginx/host/dev/dev.procollab.ru /etc/nginx/sites-available/dev.procollab.ru &&
ln -sfn /etc/nginx/sites-available/dev.procollab.ru /etc/nginx/sites-enabled/dev.procollab.ru &&
if [ "$(id -u)" -eq 0 ]; then
nginx -t &&
systemctl reload nginx
else
sudo nginx -t &&
sudo systemctl reload nginx
fi &&

for attempt in $(seq 1 24); do
root_status="$(curl -s -o /dev/null -w '%{http_code}' https://dev.procollab.ru/ || true)" &&
admin_status="$(curl -s -o /dev/null -w '%{http_code}' https://dev.procollab.ru/admin/login/ || true)" &&

if [ "$root_status" = "401" ] && [ "$admin_status" = "200" ]; then
echo "Smoke check passed on attempt ${attempt}" &&
break
fi

sleep 5
done &&

if [ "$root_status" != "401" ] || [ "$admin_status" != "200" ]; then
echo "Smoke check failed: /=${root_status} /admin/login/=${admin_status}" >&2 &&
exit 1
fi &&

celery_status="" &&
celery_ping="" &&
for attempt in $(seq 1 24); do
celery_status="$(docker inspect -f '{{.State.Status}}' api_celery 2>/dev/null || true)" &&
if [ "$celery_status" = "running" ]; then
celery_ping="$(docker compose -f docker-compose.dev-ci.yml exec -T celerys sh -lc 'celery -A procollab inspect ping --timeout=10' 2>&1 || true)" &&
printf '%s\n' "$celery_ping" &&
if printf '%s\n' "$celery_ping" | grep -q 'pong'; then
echo "Celery check passed on attempt ${attempt}" &&
break
fi
fi &&

sleep 5
done &&

if [ "$celery_status" != "running" ]; then
echo "Celery container is not running: ${celery_status}" >&2 &&
exit 1
fi &&

printf '%s\n' "$celery_ping" | grep -q 'pong' || {
echo "Celery ping failed" >&2
exit 1
}
29 changes: 0 additions & 29 deletions .github/workflows/lints.yml

This file was deleted.

47 changes: 0 additions & 47 deletions .github/workflows/new_deploy.yml

This file was deleted.

Loading
Loading