All checks were successful
Build and Run VSTU Compat Layer v1 / build_and_run (push) Successful in 6s
53 lines
2.3 KiB
YAML
53 lines
2.3 KiB
YAML
name: Build and Run VSTU Compat Layer v1
|
||
|
||
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_compat_v1:latest .
|
||
|
||
# Шаг 3: Перезапуск контейнера на хост-машине
|
||
# Это сердце упрощенного workflow
|
||
- name: Restart the container
|
||
run: |
|
||
# 1. Останавливаем и удаляем старый контейнер, если он существует.
|
||
# `docker ps -q -f name=...` вернет ID контейнера, если он запущен.
|
||
# Конструкция `[ $(...) ] && ...` проверит, не пустой ли вывод.
|
||
if [ "$(docker ps -q -f name=vstu_compat_v1)" ]; then
|
||
echo "Stopping and removing existing container..."
|
||
docker stop vstu_compat_v1
|
||
docker rm vstu_compat_v1
|
||
else
|
||
echo "No running container found. Skipping stop/remove."
|
||
fi
|
||
|
||
# 2. Запускаем новый контейнер из только что собранного локального образа.
|
||
# Команда точно такая же, как твоя.
|
||
echo "Starting new container..."
|
||
docker run -d \
|
||
--network cl2so4 \
|
||
--ip 172.20.1.1 \
|
||
--restart=always \
|
||
-v /home/holder/data_vstu_compat_v1:/app/data \
|
||
-v /home/holder/fclay/secrets/vstu_compat_v1.env:/app/.env \
|
||
--name vstu_compat_v1 \
|
||
vstu_compat_v1:latest
|
||
|
||
# (Опционально) Шаг 4: Очистка старых, "висячих" образов
|
||
# Это хорошая практика, чтобы не засорять диск.
|
||
- name: Clean up old images
|
||
if: always() # Выполнять этот шаг всегда, даже если предыдущие провалились
|
||
run: docker image prune -f |