Skip to content

Backup results

Backup results #329

name: Backup results
# on: push
on:
schedule:
- cron: "0 1 * * *"
workflow_dispatch:
jobs:
backup_results:
# The type of runner that the job will run on
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
contents: write
pull-requests: write
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v4
- name: 📦 Setup Node + PNPM + install deps
uses: ./.github/actions/setup-node-pnpm-install
- name: Get PR #150 branch name
id: get-branch
env:
GH_TOKEN: ${{ github.token }}
run: |
BRANCH=$(gh pr view 150 --json headRefName --jq '.headRefName')
echo "branch=$BRANCH" >> $GITHUB_OUTPUT
echo "Target branch: $BRANCH"
- name: Checkout PR branch
run: |
git fetch origin ${{ steps.get-branch.outputs.branch }}
git checkout ${{ steps.get-branch.outputs.branch }}
- name: Export results to 2025 directory
env:
FIREBASE_PRIVATE_KEY: ${{ secrets.FIREBASE_PRIVATE_KEY }}
FIREBASE_PROJECT_ID: ${{ secrets.FIREBASE_PROJECT_ID }}
FIREBASE_CLIENT_EMAIL: ${{ secrets.FIREBASE_CLIENT_EMAIL }}
FIREBASE_PRIVATE_KEY_ID: ${{ secrets.FIREBASE_PRIVATE_KEY_ID }}
FIREBASE_CLIENT_ID: ${{ secrets.FIREBASE_CLIENT_ID }}
FIREBASE_AUTH_URI: ${{ secrets.FIREBASE_AUTH_URI }}
FIREBASE_TOKEN_URI: ${{ secrets.FIREBASE_TOKEN_URI }}
FIREBASE_AUTH_CERT_URL: ${{ secrets.FIREBASE_AUTH_CERT_URL }}
FIREBASE_CLIENT_CERT_URL: ${{ secrets.FIREBASE_CLIENT_CERT_URL }}
run: pnpm run export-results:ci -- --output=results/2025/data
- name: Create timestamped backup copy
run: |
TIMESTAMP=$(date +"%Y-%-m-%-d----%-HH-%-Mmin")
cp results/2025/data/results.json "scripts/${TIMESTAMP}.json"
echo "Created backup: scripts/${TIMESTAMP}.json"
- name: Generate questions.json for 2025
run: pnpm run generate-questions:ci -- --output=results/2025/data
- name: Configure Git
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
- name: Commit and push changes
run: |
git add results/2025/data/
if git diff --staged --quiet; then
echo "No changes to commit"
else
git commit -m "chore: update 2025 survey results - $(date +%Y-%m-%d)"
git push origin ${{ steps.get-branch.outputs.branch }}
echo "Changes committed and pushed successfully"
fi
- name: Upload results
uses: actions/upload-artifact@v4
with:
path: scripts/*.json