Skip to content

#273 #248/test the consumer install path and the shipped env in CI - #402

Merged
yunlishao merged 2 commits into
dev_v0.9.1from
maintenance/273_install_and_env_ci
Sep 23, 2026
Merged

yunlishao merged 2 commits into
dev_v0.9.1from
maintenance/273_install_and_env_ci

Conversation

@yunlishao-vibe

@yunlishao-vibe yunlishao-vibe commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Two CI gaps. Each has already let a broken release through with CI green.

#273: nothing ran the consumer install path

#238 changed the packaging, the installer wasn't updated to match, and the first to notice was a user running --update-fixs. Since #272 every app on a channel runs scripts/update_fixs.{ps1,sh}, so a broken installer breaks all of them at once.

The installers can't install from a local file, so a test before publishing had nothing to run. They now take:

  • --zip <path> / -Zip: install a build zip already on disk instead of downloading one. Everything after the download runs unchanged: unpack, native runtime fetch, version marker. Behaviour without the flag is unchanged.
  • --list / -List: print the releases the picker would offer, then exit.

release.yml then checks the install at two points:

When Where What it exercises
Before publish build-publish (Windows), linux-bundle (focal) installs the zip just packed with --zip. A zip that can't install never reaches the channel: the Windows step sits ahead of the publish step, and linux-publish needs linux-bundle.
After publish new install-check-windows, install-check-linux jobs installs the channel through the real download path, including the checksum. The Linux job also checks that --list equals the releases that carry a fixs-build-*.zip, compared against jq's reading of the API.

Both points check the result with scripts/check_fixs_install.{ps1,sh}:

  • TrafficLayer is present.
  • The native runtime loads: Test-LibsumoLoadable on Windows, ldd with no LD_LIBRARY_PATH on Linux.
  • Line 1 of FIXS_VERSION.txt carries the tag, with no BOM.

The after-publish check can't prevent a bad release, only make it visible. Prevention comes from the before-publish check.

Checksum rule. #396 (#204) started publishing .sha256 files. A .sha256 that the release lists is now required: if it can't be fetched, or doesn't match, the install fails. A release that lists none was published before #204 and still installs, with a warning, as before. This closes the gap for new releases without breaking installs of the pinned old ones.

Build gate. scripts/update_fixs.* was on the build-skip list, so a PR touching only the installer ran nothing. It's off the list now, because the build is what installs the fresh zip with it.

#248: nothing built the env from environment.yml

New python-env.yml: create the env from the spec alone, import carla_env_setup.CHECKED_MODULES, byte-compile Carla/ and CommonLib/, add carla==0.9.15 as ensure_carla() does, and run tests/Python/unit. It has no path filter on purpose: release.yml skips Python-only PRs, and those are the PRs this workflow is for.

Related Issues

Closes #273
Closes #248

Environment

  • Python version: 3.10 (env created from environment.yml)
  • SUMO version: 1.22.0 (libsumo from fixs-native-deps)

Checklist

  • Code compiles/runs as expected: locally, see below
  • Tests pass locally: 451 passed, 8 skipped, in an env built from environment.yml
  • Documentation is updated (if applicable): usage is in the script headers
  • Issue linked above

Additional Notes

Verified locally (Windows 11, against the live releases)

update_fixs.ps1, and update_fixs.sh under Git Bash, where it selects the Windows assets:

Case Result
--zip with the published v0.9.1-alpha zip installs; check passes
v0.9.1-alpha (lists .sha256) checksum OK on both zip and libsumo; check passes
v0.9.0-alpha (lists none) warns, installs
--list the 5 releases with a build zip; excludes fixs-native-deps, Binaries-*, v0.6.0, v0.7.0; equals the jq reading

Each negative control fails for its own reason:

Negative control Result
zip with TrafficLayer.exe removed check fails: TrafficLayer.exe is missing
wrong tag check fails on line 1
sidecar forced "listed" on v0.9.0-alpha install fails: lists … .sha256 but it could not be fetched
tampered expected hash install fails: checksum mismatch, and no FIXS_VERSION.txt is written
--list compared against all releases differs, as it should
env import check under an interpreter lacking pandas/shapely/networkx fails, naming each
a .py with a syntax error under Carla/ byte-compile fails

Not verified yet

  • check_fixs_install.sh and the Linux installs. They need a Linux runner (ldd), so this PR's own linux-bundle run is their first run.
  • The after-publish jobs. They only run when a branch with a channel publishes. A workflow_dispatch with publish=true on this branch would not exercise them either: the branch has no channel, so nothing publishes and they skip. Their first run is the first push to dev_v0.9.1 after merge. The before-publish checks, which are the ones that block a bad release, did run and pass on this PR.
  • setup-miniconda with Miniforge against a spec that lists defaults. Locally I used Miniconda. This PR's python-env run is the test.

Out of scope, found on the way

  1. environment.yml's trailing comment says ensure_carla() also installs eclipse-sumo/traci/sumolib. It doesn't: only the no-conda fallback does (carla_env_setup.py:776). This belongs to [BUG] Shipped environment.yml does not produce a working co-sim env (carla wheel path + missing/unpinned SUMO clients) #221.
  2. The spec does not resolve on Linux (the win-64-only runtimes above), so a Linux consumer can't conda env create -f environment.yml.
  3. Carla/run_cosim.py:1605 and :1641 have invalid escape sequences ("virenv\mainvircarla.py", f"apps\{app_id}\\"). Today they are a DeprecationWarning; from Python 3.12 they are a SyntaxWarning.

…fter

update_fixs.{ps1,sh} gain --zip (install a local build zip) and --list
(the picker's releases). release.yml installs each platform's fresh zip
with them before publish, and the published channel after it, checking
the result with check_fixs_install.{ps1,sh}.

A .sha256 the release lists is now required; only releases that list
none install unverified.
…n it

Windows runner: the spec's vc14/vs2015 runtimes are win-64 only.
@yunlishao-vibe yunlishao-vibe added this to the 0.9.1 milestone Sep 23, 2026
@yunlishao
yunlishao merged commit 4a2383f into dev_v0.9.1 Sep 23, 2026
10 checks passed
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