feat: webowa wersja Video & Sound Downloader Pro (NestJS + React)
Some checks failed
deploy / deploy (push) Failing after 1m44s

Odwzorowanie desktopowego v6.5.6: tryby MP3/MP4/PLAYLISTA/FACEBOOK,
jakość/format, napisy, log na żywo (SSE), STOP. Docker + Gitea CI/CD,
deploy na videodownloader.naurecki.pl.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-29 10:45:22 +02:00
commit fbc4fb0834
29 changed files with 8129 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
name: deploy
# Build + deploy na tym samym hoście: runner ma zamontowany docker.sock,
# więc `docker compose` operuje na demonie serwera (naurecki.pl).
on:
push:
branches: [main, master]
workflow_dispatch:
concurrency:
group: deploy-videodownloader
cancel-in-progress: false
jobs:
deploy:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Sanity — docker dostępny
run: docker version && docker compose version
- name: Build obrazów
run: docker compose -f docker-compose.prod.yml build
- name: Start stacka
env:
PUBLIC_BASE_URL: https://videodownloader.naurecki.pl
TRIAL_ENABLED: ${{ vars.TRIAL_ENABLED }}
TRIAL_DAYS_LEFT: ${{ vars.TRIAL_DAYS_LEFT }}
TRIAL_EXPIRES: ${{ vars.TRIAL_EXPIRES }}
run: docker compose -f docker-compose.prod.yml up -d
- name: Czekaj na gotowość API
run: |
ok=0
for i in $(seq 1 40); do
if docker compose -f docker-compose.prod.yml exec -T api \
node -e "fetch('http://localhost:3000/api/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"; then
echo "API gotowe"; ok=1; break
fi
echo "czekam na API ($i)..."; sleep 2
done
[ "$ok" = "1" ] || { echo "API nie wstało"; docker compose -f docker-compose.prod.yml logs --tail=80 api; exit 1; }
- name: Sprzątanie nieużywanych obrazów
run: docker image prune -f