name: Container Smoke Test on: pull_request: paths: [Dockerfile, .dockerignore, 'server/**', scripts/healthcheck.cjs, 'package*.json', .github/workflows/container.yml] permissions: contents: read jobs: container: runs-on: ubuntu-latest timeout-minutes: 20 steps: - uses: actions/checkout@v7 - name: Build and check readiness shell: bash run: | set -euo pipefail mkdir -p data printf 'build context sentinel' > .env.container-sentinel printf 'build context sentinel' > data/container-sentinel docker build -t nodecast-smoke . docker run -d --name nodecast-smoke nodecast-smoke for attempt in $(seq 1 60); do if docker exec nodecast-smoke node scripts/healthcheck.cjs; then docker exec nodecast-smoke sh -c 'test ! -e /app/.env.container-sentinel && test ! -e /app/data/container-sentinel' docker exec nodecast-smoke lspci --version docker exec nodecast-smoke node -e "require('./server/services/hwDetect').detectQuickSync('ffmpeg').then(q => { if (q.available) process.exit(1); })" exit 0 fi sleep 2 done docker logs nodecast-smoke exit 1 - name: Show container logs on failure if: failure() run: docker logs nodecast-smoke || true - name: Remove smoke container if: always() run: docker rm -f nodecast-smoke || true