Files

87 lines
2.5 KiB
Plaintext

name: Update fiber data
on:
workflow_dispatch:
inputs:
states:
description: "Comma separated state codes like AZ,NM, or ALL. Blank uses the STATES variable."
required: false
default: ""
schedule:
- cron: "17 9 5 * *"
push:
branches: [main]
paths:
- "data/contracts/**"
permissions:
contents: write
concurrency:
group: update-data
cancel-in-progress: false
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 340
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Install
run: pip install -r scripts/requirements.txt
- name: Build
env:
FCC_USERNAME: ${{ secrets.FCC_USERNAME }}
FCC_API_TOKEN: ${{ secrets.FCC_API_TOKEN }}
STATES: ${{ github.event.inputs.states || vars.STATES || 'AZ' }}
EVENT: ${{ github.event_name }}
run: |
if [ "$EVENT" = "push" ]; then
python scripts/build_fcc.py --manifest-only
else
python scripts/build_fcc.py --states "$STATES"
fi
- name: Build BEAD project areas
if: github.event_name != 'push'
continue-on-error: true
env:
FCC_USERNAME: ${{ secrets.FCC_USERNAME }}
FCC_API_TOKEN: ${{ secrets.FCC_API_TOKEN }}
STATES: ${{ github.event.inputs.states || vars.STATES || 'AZ' }}
run: python scripts/build_bead.py --states "$STATES"
- name: Build Starlink availability
if: github.event_name != 'push'
continue-on-error: true
env:
FCC_USERNAME: ${{ secrets.FCC_USERNAME }}
FCC_API_TOKEN: ${{ secrets.FCC_API_TOKEN }}
STATES: ${{ github.event.inputs.states || vars.STATES || 'AZ' }}
run: python scripts/build_starlink.py --states "$STATES"
- name: Commit
run: |
git config user.name "github-actions[bot]"
git config user.email "41898341+github-actions[bot]@users.noreply.github.com"
git add -A data
if git diff --cached --quiet; then
echo "No changes"
exit 0
fi
git commit -m "Update fiber data"
for i in 1 2 3 4 5; do
if git pull --rebase -X theirs origin main && git push origin HEAD:main; then
exit 0
fi
git rebase --abort 2>/dev/null || true
sleep $((i * 10))
done
exit 1