food-market/.forgejo/workflows/docker-public.yml
nns a54315bd6e
Some checks are pending
CI / POS (WPF, Windows) (push) Waiting to run
CI / Backend (.NET 8) (push) Successful in 1m8s
CI / Web (React + Vite) (push) Successful in 40s
Docker Public / Build + push Public (push) Successful in 28s
Docker Public / Deploy Public on stage (push) Successful in 11s
fix(ci): docker-public — актуализировать PUBLIC_*_URL под новые домены
Корень бага «кнопка Войти ведёт на zat.kz/410-Gone»:
.forgejo/workflows/docker-public.yml хардкодил PUBLIC_SITE_URL и
PUBLIC_APP_URL на zat.kz. На каждый git push CI собирал docker-image
с zat.kz и пушил под :latest, перетирая мои локальные пересборки.
Контейнер вечно крутил stale-бандл с href Войти=zat.kz/login.

Чиню env workflow:
- PUBLIC_SITE_URL → https://test.food-market.kz
- PUBLIC_APP_URL  → https://admin.food-market.kz
- TG-нотификация о деплое — ссылка на test.food-market.kz.

Локально форсировал свежий image (--no-cache), push под :latest,
compose pull --force-recreate. Smoke на проде:
- href Войти → https://admin.food-market.kz/login
- Никаких zat.kz в /usr/share/nginx/html (grep пуст).
2026-05-02 22:27:26 +05:00

104 lines
3.4 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

name: Docker Public
on:
push:
branches: [main]
paths:
- 'src/food-market.public/**'
- 'deploy/docker-compose.yml'
- '.forgejo/workflows/docker-public.yml'
workflow_dispatch:
env:
LOCAL_REGISTRY: 127.0.0.1:5001
# Текущие production-домены (миграция со stage zat.kz, см. коммит 79406e3).
# Публичный сайт = test.food-market.kz, админка/API = admin.food-market.kz.
# Без актуальных значений CI собирал бандл с zat.kz и каждый push
# перетирал латест-image, ломая prod (см. коммит 2a026c5).
PUBLIC_SITE_URL: https://test.food-market.kz
PUBLIC_APP_URL: https://admin.food-market.kz
jobs:
build:
name: Build + push Public
runs-on: [self-hosted, linux]
steps:
- uses: actions/checkout@v4
- name: Build + push
env:
SHA: ${{ github.sha }}
DOCKER_BUILDKIT: '1'
run: |
docker build \
--build-arg PUBLIC_SITE_URL=$PUBLIC_SITE_URL \
--build-arg PUBLIC_APP_URL=$PUBLIC_APP_URL \
-f src/food-market.public/Dockerfile \
-t $LOCAL_REGISTRY/food-market-public:$SHA \
-t $LOCAL_REGISTRY/food-market-public:latest \
src/food-market.public
docker push $LOCAL_REGISTRY/food-market-public:$SHA
docker push $LOCAL_REGISTRY/food-market-public:latest
deploy:
name: Deploy Public on stage
needs: build
runs-on: [self-hosted, linux]
steps:
- uses: actions/checkout@v4
- name: Update compose + .env
env:
PGPASS: ${{ secrets.STAGE_POSTGRES_PASSWORD }}
run: |
cat > /home/nns/food-market-stage/deploy/.env <<ENV
REGISTRY=127.0.0.1:5001
API_TAG=latest
WEB_TAG=latest
PUBLIC_TAG=latest
POSTGRES_PASSWORD=$PGPASS
ENV
cp deploy/docker-compose.yml /home/nns/food-market-stage/deploy/docker-compose.yml
- name: Pull + recreate public only
working-directory: /home/nns/food-market-stage/deploy
run: |
docker compose pull public
docker compose up -d --no-deps public
- name: Smoke
run: |
for i in 1 2 3 4 5 6; do
sleep 4
if curl -fsS http://127.0.0.1:8082/ -o /dev/null; then
echo "Public OK"
exit 0
fi
done
echo "Public smoke failed"
exit 1
- name: Notify Telegram on success
if: success()
env:
BOT: ${{ secrets.TELEGRAM_BOT_TOKEN }}
CHAT: ${{ secrets.TELEGRAM_CHAT_ID }}
SHA: ${{ github.sha }}
run: |
curl -sS -X POST "https://api.telegram.org/bot$BOT/sendMessage" \
--data-urlencode "chat_id=$CHAT" \
--data-urlencode "text=✅ stage public deployed — ${SHA:0:7} → https://test.food-market.kz" \
> /dev/null
- name: Notify Telegram on failure
if: failure()
env:
BOT: ${{ secrets.TELEGRAM_BOT_TOKEN }}
CHAT: ${{ secrets.TELEGRAM_CHAT_ID }}
SHA: ${{ github.sha }}
run: |
curl -sS -X POST "https://api.telegram.org/bot$BOT/sendMessage" \
--data-urlencode "chat_id=$CHAT" \
--data-urlencode "text=❌ stage public deploy FAILED — ${SHA:0:7}" \
> /dev/null