| 
35 | 35 |                     INTERCOM_APP_ID: ${{ secrets.INTERCOM_APP_ID }}  | 
36 | 36 |                     SEGMENT_TOKEN: ${{ secrets.SEGMENT_TOKEN }}  | 
37 | 37 | 
 
  | 
 | 38 | +            -   name: Install Nginx  | 
 | 39 | +                run: |  | 
 | 40 | +                    sudo apt-get update  | 
 | 41 | +                    sudo apt-get install -y nginx  | 
 | 42 | +
  | 
 | 43 | +            -   name: Start Docusaurus server  | 
 | 44 | +                run: |  | 
 | 45 | +                    nohup npx docusaurus serve --port 3000 --no-open &  | 
 | 46 | +                    sleep 5  | 
 | 47 | +                    curl -f http://localhost:3000 > /dev/null  | 
 | 48 | +
  | 
 | 49 | +            -   name: Start Nginx with project config  | 
 | 50 | +                run: |  | 
 | 51 | +                    cat > default.conf <<EOF  | 
 | 52 | +                    worker_processes auto;  | 
 | 53 | +                    error_log $(pwd)/logs/error.log;  | 
 | 54 | +                    pid $(pwd)/logs/nginx.pid;  | 
 | 55 | +                    events {}  | 
 | 56 | +                    http {  | 
 | 57 | +                        access_log $(pwd)/logs/access.log;  | 
 | 58 | +                        include $(pwd)/nginx.conf;  | 
 | 59 | +                    }  | 
 | 60 | +                    EOF  | 
 | 61 | +                    mkdir -p $(pwd)/logs  | 
 | 62 | +                    nginx -c $(pwd)/default.conf  | 
 | 63 | +                    sleep 1  | 
 | 64 | +
  | 
 | 65 | +            -   name: Run header assertions  | 
 | 66 | +                run: |  | 
 | 67 | +                    set -euo pipefail  | 
 | 68 | +                    function assert_header() {  | 
 | 69 | +                        url=$1  | 
 | 70 | +                        header=$2  | 
 | 71 | +                        expected=$3  | 
 | 72 | +                        shift 3  | 
 | 73 | +                        extra_args=("$@")  | 
 | 74 | +                        actual=$(curl -s -D - -o /dev/null "${extra_args[@]}" "$url" | grep -i "^$header" | tr -d '\r' || true)  | 
 | 75 | +                        echo "→ $url → $actual"  | 
 | 76 | +                        echo "$actual" | grep -q "$expected" || (echo "❌ Expected '$expected' in '$header' for $url" && exit 1)  | 
 | 77 | +                    }  | 
 | 78 | +
  | 
 | 79 | +                    echo "🧪 Checking Nginx responses..."  | 
 | 80 | +
  | 
 | 81 | +                    assert_header "http://localhost:8080/" "Content-Type" "text/html"  | 
 | 82 | +                    assert_header "http://localhost:8080/" "Content-Type" "text/markdown" -H "Accept: text/markdown"  | 
 | 83 | +                    assert_header "http://localhost:8080/platform/proxy/usage" "Content-Type" "text/html"  | 
 | 84 | +                    assert_header "http://localhost:8080/platform/proxy/usage.md" "Content-Type" "text/markdown"  | 
 | 85 | +                    assert_header "http://localhost:8080/platform/proxy/usage" "Content-Type" "text/markdown" -H "Accept: text/markdown"  | 
 | 86 | +                    assert_header "http://localhost:8080/img/docs-og.png" "Content-Type" "image/png"  | 
 | 87 | +                    assert_header "http://localhost:8080/img/javascript-40x40.svg" "Content-Type" "image/svg"  | 
 | 88 | +                    assert_header "http://localhost:8080/llms.txt" "Content-Type" "text/markdown"  | 
 | 89 | +                    assert_header "http://localhost:8080/llms-full.txt" "Content-Type" "text/markdown"  | 
 | 90 | +
  | 
 | 91 | +                    echo "✅ All Nginx header checks passed."  | 
 | 92 | +
  | 
 | 93 | +            -   name: Stop Nginx  | 
 | 94 | +                if: always()  | 
 | 95 | +                run: nginx -c $(pwd)/default.conf -s stop  | 
 | 96 | + | 
38 | 97 |     lint_content:  | 
39 | 98 |         name: Lint markdown content  | 
40 | 99 |         runs-on: ubuntu-latest  | 
 | 
0 commit comments