123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- #!/bin/bash
- # Change directory to the first argument passed to the script
- project_dir=$1
- shift
- pushd "$project_dir" || exit 1
- echo "Changed directory to $project_dir"
- # So we get stdout / stderr from Python ASAP. Without this, delays can be very long (e.g. on Windows, Github Actions)
- export PYTHONUNBUFFERED=1
- env_mode=$1
- shift
- check_ports=${1:-3000 8000}
- shift
- # Start the server in the background
- export TELEMETRY_ENABLED=false
- reflex run --loglevel debug --env "$env_mode" "$@" & pid=$!
- # Within the context of this bash, $pid_in_bash is what we need to pass to "kill" on exit
- # This is true on all platforms.
- pid_in_bash=$pid
- trap "kill -INT $pid_in_bash ||:" EXIT
- echo "Started server with PID $pid"
- # Assume we run from the root of the repo
- popd
- # In Windows, our Python script below needs to work with the WINPID
- if [ -f /proc/$pid/winpid ]; then
- pid=$(cat /proc/$pid/winpid)
- echo "Windows detected, passing winpid $pid to port waiter"
- fi
- python scripts/wait_for_listening_port.py $check_ports --timeout=600 --server-pid "$pid"
- # Check if something is running on port 3000
- if curl --output /dev/null --silent --head --fail "http://localhost:3000"; then
- echo "URL exists: http://localhost:3000"
- else
- echo "URL does not exist: https://localhost:3000"
- fi
- # Change to .web directory
- project_dir=$1
- shift
- pushd "$project_dir" || exit 1
- echo "Changed directory to $project_dir"
- cd .web
- # Create a lighthouserc.js file
- cat << EOF > lighthouserc.js
- module.exports = {
- ci: {
- collect: {
- isSinglePageApplication: true,
- numberOfRuns: 1,
- url: ['http://localhost:3000', "http://localhost:3000/docs/getting-started/introduction/", "http://localhost:3000/blog/2023-08-02-seed-annoucement/"]
- },
- upload: {
- target: 'temporary-public-storage',
- },
- },
- };
- EOF
- # Install and Run LHCI
- npm install -g @lhci/cli
- lhci autorun || echo "LHCI failed!"
- #!/bin/bash
- # Define the base URL where you want to send the POST requests
- base_url="https://app.posthog.com/capture/"
- # Directory containing JSON files
- json_dir=".lighthouseci"
- # API Key
- api_key="$POSTHOG"
- # Get the current timestamp
- timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
- # Loop through each JSON file in the directory
- for json_file in "$json_dir"/*.json; do
- if [ -f "$json_file" ]; then
- # Extract the file name without the extension
- file_name=$(basename "$json_file" .json)
- # Generate a random distinct_id (a random number)
- distinct_id=$((RANDOM))
- # Read the contents of the JSON file
- json_data=$(cat "$json_file")
- # Construct the event name with the JSON file name
- event="Lighthouse CI - $file_name"
- # Construct the JSON payload with the random distinct_id
- payload="{\"api_key\": \"$api_key\", \"event\": \"$event\", \"timestamp\": \"$timestamp\", \"distinct_id\": $distinct_id, \"properties\": $json_data}"
- # Create a temporary file for the payload
- tmpfile=$(mktemp)
- # Write the payload to the temporary file
- echo "$payload" > "$tmpfile"
- # Send the POST request with the constructed payload using curl
- response=$(curl -X POST -H "Content-Type: application/json" --data @"$tmpfile" "$base_url")
- # Clean up the temporary file
- rm "$tmpfile"
- # Print the response for each file
- echo "Response for $json_file:"
- echo "$response"
- fi
- done
|