# HG changeset patch # User MrJuneJune # Date 1786132735 25200 # Node ID a78f5986011f50b62978c58af70c0369cb73e638 # Parent efaf4c63cc943211be5a20f4951b1a7ad564458c discover bundled production runtimes Locate Bazel-packaged Copilot and Python binaries by stable suffix instead of hardcoding an external repository prefix. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> diff -r efaf4c63cc94 -r a78f5986011f mrjunejune/deploy.sh --- a/mrjunejune/deploy.sh Fri Aug 07 12:52:30 2026 -0700 +++ b/mrjunejune/deploy.sh Fri Aug 07 12:58:55 2026 -0700 @@ -19,6 +19,24 @@ "$staging/mrjunejune/production_entrypoint.sh" \ "$staging/mrjunejune_server" +copilot_cli="$( + sudo find -L "$staging" -type f \ + -path '*/copilot_cli_linux_x86_64/copilot' -print -quit +)" +python_runtime="$( + sudo find -L "$staging" -type f \ + -path '*/rules_python++python+python_3_11_x86_64-unknown-linux-gnu/bin/python3' \ + -print -quit +)" +if [[ -z "$copilot_cli" ]]; then + echo "Deployment bundle does not contain the Copilot CLI" >&2 + exit 1 +fi +if [[ -z "$python_runtime" ]]; then + echo "Deployment bundle does not contain the Python runtime" >&2 + exit 1 +fi + required_runtime=( "$staging/mrjunejune_server" "$staging/mrjunejune_server_binary" @@ -27,8 +45,8 @@ "$staging/mrjunejune/inference/copilot_sidecar.zip" "$staging/mrjunejune/inference/litellm_proxy.zip" "$staging/mrjunejune/inference/litellm_config.yaml" - "$staging/+http_archive+copilot_cli_linux_x86_64/copilot" - "$staging/rules_python++python+python_3_11_x86_64-unknown-linux-gnu/bin/python3" + "$copilot_cli" + "$python_runtime" ) for runtime_path in "${required_runtime[@]}"; do if [[ ! -e "$runtime_path" ]]; then @@ -41,7 +59,8 @@ "$staging/mrjunejune_server" \ "$staging/mrjunejune/inference_stack.sh" \ "$staging/mrjunejune/inference_sidecar_launcher.sh" \ - "$staging/+http_archive+copilot_cli_linux_x86_64/copilot" + "$copilot_cli" \ + "$python_runtime" sudo chown -R mrjunejune_server:zenbu_team "$staging" # Persistent database, config, and Copilot tokens stay outside the immutable diff -r efaf4c63cc94 -r a78f5986011f mrjunejune/production_entrypoint.sh --- a/mrjunejune/production_entrypoint.sh Fri Aug 07 12:52:30 2026 -0700 +++ b/mrjunejune/production_entrypoint.sh Fri Aug 07 12:58:55 2026 -0700 @@ -4,11 +4,25 @@ bundle_root="$(cd "$(dirname "$0")" && pwd)" cd "$bundle_root" +copilot_cli="$( + find -L "$bundle_root" -type f \ + -path '*/copilot_cli_linux_x86_64/copilot' -print -quit +)" +python_runtime="$( + find -L "$bundle_root" -type f \ + -path '*/rules_python++python+python_3_11_x86_64-unknown-linux-gnu/bin/python3' \ + -print -quit +)" +if [[ -z "$copilot_cli" || -z "$python_runtime" ]]; then + echo "Production bundle is missing Copilot or Python runtime" >&2 + exit 1 +fi + exec "$bundle_root/mrjunejune/inference_stack.sh" \ "$bundle_root/mrjunejune_server_binary" \ "$bundle_root/mrjunejune/inference_sidecar_launcher.sh" \ "$bundle_root/mrjunejune/inference/copilot_sidecar.zip" \ - "$bundle_root/+http_archive+copilot_cli_linux_x86_64/copilot" \ + "$copilot_cli" \ "$bundle_root/mrjunejune/inference/litellm_proxy.zip" \ "$bundle_root/mrjunejune/inference/litellm_config.yaml" \ - "$bundle_root/rules_python++python+python_3_11_x86_64-unknown-linux-gnu/bin/python3" + "$python_runtime" diff -r efaf4c63cc94 -r a78f5986011f mrjunejune/test/production_inference_bundle_test.sh --- a/mrjunejune/test/production_inference_bundle_test.sh Fri Aug 07 12:52:30 2026 -0700 +++ b/mrjunejune/test/production_inference_bundle_test.sh Fri Aug 07 12:58:55 2026 -0700 @@ -41,6 +41,12 @@ entrypoint="$(find -L "$bundle" -type f -name production_entrypoint.sh -print -quit)" bash -n "$entrypoint" grep -q 'mrjunejune_server_binary' "$entrypoint" +grep -q "copilot_cli_linux_x86_64/copilot" "$entrypoint" +grep -q "rules_python++python+python_3_11_x86_64-unknown-linux-gnu/bin/python3" "$entrypoint" +if grep -q '+http_archive+copilot_cli_linux_x86_64' "$entrypoint"; then + echo "Production entrypoint hardcodes one Bazel repository prefix" >&2 + exit 1 +fi if grep -q 'MRJUNEJUNE_ALLOW_.*INFERENCE' "$entrypoint"; then echo "Production entrypoint must not override guest policy from .config" >&2 exit 1