Skip to content

Commit 7df1045

Browse files
committed
Merge remote-tracking branch 'upstream/main' into dependabot/uv/python-engineio-4.13.2
Signed-off-by: Sébastien Han <seb@redhat.com>
2 parents b9bdd73 + f3e4304 commit 7df1045

116 files changed

Lines changed: 6051 additions & 5793 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/CODEOWNERS

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,3 @@
77
# OpenAPI SDK generation and publishing
88
/client-sdks/openapi/ @ashwinb @leseb @bbrowning
99
/.github/workflows/openapi-generator-validation.yml @ashwinb @leseb @bbrowning
10-
/.github/workflows/publish-openapi-sdk.yml @ashwinb @leseb @bbrowning

.github/actions/setup-vllm-gpu/action.yml

Lines changed: 2 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,9 @@ runs:
9696
9797
echo "=== Installing vLLM with CUDA support ==="
9898
if [ "$VLLM_VERSION" = "latest" ]; then
99-
uv pip install --no-config vllm --torch-backend=auto
99+
uv pip install --no-config vllm "prometheus-fastapi-instrumentator==8.0.2" --torch-backend=auto
100100
else
101-
uv pip install --no-config "vllm==$VLLM_VERSION" --torch-backend=auto
101+
uv pip install --no-config "vllm==$VLLM_VERSION" "prometheus-fastapi-instrumentator==8.0.2" --torch-backend=auto
102102
fi
103103
104104
echo "=== Verifying installation ==="
@@ -107,31 +107,6 @@ runs:
107107
python -c "import torch; print(f'CUDA device count: {torch.cuda.device_count()}')"
108108
vllm --version
109109
110-
- name: Patch vLLM metrics route discovery
111-
shell: bash
112-
run: |
113-
source /tmp/vllm-env/bin/activate
114-
115-
python - <<'PY'
116-
from __future__ import annotations
117-
118-
from pathlib import Path
119-
import prometheus_fastapi_instrumentator.routing as routing
120-
121-
routing_path = Path(routing.__file__)
122-
source = routing_path.read_text()
123-
old = "route_name = route.path"
124-
new = (
125-
"route_name = getattr(route, 'path', None)\n"
126-
" if route_name is None:\n"
127-
" continue"
128-
)
129-
if old not in source:
130-
raise SystemExit(f"Expected route.path assignment not found in {routing_path}")
131-
routing_path.write_text(source.replace(old, new, 1))
132-
print(f"Patched {routing_path}")
133-
PY
134-
135110
- name: Resolve model identifier
136111
shell: bash
137112
env:

.github/workflows/README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ OGX uses GitHub Actions for Continuous Integration (CI). Below is a table detail
2828
| Pre-commit | [pre-commit.yml](pre-commit.yml) | Run pre-commit checks |
2929
| Prepare release | [prepare-release.yml](prepare-release.yml) | Prepare release |
3030
| Test OGX Build | [providers-build.yml](providers-build.yml) | Test ogx build and list-deps |
31-
| Publish OpenAPI SDK to PyPI | [publish-openapi-sdk.yml](publish-openapi-sdk.yml) | Publish ogx-open-client to PyPI |
3231
| Build, test, and publish packages | [pypi.yml](pypi.yml) | Build, test, and publish packages |
3332
| Integration Tests (Record) | [record-integration-tests.yml](record-integration-tests.yml) | Auto-record missing test recordings for PR |
3433
| vLLM GPU Recording | [record-vllm-gpu-tests.yml](record-vllm-gpu-tests.yml) | GPU recording for gpt-oss:20b (${{ inputs.suite }} suite) |

.github/workflows/backward-compat.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ jobs:
3636
fetch-depth: 0 # Need full history to access main branch
3737

3838
- name: Set up Python
39-
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
39+
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
4040
with:
4141
python-version: '3.12'
4242

@@ -446,7 +446,7 @@ jobs:
446446
fetch-depth: 0
447447

448448
- name: Set up Python
449-
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
449+
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
450450
with:
451451
python-version: '3.12'
452452

.github/workflows/build-distributions.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ jobs:
154154
output: 'trivy-container-${{ matrix.distro }}.sarif'
155155

156156
- name: Upload container scan results to GitHub Security
157-
uses: github/codeql-action/upload-sarif@7211b7c8077ea37d8641b6271f6a365a22a5fbfa # v3
157+
uses: github/codeql-action/upload-sarif@8aad20d150bbac5944a9f9d289da16a4b0d87c1e # v3
158158
if: always()
159159
with:
160160
sarif_file: 'trivy-container-${{ matrix.distro }}.sarif'

.github/workflows/ci-status.yml

Lines changed: 45 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ jobs:
2222
timeout-minutes: 180
2323
permissions:
2424
checks: read
25+
pull-requests: read
2526
steps:
2627
- name: Wait for CI checks to complete
2728
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
@@ -43,19 +44,47 @@ jobs:
4344
const excludedApps = new Set(['mergify']);
4445
4546
const terminalStatuses = new Set(['completed']);
46-
const successConclusions = new Set(['success', 'skipped', 'neutral', 'cancelled']);
47-
const failureConclusions = new Set(['failure', 'timed_out']);
47+
const successConclusions = new Set(['success', 'skipped', 'neutral']);
48+
const failureConclusions = new Set(['failure', 'timed_out', 'cancelled', 'action_required', 'startup_failure', 'stale']);
49+
const replayCheckPrefix = 'Integration Tests (';
50+
const recordCheckPrefix = 'record-providers (';
51+
52+
function pathTriggersReplay(path) {
53+
if (path.startsWith('src/ogx_ui/')) return false;
54+
return path.startsWith('src/ogx/') ||
55+
path.startsWith('tests/') ||
56+
path === 'uv.lock' ||
57+
path === 'pyproject.toml' ||
58+
path === '.github/workflows/integration-tests.yml' ||
59+
path === '.github/actions/setup-ollama/action.yml' ||
60+
path === '.github/actions/setup-test-environment/action.yml' ||
61+
path === '.github/actions/run-and-record-tests/action.yml' ||
62+
path === 'scripts/integration-tests.sh' ||
63+
path === 'scripts/generate_ci_matrix.py';
64+
}
65+
66+
let replayRequired = context.eventName === 'merge_group';
67+
if (context.payload.pull_request) {
68+
const changedFiles = await github.paginate(github.rest.pulls.listFiles, {
69+
owner,
70+
repo,
71+
pull_number: context.payload.pull_request.number,
72+
per_page: 100,
73+
});
74+
replayRequired = changedFiles.some(file => pathTriggersReplay(file.filename));
75+
core.info(`Replay required: ${replayRequired} (${changedFiles.length} changed file(s) checked)`);
76+
}
4877
4978
while (true) {
50-
const { data: checkRuns } = await github.rest.checks.listForRef({
79+
const checkRuns = await github.paginate(github.rest.checks.listForRef, {
5180
owner,
5281
repo,
5382
ref: sha,
5483
per_page: 100,
5584
});
5685
5786
// Filter to only GitHub Actions checks, excluding ourselves and bots
58-
const relevant = checkRuns.check_runs.filter(cr => {
87+
const relevant = checkRuns.filter(cr => {
5988
if (excludedChecks.has(cr.name)) return false;
6089
if (cr.app && excludedApps.has(cr.app.slug)) return false;
6190
// Only include GitHub Actions checks
@@ -71,8 +100,11 @@ jobs:
71100
72101
const pending = relevant.filter(cr => !terminalStatuses.has(cr.status));
73102
const completed = relevant.filter(cr => terminalStatuses.has(cr.status));
103+
const replayChecks = relevant.filter(cr => cr.name.startsWith(replayCheckPrefix));
104+
const recordChecks = relevant.filter(cr => cr.name.startsWith(recordCheckPrefix));
74105
75106
core.info(`Checks: ${completed.length} completed, ${pending.length} pending out of ${relevant.length} total`);
107+
core.info(`Replay checks: ${replayChecks.length}; record checks: ${recordChecks.length}`);
76108
77109
for (const cr of completed) {
78110
core.info(` ✓ ${cr.name}: ${cr.conclusion}`);
@@ -87,6 +119,15 @@ jobs:
87119
continue;
88120
}
89121
122+
if (replayRequired && replayChecks.length === 0) {
123+
if (recordChecks.length > 0) {
124+
core.warning('Record checks are present, but no replay matrix checks were found for this SHA.');
125+
}
126+
core.info('Replay checks are required for this change. Waiting 30s for the replay workflow to appear...');
127+
await new Promise(r => setTimeout(r, 30000));
128+
continue;
129+
}
130+
90131
// All checks completed — evaluate conclusions
91132
const failed = completed.filter(cr => failureConclusions.has(cr.conclusion));
92133

.github/workflows/dependabot-constraints.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ jobs:
3939
fetch-depth: 2
4040

4141
- name: Set up Python
42-
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
42+
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
4343
with:
4444
python-version: '3.12'
4545

.github/workflows/docs-build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ jobs:
3434
cache-dependency-path: 'docs/package-lock.json'
3535

3636
- name: Cache node_modules
37-
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
37+
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
3838
id: cache-node-modules
3939
with:
4040
path: docs/node_modules

.github/workflows/file-processors-tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ jobs:
5656
run: |
5757
uv run --no-sync ogx stack run \
5858
--providers "file_processors=inline::docling,files=inline::localfs" \
59-
--port 8321 &
59+
--port 8321 --insecure &
6060
# Wait for server to be ready
6161
for i in $(seq 1 60); do
6262
if curl -sf http://localhost:8321/v1/health > /dev/null 2>&1; then

.github/workflows/integration-auth-tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ jobs:
156156
157157
# avoid line breaks in the server log, especially because we grep it below.
158158
export OGX_LOG_WIDTH=200
159-
nohup uv run ogx stack run "$run_dir/config.yaml" > server.log 2>&1 &
159+
nohup uv run ogx stack run "$run_dir/config.yaml" --insecure > server.log 2>&1 &
160160
161161
- name: Wait for OGX server to be ready
162162
run: |

0 commit comments

Comments
 (0)