Skip to content

ci: cross-repo fresh-shell PATH-persistence guard for install.sh#62

Draft
LukasWodka wants to merge 1 commit into
developfrom
test/install-journey-737-cli-caller
Draft

ci: cross-repo fresh-shell PATH-persistence guard for install.sh#62
LukasWodka wants to merge 1 commit into
developfrom
test/install-journey-737-cli-caller

Conversation

@LukasWodka

Copy link
Copy Markdown
Contributor

Part of #737

Summary

Adds a thin, label-gated CI job that catches a PATH-persistence regression in this repo's scripts/install.sh from the CLI side, pre-merge — instead of only after a release. This is the gap that let the original PATH issue ship green: no test opened a fresh shell after install and asserted tracebloc was reachable. A fresh non-login bash reads ~/.bashrc, not ~/.profile / ~/.bash_profile, so an installer that persists PATH to the wrong file looks fine in the install shell but breaks in a new terminal.

What changed

New workflow .github/workflows/install-path-persist.yml. It does not re-implement the check — the fresh-shell harness lives in tracebloc/client (scripts/tests/path-persist.sh) as the single source of truth (added in tracebloc/client#214). This job:

  1. Checks out this CLI PR (actions/checkout, path: cli).
  2. Checks out the client harness (actions/checkout with repository: tracebloc/client, path: client).
  3. Runs the harness in a fresh container per distro with TRACEBLOC_CLI_REF=/src/cli/scripts/install.sh — a local file path, so the harness installs this PR's install.sh (not the released one) and then asserts tracebloc resolves + tracebloc version runs from a fresh login and non-login shell for each of bash / zsh / fish.

Distro slice: ubuntu:24.04, debian:12, fedora:latest, opensuse/leap:15.6 (apt / dnf / zypper init families) — a representative subset; the full distro x shell x mode matrix runs in the client repo.

How it's triggered

Mirrors this repo's e2e.yml gating to control cost:

  • nightly schedule
  • workflow_dispatch
  • on a PR only when it carries the e2e label (contains(github.event.pull_request.labels.*.name, 'e2e')), and only when scripts/install.sh or this workflow change.

Refs

Verified locally / Needs CI

Verified locally (green):

  • yaml.safe_load on the workflow — parses.
  • actionlint on the workflow — clean.

Needs CI (requires GitHub runners / Docker — not run locally):

  • The actual cross-repo run (checkout of tracebloc/client + per-distro containers). It also depends on the harness branch being reachable; once client#214 merges, flip CLIENT_HARNESS_REF to develop.
  • To exercise it on this PR, add the e2e label.

Thin, label-gated caller that catches a PATH-persistence regression in
THIS repo's scripts/install.sh from the CLI side, pre-merge — rather than
only after a release.

It does not re-implement the check: the fresh-shell harness lives in
tracebloc/client (scripts/tests/path-persist.sh) as the single source of
truth. This workflow checks that harness out alongside this PR's source and
runs it in a fresh container per distro with TRACEBLOC_CLI_REF pointed at
this PR's install.sh (a local file path). A regression that puts the
tracebloc binary somewhere a fresh non-login shell can't find then fails
here before merge.

Mirrors e2e.yml's gating: nightly schedule + workflow_dispatch + the `e2e`
PR label only. The client harness ref is pinned to its feature branch with
a TODO to switch to develop once client#214 merges.

Part of #737.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@LukasWodka

Copy link
Copy Markdown
Contributor Author

👋 Heads-up — Code review queue is at 17 / 8

Above the WIP limit. The team convention is to review existing PRs before opening new work.

Open PRs currently in Code review (oldest first):

Pull from review before opening new work. (This is a nudge from the kanban WIP check, not a block.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants