Synchronize IO List FAT documentation and landing pages #54
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build search growth queue | |
| on: | |
| schedule: | |
| - cron: "5 4 * * 1" | |
| workflow_dispatch: | |
| inputs: | |
| days: | |
| description: Aggregated evidence window in days | |
| required: false | |
| default: "28" | |
| type: choice | |
| options: ["7", "28", "60", "90"] | |
| pull_request: | |
| branches: [ main ] | |
| paths: | |
| - "landing/**" | |
| - "scripts/build-product-site.py" | |
| - "scripts/apply-search-authority.py" | |
| - "scripts/validate-search-authority.py" | |
| - "scripts/build-search-growth-report.py" | |
| - "scripts/build-site-measurement-report.py" | |
| - "scripts/check-measurement-readiness.py" | |
| - "scripts/generate-privacy-pages.py" | |
| - "scripts/inject-site-measurement.py" | |
| - "scripts/check-site-health.py" | |
| - ".github/workflows/search-growth.yml" | |
| - ".github/workflows/pages.yml" | |
| push: | |
| branches: [ main ] | |
| paths: | |
| - "landing/**" | |
| - "scripts/build-product-site.py" | |
| - "scripts/apply-search-authority.py" | |
| - "scripts/validate-search-authority.py" | |
| - "scripts/build-search-growth-report.py" | |
| - "scripts/build-site-measurement-report.py" | |
| - "scripts/check-measurement-readiness.py" | |
| - "scripts/generate-privacy-pages.py" | |
| - "scripts/inject-site-measurement.py" | |
| - "scripts/check-site-health.py" | |
| - ".github/workflows/search-growth.yml" | |
| - ".github/workflows/pages.yml" | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: search-growth-${{ github.ref }} | |
| cancel-in-progress: true | |
| env: | |
| CANONICAL_ROOT: https://masarray.github.io/arsas/ | |
| jobs: | |
| quality: | |
| name: Validate authority graph and structural growth queue | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| show-progress: false | |
| - name: Setup Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Prepare deterministic stable release evidence | |
| shell: bash | |
| run: cp landing/latest.json /tmp/arsas-published.json | |
| - name: Build product website | |
| run: python scripts/build-product-site.py --output _site --release-evidence /tmp/arsas-published.json | |
| - name: Apply contextual search authority graph | |
| run: python scripts/apply-search-authority.py _site | |
| - name: Generate bilingual privacy pages | |
| env: | |
| GA4_MEASUREMENT_ID: ${{ vars.GA4_MEASUREMENT_ID }} | |
| run: python scripts/generate-privacy-pages.py --output _site --release-evidence /tmp/arsas-published.json --measurement-id "$GA4_MEASUREMENT_ID" | |
| - name: Configure optional consent-gated measurement | |
| env: | |
| GA4_MEASUREMENT_ID: ${{ vars.GA4_MEASUREMENT_ID }} | |
| run: python scripts/inject-site-measurement.py _site --measurement-id "$GA4_MEASUREMENT_ID" | |
| - name: Validate rendered authority graph | |
| run: python scripts/validate-search-authority.py _site | |
| - name: Check internal links and fragments | |
| run: python scripts/check-site-health.py --site _site --output _growth/health | |
| - name: Exercise disabled readiness state | |
| env: | |
| GA4_MEASUREMENT_ID: "" | |
| GA4_PROPERTY_ID: "" | |
| GSC_SITE_URL: https://masarray.github.io/arsas/ | |
| GOOGLE_SERVICE_ACCOUNT_JSON: "" | |
| GOOGLE_APPLICATION_CREDENTIALS: "" | |
| GCP_WORKLOAD_IDENTITY_PROVIDER: "" | |
| GCP_SERVICE_ACCOUNT: "" | |
| run: python scripts/check-measurement-readiness.py --output _growth/readiness --strict | |
| - name: Build credential-free structural growth queue | |
| run: python scripts/build-search-growth-report.py --site _site --output _growth/queue | |
| - name: Add structural queue to job summary | |
| shell: bash | |
| run: cat _growth/queue/search-growth.md >> "$GITHUB_STEP_SUMMARY" | |
| - name: Upload structural growth evidence | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: search-growth-quality | |
| path: _growth/ | |
| if-no-files-found: error | |
| retention-days: 30 | |
| insights: | |
| name: Build private measured search growth queue | |
| if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' | |
| needs: quality | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| id-token: write | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| show-progress: false | |
| - name: Setup Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Install read-only reporting dependencies | |
| run: python -m pip install --disable-pip-version-check --quiet google-auth requests | |
| - name: Authenticate through Workload Identity when configured | |
| if: vars.GCP_WORKLOAD_IDENTITY_PROVIDER != '' && vars.GCP_SERVICE_ACCOUNT != '' | |
| uses: google-github-actions/auth@v3 | |
| with: | |
| workload_identity_provider: ${{ vars.GCP_WORKLOAD_IDENTITY_PROVIDER }} | |
| service_account: ${{ vars.GCP_SERVICE_ACCOUNT }} | |
| create_credentials_file: true | |
| export_environment_variables: true | |
| - name: Prepare deterministic stable release evidence | |
| shell: bash | |
| run: cp landing/latest.json /tmp/arsas-published.json | |
| - name: Build current product website | |
| run: python scripts/build-product-site.py --output _site --release-evidence /tmp/arsas-published.json | |
| - name: Apply contextual search authority graph | |
| run: python scripts/apply-search-authority.py _site | |
| - name: Generate bilingual privacy pages | |
| env: | |
| GA4_MEASUREMENT_ID: ${{ vars.GA4_MEASUREMENT_ID }} | |
| run: python scripts/generate-privacy-pages.py --output _site --release-evidence /tmp/arsas-published.json --measurement-id "$GA4_MEASUREMENT_ID" | |
| - name: Configure optional consent-gated measurement | |
| env: | |
| GA4_MEASUREMENT_ID: ${{ vars.GA4_MEASUREMENT_ID }} | |
| run: python scripts/inject-site-measurement.py _site --measurement-id "$GA4_MEASUREMENT_ID" | |
| - name: Check measurement activation readiness | |
| id: readiness | |
| env: | |
| GA4_MEASUREMENT_ID: ${{ vars.GA4_MEASUREMENT_ID }} | |
| GA4_PROPERTY_ID: ${{ vars.GA4_PROPERTY_ID }} | |
| GSC_SITE_URL: ${{ vars.GSC_SITE_URL || 'https://masarray.github.io/arsas/' }} | |
| GOOGLE_SERVICE_ACCOUNT_JSON: ${{ secrets.GOOGLE_SERVICE_ACCOUNT_JSON }} | |
| GCP_WORKLOAD_IDENTITY_PROVIDER: ${{ vars.GCP_WORKLOAD_IDENTITY_PROVIDER }} | |
| GCP_SERVICE_ACCOUNT: ${{ vars.GCP_SERVICE_ACCOUNT }} | |
| run: python scripts/check-measurement-readiness.py --output _growth/readiness --strict | |
| - name: Add readiness state to job summary | |
| shell: bash | |
| run: cat _growth/readiness/readiness.md >> "$GITHUB_STEP_SUMMARY" | |
| - name: Build aggregated traffic, search, sitemap and CWV evidence | |
| if: steps.readiness.outputs.live_ready == 'true' | |
| env: | |
| GOOGLE_SERVICE_ACCOUNT_JSON: ${{ secrets.GOOGLE_SERVICE_ACCOUNT_JSON }} | |
| GA4_PROPERTY_ID: ${{ vars.GA4_PROPERTY_ID }} | |
| GSC_SITE_URL: ${{ vars.GSC_SITE_URL || 'https://masarray.github.io/arsas/' }} | |
| PAGESPEED_API_KEY: ${{ secrets.PAGESPEED_API_KEY }} | |
| PAGESPEED_URLS: ${{ vars.PAGESPEED_URLS || 'https://masarray.github.io/arsas/,https://masarray.github.io/arsas/download.html,https://masarray.github.io/arsas/smart-reporting.html,https://masarray.github.io/arsas/guides.html,https://masarray.github.io/arsas/id.html,https://masarray.github.io/arsas/unduh.html' }} | |
| REPORT_DAYS: ${{ inputs.days || '28' }} | |
| GITHUB_STEP_SUMMARY: "" | |
| run: python scripts/build-site-measurement-report.py --site _site --output _growth/measurement --days "$REPORT_DAYS" | |
| - name: Build prioritized growth queue | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| if [ -f _growth/measurement/measurement.json ]; then | |
| python scripts/build-search-growth-report.py --site _site --measurement-json _growth/measurement/measurement.json --output _growth/queue | |
| else | |
| python scripts/build-search-growth-report.py --site _site --output _growth/queue | |
| fi | |
| - name: Add growth queue to job summary | |
| shell: bash | |
| run: cat _growth/queue/search-growth.md >> "$GITHUB_STEP_SUMMARY" | |
| - name: Upload private measured growth evidence | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: search-growth-${{ github.run_number }} | |
| path: _growth/ | |
| if-no-files-found: error | |
| retention-days: 90 |