From 11d03bfe123305d25054db566f41978b0bf97d06 Mon Sep 17 00:00:00 2001 From: FazziCLAY Date: Sat, 28 Mar 2026 22:34:15 +0300 Subject: [PATCH] ci: added ci/cd --- .gitea/workflows/deploy.yml | 55 +++++++++++++++++++++++++++++++++++++ README.md | 4 +-- 2 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 .gitea/workflows/deploy.yml diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml new file mode 100644 index 0000000..2acf146 --- /dev/null +++ b/.gitea/workflows/deploy.yml @@ -0,0 +1,55 @@ +name: Build and Run VSTU Schedule Parser + +on: + push: + branches: + - main + +jobs: + build_and_run: + runs-on: ubuntu-latest + + steps: + # Шаг 1: Получаем исходный код проекта + - name: Checkout code + uses: actions/checkout@v3 + + # Шаг 2: Сборка Docker-образа локально на хост-машине + # Мы не пушим его в registry, а просто создаем с нужным тегом. + - name: Build Docker image + run: docker build -t vstu_schedule_parser_v2:latest . + + # Шаг 3: Перезапуск контейнера на хост-машине + # Это сердце упрощенного workflow + - name: Restart the container + run: | + # 1. Останавливаем и удаляем старый контейнер, если он существует. + # `docker ps -q -f name=...` вернет ID контейнера, если он запущен. + # Конструкция `[ $(...) ] && ...` проверит, не пустой ли вывод. + if [ "$(docker ps -q -f name=vstu_schedule_parser_v2)" ]; then + echo "Stopping and removing existing container..." + docker stop vstu_schedule_parser_v2 + docker rm vstu_schedule_parser_v2 + else + echo "No running container found. Skipping stop/remove." + fi + + # 2. Запускаем новый контейнер из только что собранного локального образа. + # Команда точно такая же, как твоя. + echo "Starting new container..." + docker run -d \ + --network cl2so4 \ + --ip 172.20.0.59 \ + -v /home/holder/fclay/secrets/vstu_schedule_parser_v2.env:/app/.env + -v /home/holder/fclay/fclaydata/vstu_schedule_parser_v2/parsed:/app/parsed + -v /home/holder/fclay/fclaydata/vstu_schedule_parser_v2/parser.json:/app/parser.json + -v /home/holder/fclay/fclaydata/vstu_schedule_parser_v2/result_v2.json:/app/result_v2.json + --restart=always \ + --name=vstu_schedule_parser_v2 \ + vstu_schedule_parser_v2:latest + + # (Опционально) Шаг 4: Очистка старых, "висячих" образов + # Это хорошая практика, чтобы не засорять диск. + - name: Clean up old images + if: always() # Выполнять этот шаг всегда, даже если предыдущие провалились + run: docker image prune -f diff --git a/README.md b/README.md index 3372024..5be4f69 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ -# Vstu Schedule Parser -Парсер расписания ВолгГТУ всех факультетов с сайта. Всё автоматизиорвано, запускаешь, ждёшь 2 минуты и на выходе result.json СО ВСЕМ расписанием. \ No newline at end of file +# Vstu Schedule Parser (v2) +Парсер расписания ВолгГТУ всех факультетов с сайта.