DM-46158: Add schema comparison workflow #14
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Compare Schemas for Changes | |
on: | |
push: | |
branches: | |
- main | |
tags: | |
- "*" | |
pull_request: | |
jobs: | |
compare: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out repo | |
uses: actions/checkout@v4 | |
with: | |
path: current-ref | |
- name: Fetch origin main | |
working-directory: current-ref | |
run: git fetch origin main | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
cache: "pip" | |
- name: Install dependencies | |
working-directory: current-ref | |
run: | | |
python -m pip install --upgrade pip uv | |
uv pip install --system -r requirements.txt | |
- name: Set relative path to schema directory | |
run: | | |
echo "SCHEMA_DIR=python/lsst/sdm_schemas/schemas" >> $GITHUB_ENV | |
- name: Get list of changed YAML files | |
working-directory: current-ref | |
run: | | |
CHANGED_FILES=$(git diff --name-only origin/main..HEAD -- ${{ env.SCHEMA_DIR }} | sed "s|^${{ env.SCHEMA_DIR }}/||") | |
echo "Changed YAML files: $CHANGED_FILES" | |
echo "CHANGED_FILES=$CHANGED_FILES" >> $GITHUB_ENV | |
- name: Check out main branch | |
uses: actions/checkout@v4 | |
with: | |
ref: main | |
path: main-branch | |
- name: Run schema comparison with deepdiff | |
run: | | |
for file in ${{ env.CHANGED_FILES }}; do | |
echo "Comparing $file:" | |
MAIN_FILE=main-branch/${{ env.SCHEMA_DIR }}/$file | |
CURRENT_FILE=current-ref/${{ env.SCHEMA_DIR }}/$file | |
felis --log-level ERROR diff -c deepdiff $MAIN_FILE $CURRENT_FILE | |
done | |
- name: Run schema comparison with alembic | |
run: | | |
for file in ${{ env.CHANGED_FILES }}; do | |
echo "Comparing $file:" | |
MAIN_FILE=main-branch/${{ env.SCHEMA_DIR }}/$file | |
CURRENT_FILE=current-ref/${{ env.SCHEMA_DIR }}/$file | |
felis --log-level ERROR diff -c alembic $MAIN_FILE $CURRENT_FILE | |
done |