name: Docker Web on: push: branches: [main] paths: - 'src/food-market.web/**' - 'deploy/Dockerfile.web' - 'deploy/nginx.conf' - 'deploy/docker-compose.yml' - '.forgejo/workflows/docker-web.yml' workflow_dispatch: env: LOCAL_REGISTRY: 127.0.0.1:5001 jobs: build: name: Build + push Web runs-on: [self-hosted, linux] steps: - uses: actions/checkout@v4 - name: Build + push (Docker daemon layer-cache) env: SHA: ${{ github.sha }} DOCKER_BUILDKIT: '1' run: | docker build \ -f deploy/Dockerfile.web \ -t $LOCAL_REGISTRY/food-market-web:$SHA \ -t $LOCAL_REGISTRY/food-market-web:latest \ . docker push $LOCAL_REGISTRY/food-market-web:$SHA docker push $LOCAL_REGISTRY/food-market-web:latest deploy: name: Deploy Web 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 web deploy FAILED — ${SHA:0:7}" \ > /dev/null