Skip to content

DM-46158: Add schema comparison workflow #14

DM-46158: Add schema comparison workflow

DM-46158: Add schema comparison workflow #14

Workflow file for this run

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