Skip to content

Deploy Forecast Site #910

Deploy Forecast Site

Deploy Forecast Site #910

Workflow file for this run

name: Deploy Forecast Site
on:
workflow_dispatch:
schedule:
- cron: "0 * * * *"
push:
branches: [main]
paths:
- "site/**"
- "scripts/refresh_site_data.py"
- ".github/workflows/refresh-site.yml"
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: github-pages
cancel-in-progress: false
jobs:
refresh-and-deploy:
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install package
run: python -m pip install -e .[dev]
- name: Configure public site data endpoint
if: vars.CONSUMERSIM_SITE_DATA_URL != ''
env:
CONSUMERSIM_SITE_DATA_URL: ${{ vars.CONSUMERSIM_SITE_DATA_URL }}
run: |
python - <<'PY'
import json
import os
from pathlib import Path
value = os.environ["CONSUMERSIM_SITE_DATA_URL"]
Path("site/site-config.js").write_text(
f"window.CONSUMERSIM_SITE_DATA_URL = {json.dumps(value)};\n",
encoding="utf-8",
)
PY
- name: Refresh Pages artifact site data
env:
CONSUMERSIM_SSH_PRIVATE_KEY: ${{ secrets.CONSUMERSIM_SSH_PRIVATE_KEY }}
CONSUMERSIM_SSH_HOST: ${{ vars.CONSUMERSIM_SSH_HOST || '8.216.41.50' }}
CONSUMERSIM_SSH_PORT: ${{ vars.CONSUMERSIM_SSH_PORT || '22' }}
CONSUMERSIM_SSH_USER: ${{ vars.CONSUMERSIM_SSH_USER || 'yixu' }}
CONSUMERSIM_SSH_SITE_DATA_PATH: ${{ vars.CONSUMERSIM_SSH_SITE_DATA_PATH || '/home/yixu/consumersim-api/data/consumersim_site_data.csv' }}
CONSUMERSIM_API_BASE_URL: ${{ secrets.CONSUMERSIM_API_BASE_URL || vars.CONSUMERSIM_API_BASE_URL }}
CONSUMERSIM_API_KEY: ${{ secrets.CONSUMERSIM_API_KEY }}
CONSUMERSIM_API_KEY_HEADER: ${{ vars.CONSUMERSIM_API_KEY_HEADER }}
CONSUMERSIM_API_KEY_SCHEME: ${{ vars.CONSUMERSIM_API_KEY_SCHEME }}
CONSUMERSIM_SITE_DATA_PATH: ${{ vars.CONSUMERSIM_SITE_DATA_PATH }}
CONSUMERSIM_TIMEOUT_SECONDS: ${{ vars.CONSUMERSIM_TIMEOUT_SECONDS }}
run: |
if [ -n "$CONSUMERSIM_SSH_PRIVATE_KEY" ]; then
mkdir -p ~/.ssh
chmod 700 ~/.ssh
printf '%s\n' "$CONSUMERSIM_SSH_PRIVATE_KEY" > ~/.ssh/consumersim_site_data_key
chmod 600 ~/.ssh/consumersim_site_data_key
ssh-keyscan -p "$CONSUMERSIM_SSH_PORT" "$CONSUMERSIM_SSH_HOST" >> ~/.ssh/known_hosts
scp -i ~/.ssh/consumersim_site_data_key \
-P "$CONSUMERSIM_SSH_PORT" \
"$CONSUMERSIM_SSH_USER@$CONSUMERSIM_SSH_HOST:$CONSUMERSIM_SSH_SITE_DATA_PATH" \
/tmp/consumersim_site_data.csv
python scripts/refresh_site_data.py \
--input /tmp/consumersim_site_data.csv \
--output site/data/consumersim_site_data.csv
else
python scripts/refresh_site_data.py --output site/data/consumersim_site_data.csv
fi
- name: Run tests
run: python -m pytest -q
- name: Configure Pages
uses: actions/configure-pages@v5
- name: Upload Pages artifact
uses: actions/upload-pages-artifact@v3
with:
path: site
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4