Skip to content

Commit

Permalink
preclean
Browse files Browse the repository at this point in the history
  • Loading branch information
iljavaleev committed Jul 7, 2024
1 parent b49554b commit a361644
Show file tree
Hide file tree
Showing 25 changed files with 342 additions and 159 deletions.
29 changes: 29 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Django
ALLOWED_HOSTS=0.0.0.0 127.0.0.1 localhost # Список разрешённых хостов. Используется для деплоя на сервер. Можно не менять.
CSRF_TRUSTED_ORIGINS=http://0.0.0.0 http://localhost http://127.0.0.1 # Список разрешенных источников CSRF. Используется для деплоя на сервер. Можно не менять.
SECRET_KEY=my_secret_key # SECRET_KEY для настроек Django. Можно передать любую строку.
DJANGO_SUPERUSER_USERNAME=admin # Дефолтные данные для входа в админку
DJANGO_SUPERUSER_PASSWORD=admin123
DJANGO_SUPERUSER_EMAIL=admin@admin.ru
DJANGO_CONFIGURATION=Prod
##

# Bot
BASE_WEBHOOK_URL=https://myurl.ngrok-free.app # Сюда нужно поставить Ваш URL, на котором запустился NGROK.
BOT_TOKEN=123414:1lsafls # Токен Вашего ТГ-бота.
WEB_SERVER_HOST=0.0.0.0 # Адрес, на котором запускается бот внутри контейнера. Можно не менять.
WEB_SERVER_PORT=8080 # Порт, на котором запускается бот внутри контейнера. Можно не менять.
CURATOR_CHAT_ID=none # Номер чата с куратором. Можно не ставить.
WEBHOOK_SECRET=none # Секретный ключ для WebHook-мода телеграм-бота. Можно не ставить.
GPT_TOKEN=none # Token YandexGPT. Можно не ставить.
FOLDER_ID=none # Folder_ID для YandexGPT. Можно не ставить.

# DB
POSTGRES_USER=postgres # Имя пользователя для БД. Можно не менять.
POSTGRES_PASSWORD=postgres # Пароль для БД. Можно не менять.
POSTGRES_DB=postgres # Название БД. Можно не менять.
POSTGRES_PORT=5432 # Порт БД. Можно не менять.

# NGROK
NGROK_URL=myurl.ngrok-free.app # Прочтите в ReadMe как зарегистрировать постоянный URL в NGROK и вставьте его сюда.
NGROK_AUTHTOKEN=123456 # Ваш Token для NGROK.
260 changes: 130 additions & 130 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -1,130 +1,130 @@
#name: Main workflow
#
#on:
# push:
# branches:
# - main
#
#jobs:
# tests:
# runs-on: ubuntu-latest
# services:
# rabbitmq:
# image: rabbitmq:3.12
# env:
# RABBITMQ_DEFAULT_USER: guest
# RABBITMQ_DEFAULT_PASS: guest
# ports: [ "5672:5672" ]
# steps:
# - name: Checkout
# uses: actions/checkout@v4.1.1
# - name: Set up Python
# uses: actions/setup-python@v4
# with:
# python-version: 3.11
# - name: Install dependencies
# run: |
# python -m pip install --upgrade pip
# pip install -r requirements.txt
# - name: Run migrations
# run: |
# python admin_panel/manage.py makemigrations
# python admin_panel/manage.py migrate --run-syncdb
# env:
# DJANGO_SETTINGS_MODULE: admin_panel.settings
# DJANGO_CONFIGURATION: Test
# - name: Lint
# run: |
# ruff check .
# - name: tests
# run: |
# pytest admin_panel
#
# build_and_push:
# name: Build Docker images and push them to DockerHub
# runs-on: ubuntu-latest
# needs: tests
# strategy:
# matrix:
# include:
# - image_name: xaer981/admin_panel
# dockerfile: admin_panel/Dockerfile
# - image_name: xaer981/bot
# dockerfile: bots/telegram/Dockerfile
# steps:
# - name: Set up Docker Buildx
# uses: docker/setup-buildx-action@v3.0.0
#
# - name: Login to Docker Hub
# uses: docker/login-action@v3.0.0
# with:
# username: ${{ secrets.DOCKERHUB_USERNAME }}
# password: ${{ secrets.DOCKERHUB_PASSWORD }}
#
# - name: Extract metadata (tags, labels) for Docker
# id: meta
# uses: docker/metadata-action@v5
# with:
# images: ${{ matrix.image_name }}
#
# - name: Build and push
# uses: docker/build-push-action@v5
# with:
# file: ${{ matrix.dockerfile }}
# push: true
# tags: ${{ steps.meta.outputs.tags }}
# labels: ${{ steps.meta.outputs.labels }}
#
# deploy:
# name: Deploy to server
# runs-on: ubuntu-latest
# needs: build_and_push
# steps:
# - name: Checkout code
# uses: actions/checkout@v4.1.1
# - name: Copy infra files to server
# uses: appleboy/scp-action@master
# with:
# host: ${{ secrets.HOST }}
# username: ${{ secrets.TEST_SERVER_USERNAME }}
# key: ${{ secrets.TEST_SERVER_SSH_KEY }}
# passphrase: ${{ secrets.TEST_SERVER_SSH_PASSPHRASE }}
# source: "infra/docker-compose.yml,infra/swag_nginx.conf"
# target: ${{ secrets.DEPLOY_PATH }}
# overwrite: true
# strip_components: 1
#
# - name: Executing remote ssh commands to deploy
# uses: appleboy/ssh-action@master
# with:
# host: ${{ secrets.HOST }}
# username: ${{ secrets.TEST_SERVER_USERNAME }}
# key: ${{ secrets.TEST_SERVER_SSH_KEY }}
# passphrase: ${{ secrets.TEST_SERVER_SSH_PASSPHRASE }}
# script: |
# cd ${{ secrets.DEPLOY_PATH }}
# echo "SECRET_KEY=${{ secrets.SECRET_KEY }}" > .env
# echo DJANGO_SUPERUSER_USERNAME=${{ secrets.DJANGO_SUPERUSER_USERNAME }} >> .env
# echo DJANGO_SUPERUSER_PASSWORD=${{ secrets.DJANGO_SUPERUSER_PASSWORD }} >> .env
# echo DJANGO_SUPERUSER_EMAIL=${{ secrets.DJANGO_SUPERUSER_EMAIL }} >> .env
# echo DJANGO_CONFIGURATION=${{ secrets.DJANGO_CONFIGURATION }} >> .env
# echo GPT_TOKEN=${{ secrets.GPT_TOKEN }} >> .env
# echo FOLDER_ID=${{ secrets.FOLDER_ID }} >> .env
# echo POSTGRES_USER=${{ secrets.POSTGRES_USER }} >> .env
# echo POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }} >> .env
# echo POSTGRES_DB=${{ secrets.POSTGRES_DB }} >> .env
# echo POSTGRES_PORT=${{ secrets.POSTGRES_PORT }} >> .env
# echo BOT_TOKEN=${{ secrets.BOT_TOKEN }} >> .env
# echo CURATOR_CHAT_ID=${{ secrets.CURATOR_CHAT_ID }} >> .env
# echo BASE_WEBHOOK_URL=${{ secrets.BASE_WEBHOOK_URL }} >> .env
# echo WEB_SERVER_HOST=${{ secrets.WEB_SERVER_HOST }} >> .env
# echo WEB_SERVER_PORT=${{ secrets.WEB_SERVER_PORT }} >> .env
# sudo docker compose stop django
# sudo docker compose stop bot
# sudo docker compose stop celery
# sudo docker pull --quiet ${{ secrets.DOCKERHUB_USERNAME }}/admin_panel:main
# sudo docker pull --quiet ${{ secrets.DOCKERHUB_USERNAME }}/bot:main
# sudo docker compose up -d
# sudo docker system prune -af
# sudo docker compose exec django python manage.py collectstatic --no-input
#
name: Main workflow

on:
push:
branches:
- main

jobs:
tests:
runs-on: ubuntu-latest
services:
rabbitmq:
image: rabbitmq:3.12
env:
RABBITMQ_DEFAULT_USER: guest
RABBITMQ_DEFAULT_PASS: guest
ports: [ "5672:5672" ]
steps:
- name: Checkout
uses: actions/checkout@v4.1.1
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.11
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Run migrations
run: |
python admin_panel/manage.py makemigrations
python admin_panel/manage.py migrate --run-syncdb
env:
DJANGO_SETTINGS_MODULE: admin_panel.settings
DJANGO_CONFIGURATION: Test
- name: Lint
run: |
ruff check .
- name: tests
run: |
pytest admin_panel
build_and_push:
name: Build Docker images and push them to DockerHub
runs-on: ubuntu-latest
needs: tests
strategy:
matrix:
include:
- image_name: valeevilja/admin_panel
dockerfile: admin_panel/Dockerfile
- image_name: valeevilja/edubot
dockerfile: bots/telegram/Dockerfile
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.0.0

- name: Login to Docker Hub
uses: docker/login-action@v3.0.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}

- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ matrix.image_name }}

- name: Build and push
uses: docker/build-push-action@v5
with:
file: ${{ matrix.dockerfile }}
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

deploy:
name: Deploy to server
runs-on: ubuntu-latest
needs: build_and_push
steps:
- name: Checkout code
uses: actions/checkout@v4.1.1
- name: Copy infra files to server
uses: appleboy/scp-action@master
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.TEST_SERVER_USERNAME }}
key: ${{ secrets.TEST_SERVER_SSH_KEY }}
passphrase: ${{ secrets.TEST_SERVER_SSH_PASSPHRASE }}
source: "infra/docker-compose.yml,infra/swag_nginx.conf"
target: ${{ secrets.DEPLOY_PATH }}
overwrite: true
strip_components: 1

- name: Executing remote ssh commands to deploy
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.TEST_SERVER_USERNAME }}
key: ${{ secrets.TEST_SERVER_SSH_KEY }}
passphrase: ${{ secrets.TEST_SERVER_SSH_PASSPHRASE }}
script: |
cd ${{ secrets.DEPLOY_PATH }}
echo "SECRET_KEY=${{ secrets.SECRET_KEY }}" > .env
echo DJANGO_SUPERUSER_USERNAME=${{ secrets.DJANGO_SUPERUSER_USERNAME }} >> .env
echo DJANGO_SUPERUSER_PASSWORD=${{ secrets.DJANGO_SUPERUSER_PASSWORD }} >> .env
echo DJANGO_SUPERUSER_EMAIL=${{ secrets.DJANGO_SUPERUSER_EMAIL }} >> .env
echo DJANGO_CONFIGURATION=${{ secrets.DJANGO_CONFIGURATION }} >> .env
echo GPT_TOKEN=${{ secrets.GPT_TOKEN }} >> .env
echo FOLDER_ID=${{ secrets.FOLDER_ID }} >> .env
echo POSTGRES_USER=${{ secrets.POSTGRES_USER }} >> .env
echo POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }} >> .env
echo POSTGRES_DB=${{ secrets.POSTGRES_DB }} >> .env
echo POSTGRES_PORT=${{ secrets.POSTGRES_PORT }} >> .env
echo BOT_TOKEN=${{ secrets.BOT_TOKEN }} >> .env
echo CURATOR_CHAT_ID=${{ secrets.CURATOR_CHAT_ID }} >> .env
echo BASE_WEBHOOK_URL=${{ secrets.BASE_WEBHOOK_URL }} >> .env
echo WEB_SERVER_HOST=${{ secrets.WEB_SERVER_HOST }} >> .env
echo WEB_SERVER_PORT=${{ secrets.WEB_SERVER_PORT }} >> .env
echo WEB_SERVER_URL=${{ secrets.WEB_SERVER_URL }} >> .env
sudo docker compose stop django
sudo docker compose stop bot
sudo docker compose stop celery
sudo docker pull --quiet ${{ secrets.DOCKERHUB_USERNAME }}/admin_panel:main
sudo docker pull --quiet ${{ secrets.DOCKERHUB_USERNAME }}/bot:main
sudo docker compose up -d
sudo docker system prune -af
sudo docker compose exec django python manage.py collectstatic --no-input
Loading

0 comments on commit a361644

Please sign in to comment.