Skip to content

Synchronize IO List FAT documentation and landing pages #54

Synchronize IO List FAT documentation and landing pages

Synchronize IO List FAT documentation and landing pages #54

Workflow file for this run

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