Test the External API and Provider mechanisms #11037
Workflow file for this run
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: Test External API and Providers | |
| run-name: Test the External API and Provider mechanisms | |
| on: | |
| push: | |
| branches: [ main ] | |
| pull_request: | |
| branches: [ main ] | |
| paths: | |
| - 'src/ogx/**' | |
| - '!src/ogx_ui/**' | |
| - 'tests/integration/**' | |
| - 'uv.lock' | |
| - 'pyproject.toml' | |
| - 'requirements.txt' | |
| - 'tests/external/*' | |
| - '.github/workflows/test-external.yml' # This workflow | |
| jobs: | |
| test-external: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| image-type: [venv] | |
| # We don't do container yet, it's tricky to install a package from the host into the | |
| # container and point 'uv pip install' to the correct path... | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| - name: Install dependencies | |
| uses: ./.github/actions/setup-runner | |
| - name: Create API configuration | |
| run: | | |
| mkdir -p /home/runner/.ogx/apis.d | |
| cp tests/external/weather.yaml /home/runner/.ogx/apis.d/weather.yaml | |
| - name: Create provider configuration | |
| run: | | |
| mkdir -p /home/runner/.ogx/providers.d/remote/weather | |
| cp tests/external/kaze.yaml /home/runner/.ogx/providers.d/remote/weather/kaze.yaml | |
| - name: Print distro dependencies | |
| run: | | |
| uv run --no-sync ogx stack list-deps tests/external/config.yaml | |
| - name: Build distro from config file | |
| run: | | |
| uv venv ci-test | |
| source ci-test/bin/activate | |
| uv pip install -e . | |
| OGX_LOGGING=all=CRITICAL ogx stack list-deps tests/external/config.yaml | xargs -L1 uv pip install | |
| - name: Start OGX server in background | |
| if: matrix.image-type == 'venv' | |
| env: | |
| INFERENCE_MODEL: "meta-llama/Llama-3.2-3B-Instruct" | |
| OGX_LOG_FILE: "server.log" | |
| run: | | |
| # Use the virtual environment created by the build step (name comes from build config) | |
| source ci-test/bin/activate | |
| uv pip list | |
| nohup ogx stack run tests/external/config.yaml > server.log 2>&1 & | |
| - name: Wait for OGX server to be ready | |
| run: | | |
| echo "Waiting for OGX server..." | |
| for _ in {1..30}; do | |
| if curl -sSf http://localhost:8321/v1/health | grep -q "OK"; then | |
| echo "OGX server is up!" | |
| exit 0 | |
| fi | |
| sleep 1 | |
| done | |
| echo "OGX server failed to start" | |
| cat server.log | |
| exit 1 | |
| - name: Test external API | |
| run: | | |
| curl -sSf http://localhost:8321/v1/weather/locations | |
| - name: Upload all logs to artifacts | |
| if: ${{ always() }} | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: logs-${{ github.run_id }}-${{ github.run_attempt }}-external-test | |
| path: | | |
| *.log | |
| retention-days: 1 |