Skip to content

Commit b716c8c

Browse files
CopilotJerrettDavisgithub-advanced-security[bot]
authored
fix(ci): correct comments, timeouts, and pip reliability in native e2e workflows (#878)
Review feedback on PR #837 identified several issues in the newly added `wrap-native-e2e.yml` and `install-native-e2e.yml` workflows. ## Changes **`wrap-native-e2e.yml`** - Header comment claimed "linux / macos / windows" coverage — Windows is matrix-excluded; updated to reflect actual runners and note Windows is pending CRT fix - Removed Windows-specific wording ("Windows path handling") from the workflow description; made OS-agnostic - `timeout-minutes`: `15` → `25` to match `init-native-e2e.yml` and avoid maturin build flakes on macOS **Both `wrap-native-e2e.yml` and `install-native-e2e.yml`** - pip install made more resilient on macOS runners, matching the pattern already used in `ci.yml`: ```yaml - name: Install pytest shell: bash run: | python -m pip install --upgrade pip python -m pip install --retries 10 --timeout 60 pytest pytest-cov ``` - `timeout-minutes`: `15` → `25` in `install-native-e2e.yml` for the same reason --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: JD Davis <mxjerrett@gmail.com> Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
1 parent e408012 commit b716c8c

2 files changed

Lines changed: 137 additions & 0 deletions

File tree

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
name: Install Native E2E
2+
3+
# Cross-platform smoke tests for safe ``headroom install`` paths. The goal here
4+
# is portable CLI coverage that runs on real runners without mutating OS service
5+
# managers or requiring Docker. Deeper lifecycle behavior remains covered by the
6+
# existing native installer wrapper tests and install unit tests.
7+
8+
on:
9+
pull_request:
10+
branches: [main]
11+
paths:
12+
- "headroom/cli/install.py"
13+
- "headroom/install/**"
14+
- "tests/test_cli/test_install_cli.py"
15+
- "tests/test_install/test_paths.py"
16+
- ".github/actions/headroom-e2e-setup/**"
17+
- ".github/workflows/install-native-e2e.yml"
18+
push:
19+
branches: [main]
20+
workflow_dispatch:
21+
22+
permissions:
23+
contents: read
24+
25+
jobs:
26+
install-native:
27+
runs-on: ${{ matrix.os }}
28+
timeout-minutes: 25
29+
strategy:
30+
fail-fast: false
31+
matrix:
32+
# Windows is excluded today: upstream `esaxx-rs` (transitively from
33+
# `tokenizers`) and `ort-sys` (onnxruntime via `fastembed`) link
34+
# with conflicting MSVC C runtime libraries (/MT vs /MD), so the
35+
# Rust extension cannot build for `win_amd64` until the upstream
36+
# CRT conflict is resolved. Re-add `windows-latest` once the wheel
37+
# builds cleanly there. Match init-native-e2e.yml so this workflow
38+
# doesn't fail during setup before the install smoke tests run.
39+
os: [ubuntu-latest, macos-latest]
40+
41+
steps:
42+
- uses: actions/checkout@v6
43+
44+
- name: Setup
45+
uses: ./.github/actions/headroom-e2e-setup
46+
with:
47+
python-version: "3.11"
48+
49+
- name: Install pytest
50+
shell: bash
51+
run: |
52+
python -m pip install --upgrade pip
53+
python -m pip install --retries 10 --timeout 60 pytest pytest-cov
54+
55+
- name: Run install native smoke tests
56+
shell: bash
57+
run: |
58+
pytest tests/test_cli/test_install_cli.py tests/test_install/test_paths.py --cov=headroom --cov-report=xml:coverage-install-native.xml --cov-report=term-missing -q
59+
60+
- name: Upload coverage to Codecov
61+
uses: codecov/codecov-action@v4
62+
with:
63+
file: ./coverage-install-native.xml
64+
flags: install-native
65+
name: install-native-${{ matrix.os }}
66+
fail_ci_if_error: false
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
name: Wrap Native E2E
2+
3+
# Cross-platform smoke tests for the hidden ``headroom wrap ... --prepare-only``
4+
# flows. These reuse the existing pytest bridge cases so we exercise the real
5+
# CLI on linux / macos without depending on agent binaries or long-lived proxy
6+
# processes. Windows will be added once the upstream CRT conflict is resolved
7+
# (see matrix comment below).
8+
#
9+
# This complements the Docker-native wrap e2e by catching host-specific issues
10+
# such as home-directory layout and filesystem quirks in prepare-only config
11+
# injection.
12+
13+
on:
14+
pull_request:
15+
branches: [main]
16+
paths:
17+
- "headroom/cli/**"
18+
- "headroom/providers/**"
19+
- "headroom/rtk/**"
20+
- "tests/test_cli/test_wrap_bridge.py"
21+
- ".github/actions/headroom-e2e-setup/**"
22+
- ".github/workflows/wrap-native-e2e.yml"
23+
push:
24+
branches: [main]
25+
workflow_dispatch:
26+
27+
permissions:
28+
contents: read
29+
30+
jobs:
31+
wrap-native:
32+
runs-on: ${{ matrix.os }}
33+
timeout-minutes: 25
34+
strategy:
35+
fail-fast: false
36+
matrix:
37+
# Windows is excluded today: upstream `esaxx-rs` (transitively from
38+
# `tokenizers`) and `ort-sys` (onnxruntime via `fastembed`) link
39+
# with conflicting MSVC C runtime libraries (/MT vs /MD), so the
40+
# Rust extension cannot build for `win_amd64` until the upstream
41+
# CRT conflict is resolved. Re-add `windows-latest` once the wheel
42+
# builds cleanly there. Match init-native-e2e.yml so this workflow
43+
# doesn't fail during setup before the wrap smoke tests run.
44+
os: [ubuntu-latest, macos-latest]
45+
46+
steps:
47+
- uses: actions/checkout@v6
48+
49+
- name: Setup
50+
uses: ./.github/actions/headroom-e2e-setup
51+
with:
52+
python-version: "3.11"
53+
54+
- name: Install pytest
55+
shell: bash
56+
run: |
57+
python -m pip install --upgrade pip
58+
python -m pip install --retries 10 --timeout 60 pytest pytest-cov
59+
60+
- name: Run wrap native bridge tests
61+
shell: bash
62+
run: |
63+
pytest tests/test_cli/test_wrap_bridge.py --cov=headroom --cov-report=xml:coverage-wrap-native.xml --cov-report=term-missing -q
64+
65+
- name: Upload coverage to Codecov
66+
uses: codecov/codecov-action@v4
67+
with:
68+
file: ./coverage-wrap-native.xml
69+
flags: wrap-native
70+
name: wrap-native-${{ matrix.os }}
71+
fail_ci_if_error: false

0 commit comments

Comments
 (0)