name: Lighthouse Scan & Uptime Cron on: schedule: - cron: '0 */6 * * *' # Lighthouse scans every 6 hours - cron: '*/5 * * * *' # Uptime checks every 5 minutes workflow_dispatch: inputs: mode: description: 'Job to run' required: true default: 'all' type: choice options: - all - scan - uptime jobs: uptime: runs-on: ubuntu-latest if: github.event.schedule == '*/5 * * * *' || github.event.inputs.mode == 'uptime' || github.event.inputs.mode == 'all' steps: - name: Run Uptime Checks run: | DEPLOYMENT_URL="${DEPLOYMENT_URL:-https://your-domain.com}" echo "Running uptime checks at: $DEPLOYMENT_URL/api/cron/uptime" response=$(curl -s -w "\n%{http_code}" -H "Authorization: Bearer $CRON_SECRET" "$DEPLOYMENT_URL/api/cron/uptime") http_code=$(echo "$response" | tail -n1) response_body=$(echo "$response" | head -n -1) echo "Status: $http_code" echo "Body: $response_body" if [ "$http_code" -eq 200 ]; then echo "✅ Uptime checks completed" else echo "❌ Uptime checks failed: $http_code" exit 1 fi env: DEPLOYMENT_URL: ${{ secrets.DEPLOYMENT_URL }} CRON_SECRET: ${{ secrets.CRON_SECRET }} CRON_SECRET: ${{ secrets.CRON_SECRET }} scan: runs-on: ubuntu-latest if: github.event.schedule == '0 */6 * * *' || github.event.inputs.mode == 'scan' || github.event.inputs.mode == 'all' steps: - name: Trigger Lighthouse Scan run: | DEPLOYMENT_URL="${DEPLOYMENT_URL:-https://your-domain.com}" echo "Triggering scan at: $DEPLOYMENT_URL/api/cron/scan?mode=all" response=$(curl -s -w "\n%{http_code}" -X POST -H "Authorization: Bearer $CRON_SECRET" "$DEPLOYMENT_URL/api/cron/scan?mode=all") http_code=$(echo "$response" | tail -n1) response_body=$(echo "$response" | head -n -1) echo "Status: $http_code" echo "Body: $response_body" if [ "$http_code" -eq 200 ]; then echo "✅ Scan triggered successfully" else echo "❌ Failed to trigger scan: $http_code" exit 1 fi env: DEPLOYMENT_URL: ${{ secrets.DEPLOYMENT_URL }}