Mercurial
view mrjunejune/deploy.sh @ 279:b3b547563ec7
Add Google connector service and agent wiki
Implement the C/Seobeo Google Drive and Gmail connector with encrypted OAuth storage, Zenbu authentication, browser testing, AI tool discovery, chunked HTTP decoding, and Bazel coverage. Consolidate repository guidance into progressive wiki documentation and enforce arena-first allocation for new first-party C code.
Co-authored-by: Copilot <[email protected]>
Copilot-Session: 84c338fd-0939-4bb3-b7f3-1062eb213e5d
| author | MrJuneJune <me@mrjunejune.com> |
|---|---|
| date | Mon, 17 Aug 2026 22:22:36 -0700 |
| parents | 358dd5950985 |
| children |
line wrap: on
line source
#!/usr/bin/env bash set -euo pipefail bazel build -c opt //mrjunejune:mrjunejune_server_bundle bundle="$(realpath bazel-bin/mrjunejune/mrjunejune_server_bundle)" staging="/opt/mrjunejune_server_bundle_new" active="/opt/mrjunejune_server_bundle_active" source_config="$(pwd)/mrjunejune/.config" production_config="/etc/mrjunejune/.config" # The real config is ignored and intentionally excluded from the immutable # bundle. Synchronize the repository's service config on every deployment. if [[ ! -f "$source_config" ]]; then echo "Missing deployment config: $source_config" >&2 exit 1 fi sudo install -d -o mrjunejune_server -g zenbu_team -m 0750 \ "$(dirname "$production_config")" sudo install -o mrjunejune_server -g zenbu_team -m 0640 \ "$source_config" "$production_config" echo "Updated production config at $production_config" # Always create staging from an empty directory. Copying into an existing # directory nests the bundle and can promote stale/incomplete runtime files. sudo rm -rf "$staging" sudo mkdir -p "$staging" sudo cp -a "$bundle"/. "$staging"/ sudo mv \ "$staging/mrjunejune_server" \ "$staging/mrjunejune_server_binary" sudo cp \ "$staging/mrjunejune/production_entrypoint.sh" \ "$staging/mrjunejune_server" copilot_cli="$( sudo find -L "$staging" -type f \ \( \ -path '*+_repo_rules2+copilot_cli_linux_x86_64/copilot' -o \ -path '*+http_archive+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" "$staging/mrjunejune/inference_stack.sh" "$staging/mrjunejune/inference_sidecar_launcher.sh" "$staging/mrjunejune/inference/copilot_sidecar.zip" "$staging/mrjunejune/inference/litellm_proxy.zip" "$staging/mrjunejune/inference/litellm_config.yaml" "$copilot_cli" "$python_runtime" ) for runtime_path in "${required_runtime[@]}"; do if [[ ! -e "$runtime_path" ]]; then echo "Deployment bundle is missing runtime: $runtime_path" >&2 exit 1 fi done sudo chmod +x \ "$staging/mrjunejune_server" \ "$staging/mrjunejune/inference_stack.sh" \ "$staging/mrjunejune/inference_sidecar_launcher.sh" \ "$copilot_cli" \ "$python_runtime" sudo chown -R mrjunejune_server:zenbu_team "$staging" # Persistent database, config, and Copilot tokens stay outside the immutable # bundle and survive swaps. sudo mkdir -p /opt/data/mrjunejune/ sudo chown -R mrjunejune_server:zenbu_team /opt/data/mrjunejune/ # Swap sudo rm -rf "$active" sudo mv "$staging" "$active" sudo systemctl restart mrjunejune_server.service echo "Deployment complete!"