1414 uses : actions/checkout@v5
1515
1616 - name : Use Node.js 22
17- uses : actions/setup-node@v5
17+ uses : actions/setup-node@v6
1818 with :
1919 node-version : 22
2020 cache : ' npm'
@@ -35,6 +35,110 @@ jobs:
3535 INTERCOM_APP_ID : ${{ secrets.INTERCOM_APP_ID }}
3636 SEGMENT_TOKEN : ${{ secrets.SEGMENT_TOKEN }}
3737
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+ sed -i 's|https://apify.github.io/apify-docs|http://localhost:3000|g' default.conf
62+ mkdir -p $(pwd)/logs
63+ nginx -c $(pwd)/default.conf
64+ sleep 1
65+
66+ - name : Run header assertions
67+ run : |
68+ set -euo pipefail
69+ function assert_header() {
70+ url=$1
71+ header=$2
72+ expected=$3
73+ shift 3
74+ extra_args=("$@")
75+ actual=$(curl -s -D - -o /dev/null "${extra_args[@]}" "$url" | grep -i "^$header" | tr -d '\r' || true)
76+ echo "→ $url → $actual"
77+ echo "$actual" | grep -q "$expected" || (echo "❌ Expected '$expected' in '$header' for $url" && exit 1)
78+ }
79+
80+ echo "🧪 Checking Nginx responses... (apify-docs)"
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 "🧪 Checking Nginx responses... (apify-sdk-js)"
92+ assert_header "http://localhost:8080/sdk/js" "Content-Type" "text/html"
93+ assert_header "http://localhost:8080/sdk/js" "Content-Type" "text/markdown" -H "Accept: text/markdown"
94+ assert_header "http://localhost:8080/sdk/js/docs/guides/apify-platform" "Content-Type" "text/html"
95+ assert_header "http://localhost:8080/sdk/js/docs/guides/apify-platform.md" "Content-Type" "text/markdown"
96+ assert_header "http://localhost:8080/sdk/js/docs/guides/apify-platform" "Content-Type" "text/markdown" -H "Accept: text/markdown"
97+ assert_header "http://localhost:8080/sdk/js/llms.txt" "Content-Type" "text/markdown"
98+ assert_header "http://localhost:8080/sdk/js/llms-full.txt" "Content-Type" "text/markdown"
99+
100+ echo "🧪 Checking Nginx responses... (apify-sdk-python)"
101+ assert_header "http://localhost:8080/sdk/python" "Content-Type" "text/html"
102+ assert_header "http://localhost:8080/sdk/python" "Content-Type" "text/markdown" -H "Accept: text/markdown"
103+ assert_header "http://localhost:8080/sdk/python/docs/changelog" "Content-Type" "text/html"
104+ assert_header "http://localhost:8080/sdk/python/docs/changelog.md" "Content-Type" "text/markdown"
105+ assert_header "http://localhost:8080/sdk/python/docs/changelog" "Content-Type" "text/markdown" -H "Accept: text/markdown"
106+ assert_header "http://localhost:8080/sdk/python/llms.txt" "Content-Type" "text/markdown"
107+ assert_header "http://localhost:8080/sdk/python/llms-full.txt" "Content-Type" "text/markdown"
108+
109+ echo "🧪 Checking Nginx responses... (apify-client-js)"
110+ assert_header "http://localhost:8080/api/client/js" "Content-Type" "text/html"
111+ assert_header "http://localhost:8080/api/client/js" "Content-Type" "text/markdown" -H "Accept: text/markdown"
112+ assert_header "http://localhost:8080/api/client/js/docs/changelog" "Content-Type" "text/html"
113+ assert_header "http://localhost:8080/api/client/js/docs/changelog.md" "Content-Type" "text/markdown"
114+ assert_header "http://localhost:8080/api/client/js/docs/changelog" "Content-Type" "text/markdown" -H "Accept: text/markdown"
115+ assert_header "http://localhost:8080/api/client/js/llms.txt" "Content-Type" "text/markdown"
116+ assert_header "http://localhost:8080/api/client/js/llms-full.txt" "Content-Type" "text/markdown"
117+
118+ echo "🧪 Checking Nginx responses... (apify-client-python)"
119+ assert_header "http://localhost:8080/api/client/python" "Content-Type" "text/html"
120+ assert_header "http://localhost:8080/api/client/python" "Content-Type" "text/markdown" -H "Accept: text/markdown"
121+ assert_header "http://localhost:8080/api/client/python/docs/changelog" "Content-Type" "text/html"
122+ assert_header "http://localhost:8080/api/client/python/docs/changelog.md" "Content-Type" "text/markdown"
123+ assert_header "http://localhost:8080/api/client/python/docs/changelog" "Content-Type" "text/markdown" -H "Accept: text/markdown"
124+ assert_header "http://localhost:8080/api/client/python/llms.txt" "Content-Type" "text/markdown"
125+ assert_header "http://localhost:8080/api/client/python/llms-full.txt" "Content-Type" "text/markdown"
126+
127+ echo "🧪 Checking Nginx responses... (apify-cli)"
128+ assert_header "http://localhost:8080/cli" "Content-Type" "text/html"
129+ assert_header "http://localhost:8080/cli" "Content-Type" "text/markdown" -H "Accept: text/markdown"
130+ assert_header "http://localhost:8080/cli/docs/changelog" "Content-Type" "text/html"
131+ assert_header "http://localhost:8080/cli/docs/changelog.md" "Content-Type" "text/markdown"
132+ assert_header "http://localhost:8080/cli/docs/changelog" "Content-Type" "text/markdown" -H "Accept: text/markdown"
133+ assert_header "http://localhost:8080/cli/llms.txt" "Content-Type" "text/markdown"
134+ assert_header "http://localhost:8080/cli/llms-full.txt" "Content-Type" "text/markdown"
135+
136+ echo "✅ All Nginx header checks passed."
137+
138+ - name : Stop Nginx
139+ if : always()
140+ run : nginx -c $(pwd)/default.conf -s stop
141+
38142 lint_content :
39143 name : Lint markdown content
40144 runs-on : ubuntu-latest
51155 separator : " ,"
52156
53157 - name : Use Node.js 22
54- uses : actions/setup-node@v5
158+ uses : actions/setup-node@v6
55159 with :
56160 node-version : 22
57161 cache : ' npm'
84188 uses : actions/checkout@v5
85189
86190 - name : Use Node.js 22
87- uses : actions/setup-node@v5
191+ uses : actions/setup-node@v6
88192 with :
89193 node-version : 22
90194 cache : ' npm'
0 commit comments