56 lines
2.6 KiB
YAML
56 lines
2.6 KiB
YAML
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
|