diff --git a/.gitea/workflows/runtime-distribution.yml b/.gitea/workflows/runtime-distribution.yml index c407577..e549ef8 100644 --- a/.gitea/workflows/runtime-distribution.yml +++ b/.gitea/workflows/runtime-distribution.yml @@ -118,7 +118,7 @@ jobs: --lock-output runtime-output/package-artifacts.lock.json \ --requirements-output runtime-output/requirements-release.packages.txt \ --python .runtime-build/bin/python - PYTHON=.runtime-build/bin/python \ + PYTHON="$PWD/.runtime-build/bin/python" \ GOVOPLAN_WEBUI_PACKAGE_LOCK="$PWD/runtime-output/package-artifacts.lock.json" \ GOVOPLAN_WEBUI_PACKAGE_DIR="$PWD/runtime-output/webui-packages" \ bash tools/release/install-webui-release-dependencies.sh ../govoplan-core/webui diff --git a/docs/PACKAGE_REGISTRY_RELEASES.md b/docs/PACKAGE_REGISTRY_RELEASES.md index e2d4248..83dd9e3 100644 --- a/docs/PACKAGE_REGISTRY_RELEASES.md +++ b/docs/PACKAGE_REGISTRY_RELEASES.md @@ -153,6 +153,8 @@ being selected from an undeclared registry. The runtime distribution workflow uses the verified wheelhouse directly and installs module WebUI tarballs only after matching them to the lock. It publishes the package set, package lock, and hash-locked requirements as release assets. +The WebUI installer receives the absolute runtime-build interpreter path so its +directory changes cannot escape the isolated release environment. The package-lock SHA-256 is part of the signed distribution manifest. Runtime finalization also requires the lock's package versions and hashes to match the wheel composition embedded in the images. OCI assembly remains network-free diff --git a/tests/test_package_registry_release.py b/tests/test_package_registry_release.py index 3fd7f7b..2f8b7fb 100644 --- a/tests/test_package_registry_release.py +++ b/tests/test_package_registry_release.py @@ -143,6 +143,7 @@ class PackageRegistryReleaseTests(unittest.TestCase): "--package-lock runtime-output/package-artifacts.lock.json", workflow, ) + self.assertIn('PYTHON="$PWD/.runtime-build/bin/python"', workflow) self.assertNotIn( "pip wheel --no-deps --wheel-dir runtime-output/local-wheels", workflow,