2024-11-22 08:39:39 -08:00
name : Deploy Backend Main
2025-01-10 11:39:13 -05:00
on :
push :
branches : [ main]
paths :
- "data/**"
- ".github/workflows/deploy_backend_main.yml"
2024-12-05 08:54:40 -08:00
concurrency :
group : ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress : true
2024-11-22 08:39:39 -08:00
env :
CENSUS_API_KEY : ${{ secrets.CENSUS_API_KEY }}
2024-12-02 09:03:23 -08:00
J40_VERSION_LABEL_STRING : ${{ vars.SCORE_VERSION }}
2024-11-22 08:39:39 -08:00
jobs :
generate-score-tiles :
runs-on : ubuntu-latest
defaults :
run :
working-directory : data/data-pipeline
strategy :
matrix :
2024-11-25 08:17:15 -08:00
python-version : [ '3.10' ]
2024-11-25 12:56:50 -08:00
environment : Staging
2024-11-22 08:39:39 -08:00
steps :
- name : Checkout source
2024-11-25 08:17:15 -08:00
uses : actions/checkout@v4
2024-11-22 08:39:39 -08:00
- name : Print variables to help debug
2024-11-25 08:17:15 -08:00
uses : hmarr/debug-action@v3
2024-11-22 08:39:39 -08:00
- name : Set up Python ${{ matrix.python-version }}
2024-11-25 08:17:15 -08:00
uses : actions/setup-python@v5
2024-11-22 08:39:39 -08:00
with :
python-version : ${{ matrix.python-version }}
- name : Load cached Poetry installation
id : cached-poetry-dependencies
uses : actions/cache@v4
with :
path : ~/.cache/pypoetry/virtualenvs
key : env-${{ runner.os }}-${{ matrix.python-version }}-${{ hashFiles('**/poetry.lock') }}-${{ hashFiles('.github/workflows/deploy_backend_main.yml') }}
- name : Install poetry
uses : snok/install-poetry@v1
- name : Print Poetry settings
run : poetry show -v
- name : Install dependencies
run : poetry add s4cmd && poetry install
if : steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
- name : Configure AWS Credentials
2024-11-27 09:07:17 -08:00
uses : aws-actions/configure-aws-credentials@v4
2024-11-22 08:39:39 -08:00
with :
aws-access-key-id : ${{ secrets.DATA_DEV_AWS_ACCESS_KEY_ID }}
aws-secret-access-key : ${{ secrets.DATA_DEV_AWS_SECRET_ACCESS_KEY }}
aws-region : us-east-1
2025-01-10 11:39:13 -05:00
- name : Cleanup Data
run : |
poetry run python3 -m data_pipeline.application data-cleanup
- name : Cache Census Data
id : cache-census
uses : actions/cache@v4
with :
path : data/data-pipeline/data_pipeline/data/census
key : data-census
2024-11-25 12:56:50 -08:00
- name : Get Census Data
2025-01-10 11:39:13 -05:00
if : steps.cache-census.outputs.cache-hit != 'true'
2024-11-25 12:56:50 -08:00
run : |
2024-12-05 08:54:40 -08:00
poetry run python3 -m data_pipeline.application census-data-download
- name : Run ETL
run : |
2024-12-05 13:00:24 -08:00
poetry run python3 -m data_pipeline.application etl-run
2024-11-22 08:39:39 -08:00
- name : Generate Score
run : |
2024-12-05 08:54:40 -08:00
poetry run python3 -m data_pipeline.application score-run
- name : Score Compare
run : |
poetry run python3 -m data_pipeline.comparator compare-score
2024-11-22 08:39:39 -08:00
- name : Generate Score Post
run : |
2024-12-05 08:54:40 -08:00
poetry run python3 -m data_pipeline.application generate-score-post
2024-11-22 08:39:39 -08:00
- name : Confirm we generated the version of the score we think we did
if : ${{ env.J40_VERSION_LABEL_STRING == '2.0' || env.J40_VERSION_LABEL_STRING == 'beta' }}
run : |
grep -v "Identified as disadvantaged due to tribal overlap" data_pipeline/data/score/downloadable/* > /dev/null
- name : Generate Score Geo
run : |
2024-12-05 08:54:40 -08:00
poetry run python3 -m data_pipeline.application geo-score
2024-11-22 08:39:39 -08:00
- name : Set timezone for tippecanoe
2024-11-27 09:07:17 -08:00
uses : szenius/set-timezone@v2.0
2024-11-22 08:39:39 -08:00
with :
timezoneLinux : "America/Los_Angeles"
- name : Get tippecanoe
run : |
sudo apt-get install -y software-properties-common libsqlite3-dev zlib1g-dev
sudo apt-add-repository -y ppa:git-core/ppa
sudo mkdir -p /tmp/tippecanoe-src
sudo git clone https://github.com/mapbox/tippecanoe.git /tmp/tippecanoe-src
- name : Make tippecanoe
working-directory : /tmp/tippecanoe-src
run : |
sudo /usr/bin/bash -c make
mkdir -p /usr/local/bin
cp tippecanoe /usr/local/bin/tippecanoe
tippecanoe -v
- name : Generate Tiles
run : |
2024-12-05 08:54:40 -08:00
poetry run python3 -m data_pipeline.application generate-map-tiles
2024-12-10 08:01:55 -08:00
poetry run python3 -m data_pipeline.application generate-map-tiles --generate-tribal-layer
- name : Deploy Score and Map to Geoplatform AWS
if : ${{ env.J40_VERSION_LABEL_STRING == '2.0' }}
2024-11-22 08:39:39 -08:00
run : |
2024-12-11 15:51:34 -08:00
poetry run s4cmd put ./data_pipeline/data/score/* s3://${{secrets.S3_DATA_BUCKET}}/data-versions/${{env.J40_VERSION_LABEL_STRING}}/data/score/ --recursive --force --API-ACL=public-read --num-threads=250
poetry run s4cmd put ./data_pipeline/files/* s3://${{secrets.S3_DATA_BUCKET}}/data-versions/${{env.J40_VERSION_LABEL_STRING}}/data/score/downloadable/ --recursive --force --API-ACL=public-read
2024-12-10 16:08:01 -05:00
poetry run s4cmd put ./data_pipeline/data/tribal/* s3://${{secrets.S3_DATA_BUCKET}}/data-versions/${{env.J40_VERSION_LABEL_STRING}}/data/tribal/ --recursive --force --API-ACL=public-read --num-threads=250
2024-12-10 08:01:55 -08:00
- name : 2.0 Post-deploy Score Check
run : |
curl "${{secrets.DATA_URL}}/data-versions/2.0/data/score/downloadable/2.0-data-documentation.zip" -s -f -I -o /dev/null && \
curl "${{secrets.DATA_URL}}/data-versions/2.0/data/score/downloadable/2.0-shapefile-codebook.zip" -s -f -I -o /dev/null
curl "${{secrets.DATA_URL}}/data-versions/2.0/data/score/downloadable/2.0-communities.xlsx" -s -f -I -o /dev/null && \
curl "${{secrets.DATA_URL}}/data-versions/2.0/data/score/downloadable/2.0-communities.csv" -s -f -I -o /dev/null && \
curl "${{secrets.DATA_URL}}/data-versions/2.0/data/score/downloadable/cejst-technical-support-document.pdf" -s -f -I -o /dev/null && \
curl "${{secrets.DATA_URL}}/data-versions/2.0/data/score/downloadable/draft-communities-list.pdf" -s -f -I -o /dev/null
2024-12-02 09:03:23 -08:00
- name : Invalidate cache on AWS CDN
uses : chetan/invalidate-cloudfront-action@master
env :
DISTRIBUTION : ${{secrets.DATA_CDN_ID}}
PATHS : "/*"
AWS_REGION : "us-east-1"
2024-12-10 08:01:55 -08:00
AWS_ACCESS_KEY_ID : ${{ secrets.DATA_DEV_AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY : ${{ secrets.DATA_DEV_AWS_SECRET_ACCESS_KEY }}