diff --git a/.github/workflows/_integration_test.yml b/.github/workflows/_integration_test.yml index 610f25521..e61552245 100644 --- a/.github/workflows/_integration_test.yml +++ b/.github/workflows/_integration_test.yml @@ -17,6 +17,9 @@ jobs: python-version: - "3.10" - "3.14" + build_mode: + - layered + - flat example: - name: A workdir: libs/cli/examples @@ -30,7 +33,7 @@ jobs: - name: D workdir: libs/cli/examples/graphs_reqs_b tag: langgraph-test-d - name: "CLI integration test" + name: "CLI integration test (${{ matrix.python-version }}, ${{ matrix.example.name }}, ${{ matrix.build_mode }})" env: HAS_LANGSMITH_API_KEY: ${{ secrets.LANGSMITH_API_KEY != '' }} defaults: @@ -58,12 +61,7 @@ jobs: if: (steps.changed-files.outputs.all || github.event_name == 'workflow_dispatch') working-directory: ${{ matrix.example.workdir }} run: | - langgraph build -t ${{ matrix.example.tag }} - - name: Build flattened service - if: ${{ (steps.changed-files.outputs.all || github.event_name == 'workflow_dispatch') && matrix.example.name == 'A' }} - working-directory: ${{ matrix.example.workdir }} - run: | - langgraph build --flat -t ${{ matrix.example.tag }}-flat + langgraph build ${{ matrix.build_mode == 'flat' && '--flat' || '' }} -t ${{ matrix.example.tag }}${{ matrix.build_mode == 'flat' && '-flat' || '' }} - name: Test service ${{ matrix.example.name }} if: ${{ (steps.changed-files.outputs.all || github.event_name == 'workflow_dispatch') &&env.HAS_LANGSMITH_API_KEY == 'true' }} working-directory: ${{ matrix.example.workdir }} @@ -76,52 +74,49 @@ jobs: if [ -f ../.env ]; then echo "LANGSMITH_API_KEY=${{ secrets.LANGSMITH_API_KEY }}" >> ../.env; fi # Run the integration test using the built tag REPO_ROOT=$(git rev-parse --show-toplevel) - timeout 90 python "$REPO_ROOT/.github/scripts/run_langgraph_cli_test.py" -t ${{ matrix.example.tag }} - if [ "${{ matrix.example.name }}" = "A" ]; then - timeout 90 python "$REPO_ROOT/.github/scripts/run_langgraph_cli_test.py" -t ${{ matrix.example.tag }}-flat - fi + timeout 60 python "$REPO_ROOT/.github/scripts/run_langgraph_cli_test.py" -t ${{ matrix.example.tag }}${{ matrix.build_mode == 'flat' && '-flat' || '' }} - name: Build JS service - if: ${{ (steps.changed-files.outputs.all || github.event_name == 'workflow_dispatch') &&matrix.example.name == 'A' }} + if: ${{ (steps.changed-files.outputs.all || github.event_name == 'workflow_dispatch') && matrix.example.name == 'A' && matrix.build_mode == 'layered' }} working-directory: libs/cli/js-examples run: | langgraph build -t langgraph-test-e - name: Build JS monorepo service - if: ${{ (steps.changed-files.outputs.all || github.event_name == 'workflow_dispatch') &&matrix.example.name == 'A' }} + if: ${{ (steps.changed-files.outputs.all || github.event_name == 'workflow_dispatch') && matrix.example.name == 'A' && matrix.build_mode == 'layered' }} working-directory: libs/cli/js-monorepo-example run: | langgraph build -t langgraph-test-f -c apps/agent/langgraph.json --build-command "yarn run turbo build" --install-command "yarn install" - name: Build Python monorepo service - if: ${{ (steps.changed-files.outputs.all || github.event_name == 'workflow_dispatch') &&matrix.example.name == 'A' }} + if: ${{ (steps.changed-files.outputs.all || github.event_name == 'workflow_dispatch') && matrix.example.name == 'A' && matrix.build_mode == 'layered' }} working-directory: libs/cli/python-monorepo-example run: | langgraph build -t langgraph-test-g -c apps/agent/langgraph.json - name: Test Python monorepo service - if: ${{ (steps.changed-files.outputs.all || github.event_name == 'workflow_dispatch') &&matrix.example.name == 'A' && env.HAS_LANGSMITH_API_KEY == 'true' }} + if: ${{ (steps.changed-files.outputs.all || github.event_name == 'workflow_dispatch') && matrix.example.name == 'A' && matrix.build_mode == 'layered' && env.HAS_LANGSMITH_API_KEY == 'true' }} working-directory: libs/cli/python-monorepo-example env: LANGSMITH_API_KEY: ${{ secrets.LANGSMITH_API_KEY }} run: | cp apps/agent/.env.example apps/agent/.env echo "LANGSMITH_API_KEY=${{ secrets.LANGSMITH_API_KEY }}" >> apps/agent/.env - timeout 90 python ../../../.github/scripts/run_langgraph_cli_test.py -t langgraph-test-g -c apps/agent/langgraph.json + timeout 60 python ../../../.github/scripts/run_langgraph_cli_test.py -t langgraph-test-g -c apps/agent/langgraph.json - name: Build prerelease reqs service - if: ${{ (steps.changed-files.outputs.all || github.event_name == 'workflow_dispatch') &&matrix.example.name == 'A' }} + if: ${{ (steps.changed-files.outputs.all || github.event_name == 'workflow_dispatch') && matrix.example.name == 'A' && matrix.build_mode == 'layered' }} working-directory: libs/cli/examples/graph_prerelease_reqs run: | langgraph build -t langgraph-test-h - name: Test prerelease reqs service - if: ${{ (steps.changed-files.outputs.all || github.event_name == 'workflow_dispatch') &&matrix.example.name == 'A' && env.HAS_LANGSMITH_API_KEY == 'true' }} + if: ${{ (steps.changed-files.outputs.all || github.event_name == 'workflow_dispatch') && matrix.example.name == 'A' && matrix.build_mode == 'layered' && env.HAS_LANGSMITH_API_KEY == 'true' }} working-directory: libs/cli/examples/graph_prerelease_reqs env: LANGSMITH_API_KEY: ${{ secrets.LANGSMITH_API_KEY }} run: | cp ../.env.example .env echo "LANGSMITH_API_KEY=${{ secrets.LANGSMITH_API_KEY }}" >> .env - timeout 90 python ../../../../.github/scripts/run_langgraph_cli_test.py -t langgraph-test-h + timeout 60 python ../../../../.github/scripts/run_langgraph_cli_test.py -t langgraph-test-h echo "Finished starting up langgraph-test-h" LANGGRAPH_VERSION=$(docker run --rm --entrypoint "" langgraph-test-h python -c "import sys; from importlib.metadata import version; v = version('langgraph'); print(v);") if [ "$LANGGRAPH_VERSION" != "1.1.5" ]; then @@ -140,37 +135,37 @@ jobs: fi - name: Build and test prerelease reqs fail service - if: ${{ (steps.changed-files.outputs.all || github.event_name == 'workflow_dispatch') &&matrix.example.name == 'A' }} + if: ${{ (steps.changed-files.outputs.all || github.event_name == 'workflow_dispatch') && matrix.example.name == 'A' && matrix.build_mode == 'layered' }} working-directory: libs/cli/examples/graph_prerelease_reqs_fail run: | langgraph build -t langgraph-test-i || [ $? -eq 1 ] - name: Build uv simple service - if: ${{ (steps.changed-files.outputs.all || github.event_name == 'workflow_dispatch') &&matrix.example.name == 'A' }} + if: ${{ (steps.changed-files.outputs.all || github.event_name == 'workflow_dispatch') && matrix.example.name == 'A' && matrix.build_mode == 'layered' }} working-directory: libs/cli/uv-examples/simple run: | langgraph build -t langgraph-test-uv-simple - name: Test uv simple service - if: ${{ (steps.changed-files.outputs.all || github.event_name == 'workflow_dispatch') &&matrix.example.name == 'A' && env.HAS_LANGSMITH_API_KEY == 'true' }} + if: ${{ (steps.changed-files.outputs.all || github.event_name == 'workflow_dispatch') && matrix.example.name == 'A' && matrix.build_mode == 'layered' && env.HAS_LANGSMITH_API_KEY == 'true' }} working-directory: libs/cli/uv-examples/simple env: LANGSMITH_API_KEY: ${{ secrets.LANGSMITH_API_KEY }} run: | cp .env.example .env echo "LANGSMITH_API_KEY=${{ secrets.LANGSMITH_API_KEY }}" >> .env - timeout 90 python ../../../../.github/scripts/run_langgraph_cli_test.py -t langgraph-test-uv-simple + timeout 60 python ../../../../.github/scripts/run_langgraph_cli_test.py -t langgraph-test-uv-simple - name: Build uv monorepo service - if: ${{ (steps.changed-files.outputs.all || github.event_name == 'workflow_dispatch') &&matrix.example.name == 'A' }} + if: ${{ (steps.changed-files.outputs.all || github.event_name == 'workflow_dispatch') && matrix.example.name == 'A' && matrix.build_mode == 'layered' }} working-directory: libs/cli/uv-examples/monorepo/apps/agent run: | langgraph build -t langgraph-test-uv-monorepo - name: Test uv monorepo service - if: ${{ (steps.changed-files.outputs.all || github.event_name == 'workflow_dispatch') &&matrix.example.name == 'A' && env.HAS_LANGSMITH_API_KEY == 'true' }} + if: ${{ (steps.changed-files.outputs.all || github.event_name == 'workflow_dispatch') && matrix.example.name == 'A' && matrix.build_mode == 'layered' && env.HAS_LANGSMITH_API_KEY == 'true' }} working-directory: libs/cli/uv-examples/monorepo/apps/agent env: LANGSMITH_API_KEY: ${{ secrets.LANGSMITH_API_KEY }} run: | cp .env.example .env echo "LANGSMITH_API_KEY=${{ secrets.LANGSMITH_API_KEY }}" >> .env - timeout 90 python ../../../../../../.github/scripts/run_langgraph_cli_test.py -t langgraph-test-uv-monorepo + timeout 60 python ../../../../../../.github/scripts/run_langgraph_cli_test.py -t langgraph-test-uv-monorepo