diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f7f1b8bbd..6ffc77649 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,7 +20,30 @@ env: POETRY_VERSION: "1.7.1" jobs: + changes: + runs-on: ubuntu-latest + outputs: + python: ${{ steps.filter.outputs.python }} + sdk-js: ${{ steps.filter.outputs.sdk-js }} + steps: + - uses: actions/checkout@v4 + - uses: dorny/paths-filter@v3 + id: filter + with: + filters: | + python: + - 'libs/langgraph/**' + - 'libs/sdk-py/**' + - 'libs/cli/**' + - 'libs/checkpoint/**' + - 'libs/checkpoint-sqlite/**' + - 'libs/checkpoint-postgres/**' + - 'libs/scheduler-kafka/**' + sdk-js: + - 'libs/sdk-js/**' + lint: + needs: changes name: cd ${{ matrix.working-directory }} strategy: matrix: @@ -34,12 +57,14 @@ jobs: "libs/checkpoint-postgres", "libs/scheduler-kafka", ] + if: needs.changes.outputs.python == 'true' uses: ./.github/workflows/_lint.yml with: working-directory: ${{ matrix.working-directory }} secrets: inherit test: + needs: changes name: cd ${{ matrix.working-directory }} strategy: matrix: @@ -50,6 +75,7 @@ jobs: "libs/checkpoint-sqlite", "libs/checkpoint-postgres", ] + if: needs.changes.outputs.python == 'true' uses: ./.github/workflows/_test.yml with: working-directory: ${{ matrix.working-directory }} @@ -57,17 +83,23 @@ jobs: # NOTE: we're testing langgraph separately because it requires a different matrix test-langgraph: + needs: changes + if: needs.changes.outputs.python == 'true' name: "cd libs/langgraph" uses: ./.github/workflows/_test_langgraph.yml secrets: inherit # NOTE: we're testing scheduler-kafka separately because it requires a different matrix test-scheduler-kafka: + needs: changes + if: needs.changes.outputs.python == 'true' name: "cd libs/scheduler-kafka" uses: ./.github/workflows/_test_scheduler_kafka.yml secrets: inherit check-sdk-methods: + needs: changes + if: needs.changes.outputs.python == 'true' name: "Check SDK methods matching" runs-on: ubuntu-latest steps: @@ -80,11 +112,15 @@ jobs: run: python .github/scripts/check_sdk_methods.py integration-test: + needs: changes + if: needs.changes.outputs.python == 'true' name: CLI integration test uses: ./.github/workflows/_integration_test.yml secrets: inherit lint-js: + needs: changes + if: needs.changes.outputs.sdk-js == 'true' runs-on: ubuntu-latest strategy: matrix: @@ -109,6 +145,8 @@ jobs: run: yarn build test-js: + needs: changes + if: needs.changes.outputs.sdk-js == 'true' runs-on: ubuntu-latest strategy: matrix: