@@ -967,222 +967,3 @@ jobs:
967967 name : accessibility-reports-jquery
968968 pattern : accessibility-reports-*
969969 delete-merged : true
970-
971- csp-check-jquery :
972- name : CSP check (jQuery)
973- needs : [check-should-run, build-devextreme]
974- if : |
975- always() &&
976- needs.check-should-run.outputs.should-run == 'true' &&
977- needs.build-devextreme.result == 'success'
978- runs-on : devextreme-shr2
979- timeout-minutes : 60
980-
981- steps :
982- - name : Get sources
983- uses : actions/checkout@v4
984-
985- - name : Download artifacts
986- uses : actions/download-artifact@v4
987- with :
988- name : devextreme-artifacts-jquery
989- path : ./packages/devextreme
990-
991- - name : Unpack artifacts
992- working-directory : ./packages/devextreme
993- run : 7z x artifacts.zip -aoa
994-
995- - name : Setup Chrome
996- uses : ./.github/actions/setup-chrome
997- with :
998- chrome-version : ' 145.0.7632.67'
999-
1000- - name : Use Node.js
1001- uses : actions/setup-node@v4
1002- with :
1003- node-version-file : ' .node-version'
1004-
1005- - uses : pnpm/action-setup@v4
1006- with :
1007- run_install : false
1008-
1009- - name : Get pnpm store directory
1010- shell : bash
1011- run : echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
1012-
1013- - uses : actions/cache/restore@v4
1014- name : Restore pnpm cache
1015- with :
1016- path : ${{ env.STORE_PATH }}
1017- key : ${{ runner.os }}-pnpm-cache-${{ hashFiles('**/pnpm-lock.yaml') }}
1018- restore-keys : |
1019- ${{ runner.os }}-pnpm-cache
1020-
1021- - name : Install dependencies
1022- run : pnpm install --frozen-lockfile
1023-
1024- - name : Start CSP Server
1025- run : node apps/demos/utils/server/csp-server.js 8080 &
1026-
1027- - name : Run CSP Check
1028- working-directory : apps/demos
1029- env :
1030- CSP_FRAMEWORKS : jQuery
1031- CHROME_PATH : google-chrome-stable
1032- run : node utils/server/csp-check.js
1033-
1034- - name : Upload CSP report
1035- if : always()
1036- uses : actions/upload-artifact@v4
1037- with :
1038- name : csp-violations-jquery
1039- path : apps/demos/csp-reports/
1040- if-no-files-found : ignore
1041-
1042- csp-check-frameworks :
1043- name : CSP check (${{ matrix.FRAMEWORK }})
1044- needs : [check-should-run, determine-framework-tests-scope, build-devextreme]
1045- if : |
1046- always() &&
1047- needs.check-should-run.outputs.should-run == 'true' &&
1048- needs.determine-framework-tests-scope.result == 'success' &&
1049- needs.determine-framework-tests-scope.outputs.framework-tests-scope != 'none' &&
1050- needs.build-devextreme.result == 'success'
1051- strategy :
1052- fail-fast : false
1053- matrix :
1054- FRAMEWORK : [React, Vue, Angular]
1055- runs-on : devextreme-shr2
1056- timeout-minutes : 60
1057-
1058- steps :
1059- - name : Get sources
1060- uses : actions/checkout@v4
1061-
1062- - name : Download devextreme sources
1063- uses : actions/download-artifact@v4
1064- with :
1065- name : devextreme-sources
1066-
1067- - name : Setup Chrome
1068- uses : ./.github/actions/setup-chrome
1069- with :
1070- chrome-version : ' 145.0.7632.67'
1071-
1072- - name : Use Node.js
1073- uses : actions/setup-node@v4
1074- with :
1075- node-version-file : ' .node-version'
1076-
1077- - uses : pnpm/action-setup@v4
1078- with :
1079- run_install : false
1080-
1081- - name : Get pnpm store directory
1082- shell : bash
1083- run : echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
1084-
1085- - uses : actions/cache/restore@v4
1086- name : Restore pnpm cache
1087- with :
1088- path : ${{ env.STORE_PATH }}
1089- key : ${{ runner.os }}-pnpm-cache-${{ hashFiles('**/pnpm-lock.yaml') }}
1090- restore-keys : |
1091- ${{ runner.os }}-pnpm-cache
1092-
1093- - name : Install dependencies
1094- run : pnpm install --frozen-lockfile
1095-
1096- - name : Install tgz
1097- working-directory : apps/demos
1098- run : pnpm add ../../devextreme-installer.tgz ../../devextreme-dist-installer.tgz ../../devextreme-react-installer.tgz ../../devextreme-vue-installer.tgz ../../devextreme-angular-installer.tgz
1099-
1100- - name : Start CSP Server
1101- run : node apps/demos/utils/server/csp-server.js 8080 &
1102-
1103- - name : Run CSP Check
1104- working-directory : apps/demos
1105- env :
1106- CSP_FRAMEWORKS : ${{ matrix.FRAMEWORK }}
1107- CHROME_PATH : google-chrome-stable
1108- run : node utils/server/csp-check.js
1109-
1110- - name : Upload CSP report
1111- if : always()
1112- uses : actions/upload-artifact@v4
1113- with :
1114- name : csp-violations-${{ matrix.FRAMEWORK }}
1115- path : apps/demos/csp-reports/
1116- if-no-files-found : ignore
1117-
1118- csp-report-summary :
1119- name : CSP Violations Summary
1120- runs-on : devextreme-shr2
1121- needs : [check-should-run, csp-check-jquery, csp-check-frameworks]
1122- if : always() && needs.check-should-run.outputs.should-run == 'true'
1123- timeout-minutes : 5
1124-
1125- steps :
1126- - name : Get sources
1127- uses : actions/checkout@v4
1128-
1129- - name : Use Node.js
1130- uses : actions/setup-node@v4
1131- with :
1132- node-version-file : ' .node-version'
1133-
1134- - name : Download all CSP reports
1135- uses : actions/download-artifact@v4
1136- with :
1137- pattern : csp-violations-*
1138- path : csp-reports-all
1139- merge-multiple : true
1140- continue-on-error : true
1141-
1142- - name : Summarize CSP violations
1143- run : |
1144- mkdir -p apps/demos/csp-reports
1145-
1146- echo "## CSP Violations Report" >> $GITHUB_STEP_SUMMARY
1147- echo '' >> $GITHUB_STEP_SUMMARY
1148-
1149- GRAND_TOTAL=0
1150- for report in csp-reports-all/csp-violations-*.jsonl; do
1151- [ -f "$report" ] || continue
1152- FRAMEWORK=$(basename "$report" | sed 's/csp-violations-//;s/\.jsonl//')
1153- cp "$report" "apps/demos/csp-reports/"
1154-
1155- if [ -s "$report" ]; then
1156- COUNT=$(wc -l < "$report" | tr -d ' ')
1157- GRAND_TOTAL=$((GRAND_TOTAL + COUNT))
1158- echo "### ⚠️ ${FRAMEWORK}: ${COUNT} violation(s)" >> $GITHUB_STEP_SUMMARY
1159- echo '' >> $GITHUB_STEP_SUMMARY
1160- echo '<details>' >> $GITHUB_STEP_SUMMARY
1161- echo '<summary>Show detailed report</summary>' >> $GITHUB_STEP_SUMMARY
1162- echo '' >> $GITHUB_STEP_SUMMARY
1163- echo '```' >> $GITHUB_STEP_SUMMARY
1164- CSP_REPORT_FILE="$report" node apps/demos/utils/server/csp-report-summary.js >> $GITHUB_STEP_SUMMARY
1165- echo '```' >> $GITHUB_STEP_SUMMARY
1166- echo '' >> $GITHUB_STEP_SUMMARY
1167- echo '</details>' >> $GITHUB_STEP_SUMMARY
1168- echo '' >> $GITHUB_STEP_SUMMARY
1169- else
1170- echo "### ✅ ${FRAMEWORK}: No violations" >> $GITHUB_STEP_SUMMARY
1171- echo '' >> $GITHUB_STEP_SUMMARY
1172- fi
1173- done
1174-
1175- if [ "$GRAND_TOTAL" -eq 0 ]; then
1176- echo "✅ No CSP violations detected across all frameworks."
1177- else
1178- echo "⚠️ Total: $GRAND_TOTAL CSP violation(s)"
1179- fi
1180-
1181- - name : Upload merged CSP reports
1182- if : always()
1183- uses : actions/upload-artifact@v4
1184- with :
1185- name : csp-violations-report
1186- path : apps/demos/csp-reports/
1187- if-no-files-found : ignore
1188-
0 commit comments