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 < /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