42 lines
1.5 KiB
YAML
42 lines
1.5 KiB
YAML
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
|