diff --git a/.github/workflows/enforce-version-pinning.yml b/.github/workflows/enforce-version-pinning.yml new file mode 100644 index 00000000..e0d6d0a7 --- /dev/null +++ b/.github/workflows/enforce-version-pinning.yml @@ -0,0 +1,35 @@ +--- + +name: Enforce Version Pinning + +on: + pull_request: + branches: [main] + +jobs: + check-version-pinning: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Check for pinned versions in requirements.txt + run: | + if grep -q -v '==' requirements.txt; then + echo "Unpinned dependencies found in requirements.txt" + echo "❌ Unpinned dependencies found in requirements.txt" + exit 1 + else + echo "✅ All dependencies are correctly pinned." + fi + + - name: Check for pinned versions in package.json + run: | + UNPINNED=$(grep -E '"[^"]+": "\^|~' package.json || true) + if [ -n "$UNPINNED" ]; then + echo "❌ Unpinned dependencies found in package.json:" + echo "$UNPINNED" + exit 1 + else + echo "✅ All dependencies are correctly pinned." + fi