name: Test on: workflow_call: jobs: build-and-test: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Build Docker image run: docker build -t learning-platform . - name: Build test image run: | cat > Dockerfile.test <<'EOF' FROM learning-platform COPY Caddyfile.test /etc/caddy/Caddyfile EOF docker build -t learning-platform-test -f Dockerfile.test . - name: Start container run: | docker run -d --network gitea --name test-container learning-platform-test sleep 5 - name: Test homepage run: | status=$(curl -s -o /dev/null -w "%{http_code}" http://test-container) if [ "$status" != "200" ]; then echo "Homepage failed with status $status" exit 1 fi echo "✓ Homepage OK" - name: Test security headers run: | headers=$(curl -sI http://test-container) echo "$headers" | grep -q "X-Frame-Options" || (echo "Missing X-Frame-Options" && exit 1) echo "$headers" | grep -q "X-Content-Type-Options" || (echo "Missing X-Content-Type-Options" && exit 1) echo "✓ Security headers OK" - name: Cleanup if: always() run: docker stop test-container && docker rm test-container