refactor: main into app modules and route registrars #1675
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Integration Tests | |
| on: | |
| pull_request: | |
| paths: | |
| - 'src/**.py' | |
| - 'tests/**.py' | |
| - 'pyproject.toml' | |
| - 'uv.lock' | |
| - 'sdks/**' | |
| - 'flows/**' | |
| - '.github/workflows/test-integration.yml' | |
| workflow_dispatch: | |
| inputs: | |
| use_local_images: | |
| description: 'Build images locally instead of pulling from DockerHub' | |
| required: false | |
| type: boolean | |
| default: true | |
| jobs: | |
| tests: | |
| runs-on: | |
| labels: ["self-hosted", "linux", "ARM64", "langflow-ai-arm64-40gb-ephemeral-sudo"] | |
| env: | |
| # Prefer repository/environment variable first, then secret, then a sane fallback | |
| OPENSEARCH_PASSWORD: ${{ vars.OPENSEARCH_PASSWORD || secrets.OPENSEARCH_PASSWORD || 'OpenRag#2025!' }} | |
| OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} | |
| LANGFLOW_AUTO_LOGIN: "True" | |
| LANGFLOW_NEW_USER_IS_ACTIVE: "True" | |
| LANGFLOW_ENABLE_SUPERUSER_CLI: "True" | |
| LANGFLOW_CHAT_FLOW_ID: ${{ vars.LANGFLOW_CHAT_FLOW_ID || '1098eea1-6649-4e1d-aed1-b77249fb8dd0' }} | |
| LANGFLOW_INGEST_FLOW_ID: ${{ vars.LANGFLOW_INGEST_FLOW_ID || '5488df7c-b93f-4f87-a446-b67028bc0813' }} | |
| NUDGES_FLOW_ID: ${{ vars.NUDGES_FLOW_ID || 'ebc01d31-1976-46ce-a385-b0240327226c' }} | |
| steps: | |
| - run: df -h | |
| - name: Cleanup Docker cache | |
| run: | | |
| docker system prune -af || true | |
| docker builder prune -af || true | |
| docker compose -f docker-compose.yml down -v --remove-orphans || true | |
| - name: Cleanup root-owned files (OpenSearch data, config, Langflow data, keys, data, flows, documents) | |
| run: | | |
| for i in 1 2 3; do | |
| docker run --rm -v $(pwd):/work alpine sh -c "rm -rf /work/opensearch-data /work/config /work/langflow-data /work/keys /work/data /work/flows /work/openrag-documents" && break | |
| echo "Attempt $i failed, retrying in 5s..." | |
| sleep 5 | |
| done || true | |
| - run: df -h | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Verify workspace | |
| run: | | |
| echo "Current directory: $(pwd)" | |
| echo "Workspace: ${GITHUB_WORKSPACE}" | |
| ls -la | |
| - name: Set up UV | |
| uses: astral-sh/setup-uv@v3 | |
| with: | |
| version: latest | |
| - name: Set up Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| - name: Python version | |
| run: uv python install 3.13 | |
| - name: Install dependencies | |
| run: uv sync | |
| - name: Run integration tests | |
| env: | |
| OPENSEARCH_HOST: localhost | |
| OPENSEARCH_PORT: 9200 | |
| OPENSEARCH_USERNAME: admin | |
| OPENSEARCH_PASSWORD: ${{ env.OPENSEARCH_PASSWORD }} | |
| LOG_LEVEL: DEBUG | |
| # Force no-auth mode so tests bypass OAuth | |
| GOOGLE_OAUTH_CLIENT_ID: "" | |
| GOOGLE_OAUTH_CLIENT_SECRET: "" | |
| # Disable startup ingest noise unless a test enables it | |
| DISABLE_STARTUP_INGEST: "true" | |
| run: | | |
| # For PRs, always build locally since we're testing new code | |
| # For workflow_dispatch, use the input (defaults to true) | |
| USE_LOCAL="${{ inputs.use_local_images }}" | |
| if [ "${{ github.event_name }}" == "pull_request" ] || [ "$USE_LOCAL" != "false" ]; then | |
| echo "Running tests with locally built images..." | |
| make test-ci-local | |
| else | |
| echo "Running tests with DockerHub images..." | |
| make test-ci | |
| fi | |
| echo "Keys directory after tests:" | |
| ls -la keys/ || echo "No keys directory" |