Настройка сборки образов
This commit is contained in:
@@ -3,11 +3,43 @@ name: Deploy Telegram Bot
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main # Срабатывает только при пуше в main
|
- main
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
# ЧАСТЬ 1: Собираем образы и кладем в Gitea (чтобы делиться с ребятами)
|
||||||
|
build-and-push:
|
||||||
|
runs-on: ubuntu-latest # Замени на метку твоего раннера, если она другая
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Login to Gitea Container Registry
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: https://git.codeanddice.ru # НАПРИМЕР: gitea.my-server.com
|
||||||
|
username: ${{ gitea.actor }}
|
||||||
|
password: ${{ secrets.GITEA_TOKEN }}
|
||||||
|
|
||||||
|
- name: Build and push Bot
|
||||||
|
uses: docker/build-push-action@v5
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
file: src/GmRelay.Bot/Dockerfile
|
||||||
|
push: true
|
||||||
|
tags: https://git.codeanddice.ru/${{ gitea.actor }}/gmrelay-bot:latest
|
||||||
|
|
||||||
|
- name: Build and push Web
|
||||||
|
uses: docker/build-push-action@v5
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
file: src/GmRelay.Web/Dockerfile
|
||||||
|
push: true
|
||||||
|
tags: https://git.codeanddice.ru/${{ gitea.actor }}/gmrelay-web:latest
|
||||||
|
|
||||||
|
# ЧАСТЬ 2: Запускаем эти образы на самом сервере
|
||||||
deploy:
|
deploy:
|
||||||
runs-on: ubuntu-latest
|
needs: build-and-push
|
||||||
|
runs-on: ubuntu-latest # Тот же локальный раннер
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@@ -17,8 +49,16 @@ jobs:
|
|||||||
echo "TELEGRAM_BOT_TOKEN=${{ secrets.TELEGRAM_BOT_TOKEN }}" > .env
|
echo "TELEGRAM_BOT_TOKEN=${{ secrets.TELEGRAM_BOT_TOKEN }}" > .env
|
||||||
echo "POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }}" >> .env
|
echo "POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }}" >> .env
|
||||||
echo "TELEGRAM_BOT_USERNAME=${{ secrets.TELEGRAM_BOT_USERNAME }}" >> .env
|
echo "TELEGRAM_BOT_USERNAME=${{ secrets.TELEGRAM_BOT_USERNAME }}" >> .env
|
||||||
- name: Build and Deploy
|
|
||||||
|
- name: Deploy Containers
|
||||||
run: |
|
run: |
|
||||||
# Останавливаем старого бота и поднимаем нового
|
# Авторизуемся локальным докером в нашей Gitea
|
||||||
docker compose down
|
docker login https://git.codeanddice.ru/ -u ${{ gitea.actor }} -p ${{ secrets.GITEA_TOKEN }}
|
||||||
docker compose up -d --build
|
|
||||||
|
# Так как раннер на том же сервере, образ уже закэширован,
|
||||||
|
# но pull гарантирует, что compose подхватит именно свежий latest-тег.
|
||||||
|
docker compose pull bot web
|
||||||
|
|
||||||
|
# Запускаем! Флаг -d оставит их работать в фоне.
|
||||||
|
# БД не перезапустится, так как её образ не менялся.
|
||||||
|
docker compose up -d
|
||||||
+3
-7
@@ -12,15 +12,13 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- "5432:5432"
|
- "5432:5432"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD-SHELL", "pg_isready -U gmrelay -d gmrelay_db"]
|
test: [ "CMD-SHELL", "pg_isready -U gmrelay -d gmrelay_db" ]
|
||||||
interval: 3s
|
interval: 3s
|
||||||
timeout: 3s
|
timeout: 3s
|
||||||
retries: 10
|
retries: 10
|
||||||
|
|
||||||
bot:
|
bot:
|
||||||
build:
|
image: https://git.codeanddice.ru/toutsu/gmrelay-bot:latest
|
||||||
context: .
|
|
||||||
dockerfile: src/GmRelay.Bot/Dockerfile
|
|
||||||
container_name: gmrelay_bot
|
container_name: gmrelay_bot
|
||||||
restart: always
|
restart: always
|
||||||
network_mode: host
|
network_mode: host
|
||||||
@@ -32,9 +30,7 @@ services:
|
|||||||
- "Telegram__BotToken=${TELEGRAM_BOT_TOKEN}"
|
- "Telegram__BotToken=${TELEGRAM_BOT_TOKEN}"
|
||||||
|
|
||||||
web:
|
web:
|
||||||
build:
|
image: https://git.codeanddice.ru/toutsu/gmrelay-web:latest
|
||||||
context: .
|
|
||||||
dockerfile: src/GmRelay.Web/Dockerfile
|
|
||||||
container_name: gmrelay_web
|
container_name: gmrelay_web
|
||||||
restart: always
|
restart: always
|
||||||
network_mode: host
|
network_mode: host
|
||||||
|
|||||||
Reference in New Issue
Block a user