name: BEND FIELD CI on: push: pull_request: concurrency: group: bend-field-${{ github.ref }} cancel-in-progress: true jobs: release: runs-on: windows-latest strategy: max-parallel: 1 env: BEND_FIELD_BROWSER_PATH: C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe BEND_FIELD_EDGE_PATH: C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe BEND_FIELD_BENCHMARK_PROFILE: small BEND_FIELD_BROWSER_CONCURRENCY: "1" steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 24 - run: npm install --ignore-scripts - run: npm run test:ci production-bridge: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 24 - run: npm install --ignore-scripts - name: Install production bridge runtimes run: sudo apt-get update && sudo apt-get install -y php-cli apache2 libapache2-mod-php - run: npm run test:bridge - name: Exercise real Apache rewrite and proxy shell: bash run: | set -euo pipefail sudo a2enmod rewrite proxy proxy_http proxy_wstunnel headers sudo tee /etc/apache2/conf-available/linkfield-ci.conf >/dev/null <<'EOF' ServerTokens Prod ServerSignature Off AllowOverride All Require all granted EOF sudo a2enconf linkfield-ci sudo rm -rf /var/www/html/link-field sudo mkdir -p /var/www/html/link-field sudo chown -R "$USER":"$USER" /var/www/html/link-field LINK_FIELD_PUBLIC_DIR=/var/www/html/link-field node scripts/service-control.js deploy test_root="$(mktemp -d)" LINK_FIELD_PUBLIC_DIR=/var/www/html/link-field LINK_FIELD_TEST_DATA_ROOT="$test_root" LINK_FIELD_APACHE_BRIDGE=1 HOST=127.0.0.1 PORT=43129 node server.js >"$test_root/server.log" 2>&1 & server_pid=$! trap 'kill "$server_pid" 2>/dev/null || true; rm -rf "$test_root"' EXIT sudo service apache2 restart for attempt in $(seq 1 100); do if curl --fail --silent http://127.0.0.1/link-field/api/cloud/status | grep -q '"available":true'; then break; fi sleep 0.1 done curl --fail --show-error http://127.0.0.1/link-field/ curl --fail --show-error http://127.0.0.1/link-field/api/cloud/status | grep -q '"sharedWorld":true' test "$(curl --silent --output /dev/null --write-out '%{http_code}' http://127.0.0.1/link-field/server.js)" = 403 test "$(curl --silent --output /dev/null --write-out '%{http_code}' http://127.0.0.1/link-field/package.json)" = 403 test "$(curl --silent --output /dev/null --write-out '%{http_code}' http://127.0.0.1/link-field/scripts/service-control.js)" = 403 test "$(curl --silent --output /dev/null --write-out '%{http_code}' http://127.0.0.1/link-field/.linkfield-deployment.json)" = 403 node scripts/public-smoke-test.js http://127.0.0.1/link-field/