Pin ports in tests #536
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: run-tests | |
| on: | |
| push: | |
| branches: | |
| - main | |
| - feature/* | |
| tags: | |
| - v* | |
| pull_request: | |
| branches: | |
| - main | |
| - release-* | |
| - feature/* | |
| workflow_dispatch: | |
| inputs: | |
| daprdapr_commit: | |
| description: 'Dapr/Dapr commit to build custom daprd from' | |
| required: false | |
| default: '' | |
| daprcli_commit: | |
| description: 'Dapr/CLI commit to build custom dapr CLI from' | |
| required: false | |
| default: '' | |
| repository_dispatch: | |
| types: [validate-examples] | |
| merge_group: | |
| jobs: | |
| validate: | |
| runs-on: ubuntu-latest | |
| env: | |
| CHECKOUT_REPO: ${{ github.repository }} | |
| CHECKOUT_REF: ${{ github.ref }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python_ver: ["3.10", "3.11", "3.12", "3.13", "3.14"] | |
| steps: | |
| - name: Parse repository_dispatch payload | |
| if: github.event_name == 'repository_dispatch' | |
| run: | | |
| if [ ${{ github.event.client_payload.command }} = "ok-to-test" ]; then | |
| echo "CHECKOUT_REPO=${{ github.event.client_payload.pull_head_repo }}" >> $GITHUB_ENV | |
| echo "CHECKOUT_REF=${{ github.event.client_payload.pull_head_ref }}" >> $GITHUB_ENV | |
| fi | |
| - name: Check out code onto GOPATH | |
| uses: actions/checkout@v7 | |
| with: | |
| repository: ${{ env.CHECKOUT_REPO }} | |
| ref: ${{ env.CHECKOUT_REF }} | |
| - name: Determine latest Dapr Runtime version | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| MIN_RUNTIME_VERSION="1.18.0" | |
| RUNTIME_VERSION=$(curl -fsS -H "Authorization: Bearer $GITHUB_TOKEN" \ | |
| "https://api.github.com/repos/dapr/dapr/releases?per_page=10" | \ | |
| jq -r 'map(select(.prerelease == false)) | sort_by(.created_at) | reverse | .[0].tag_name | ltrimstr("v")') | |
| if [ -z "$RUNTIME_VERSION" ] || [ "$RUNTIME_VERSION" = "null" ]; then | |
| echo "Failed to resolve Dapr Runtime version" && exit 1 | |
| fi | |
| if [ "$(printf '%s\n' "$MIN_RUNTIME_VERSION" "$RUNTIME_VERSION" | sort -V | head -n1)" != "$MIN_RUNTIME_VERSION" ]; then | |
| echo "Resolved runtime version $RUNTIME_VERSION is below minimum $MIN_RUNTIME_VERSION, using minimum instead" | |
| RUNTIME_VERSION="$MIN_RUNTIME_VERSION" | |
| fi | |
| echo "DAPR_RUNTIME_VER=$RUNTIME_VERSION" >> $GITHUB_ENV | |
| echo "Found $RUNTIME_VERSION" | |
| - name: Determine latest Dapr CLI version | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| CLI_VERSION=$(curl -fsS -H "Authorization: Bearer $GITHUB_TOKEN" \ | |
| "https://api.github.com/repos/dapr/cli/releases?per_page=10" | \ | |
| jq -r 'map(select(.prerelease == false)) | sort_by(.created_at) | reverse | .[0].tag_name | ltrimstr("v")') | |
| if [ -z "$CLI_VERSION" ] || [ "$CLI_VERSION" = "null" ]; then | |
| echo "Failed to resolve Dapr CLI version" && exit 1 | |
| fi | |
| echo "DAPR_CLI_VER=$CLI_VERSION" >> $GITHUB_ENV | |
| echo "Found $CLI_VERSION" | |
| - name: Set up Python ${{ matrix.python_ver }} | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ matrix.python_ver }} | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v8.3.0 | |
| - name: Install dependencies | |
| run: uv sync --frozen --all-packages --group tests | |
| - name: Set up Dapr CLI | |
| uses: dapr/.github/.github/actions/setup-dapr-cli@main | |
| with: | |
| commit: ${{ github.event.inputs.daprcli_commit }} | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Set up Dapr runtime | |
| uses: dapr/.github/.github/actions/setup-dapr-runtime@main | |
| with: | |
| commit: ${{ github.event.inputs.daprdapr_commit }} | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| # The official install.sh spends ~1.5 minutes creating a system user and | |
| # a systemd service that CI does not need; extracting the tarball and | |
| # running `ollama serve` directly takes seconds. | |
| # The version is pinned so an upstream release cannot silently break CI. | |
| - name: Set up Llama | |
| run: | | |
| curl -fsSL https://github.com/ollama/ollama/releases/download/v0.32.0/ollama-linux-amd64.tar.zst | sudo tar --zstd -xf - -C /usr/local | |
| # TODO: temporary workaround — the Sapphire Rapids CPU backend | |
| # segfaults during first inference (ollama/ollama#17006, | |
| # ollama/ollama#17205); removing it makes ollama fall back to a | |
| # slower generic backend that works on every runner. Drop this line | |
| # once the pin moves to a release that fixes those issues. | |
| sudo rm -f /usr/local/lib/ollama/libggml-cpu-sapphirerapids.so | |
| nohup ollama serve > "$RUNNER_TEMP/ollama-serve.log" 2>&1 & | |
| timeout 60 bash -c 'until curl -fsS http://127.0.0.1:11434/api/tags > /dev/null; do sleep 1; done' | |
| ollama pull llama3.2:latest | |
| - name: Run integration tests | |
| run: | | |
| uv run pytest tests/integration/ | |
| - name: Validate examples | |
| run: | | |
| uv run pytest tests/examples/ |