diff --git a/.github/workflows/_compile_integration_test.yml b/.github/workflows/_compile_integration_test.yml new file mode 100644 index 00000000000..d52828084f5 --- /dev/null +++ b/.github/workflows/_compile_integration_test.yml @@ -0,0 +1,57 @@ +name: compile-integration-test + +on: + workflow_call: + inputs: + working-directory: + required: true + type: string + description: "From which folder this pipeline executes" + +env: + POETRY_VERSION: "1.6.1" + +jobs: + build: + defaults: + run: + working-directory: ${{ inputs.working-directory }} + runs-on: ubuntu-latest + strategy: + matrix: + python-version: + - "3.8" + - "3.9" + - "3.10" + - "3.11" + name: Python ${{ matrix.python-version }} + steps: + - uses: actions/checkout@v4 + + - name: Set up Python ${{ matrix.python-version }} + Poetry ${{ env.POETRY_VERSION }} + uses: "./.github/actions/poetry_setup" + with: + python-version: ${{ matrix.python-version }} + poetry-version: ${{ env.POETRY_VERSION }} + working-directory: ${{ inputs.working-directory }} + cache-key: compile-integration + + - name: Install integration dependencies + shell: bash + run: poetry install --with=test_integration + + - name: Check integration tests compile + shell: bash + run: poetry run pytest -m compile tests/integration_tests + + - name: Ensure the tests did not create any additional files + shell: bash + run: | + set -eu + + STATUS="$(git status)" + echo "$STATUS" + + # grep will exit non-zero if the target message isn't found, + # and `set -e` above will cause the step to fail. + echo "$STATUS" | grep 'nothing to commit, working tree clean' diff --git a/.github/workflows/langchain_ci.yml b/.github/workflows/langchain_ci.yml index cd472f2b194..dec74a9f33b 100644 --- a/.github/workflows/langchain_ci.yml +++ b/.github/workflows/langchain_ci.yml @@ -44,6 +44,13 @@ jobs: working-directory: libs/langchain secrets: inherit + compile-integration-tests: + uses: + ./.github/workflows/_compile_integration_test.yml + with: + working-directory: libs/langchain + secrets: inherit + pydantic-compatibility: uses: ./.github/workflows/_pydantic_compatibility.yml diff --git a/.github/workflows/langchain_experimental_ci.yml b/.github/workflows/langchain_experimental_ci.yml index 49029872fef..94d21c3feec 100644 --- a/.github/workflows/langchain_experimental_ci.yml +++ b/.github/workflows/langchain_experimental_ci.yml @@ -44,6 +44,13 @@ jobs: working-directory: libs/experimental secrets: inherit + compile-integration-tests: + uses: + ./.github/workflows/_compile_integration_test.yml + with: + working-directory: libs/experimental + secrets: inherit + # It's possible that langchain-experimental works fine with the latest *published* langchain, # but is broken with the langchain on `master`. #