annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
266
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
1 #!/usr/bin/env bash
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
2 set -euo pipefail
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
3
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
4 bazel build -c opt //mrjunejune:mrjunejune_server_bundle
99
684edfaf93b7 Updating deployment script
June Park <parkjune1995@gmail.com>
parents: 98
diff changeset
5
266
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
6 bundle="$(realpath bazel-bin/mrjunejune/mrjunejune_server_bundle)"
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
7 staging="/opt/mrjunejune_server_bundle_new"
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
8 active="/opt/mrjunejune_server_bundle_active"
269
de291f396881 install initial production config
MrJuneJune <me@mrjunejune.com>
parents: 268
diff changeset
9 source_config="$(pwd)/mrjunejune/.config"
de291f396881 install initial production config
MrJuneJune <me@mrjunejune.com>
parents: 268
diff changeset
10 production_config="/etc/mrjunejune/.config"
de291f396881 install initial production config
MrJuneJune <me@mrjunejune.com>
parents: 268
diff changeset
11
de291f396881 install initial production config
MrJuneJune <me@mrjunejune.com>
parents: 268
diff changeset
12 # The real config is ignored and intentionally excluded from the immutable
270
358dd5950985 sync production config on every deploy
MrJuneJune <me@mrjunejune.com>
parents: 269
diff changeset
13 # bundle. Synchronize the repository's service config on every deployment.
358dd5950985 sync production config on every deploy
MrJuneJune <me@mrjunejune.com>
parents: 269
diff changeset
14 if [[ ! -f "$source_config" ]]; then
358dd5950985 sync production config on every deploy
MrJuneJune <me@mrjunejune.com>
parents: 269
diff changeset
15 echo "Missing deployment config: $source_config" >&2
358dd5950985 sync production config on every deploy
MrJuneJune <me@mrjunejune.com>
parents: 269
diff changeset
16 exit 1
269
de291f396881 install initial production config
MrJuneJune <me@mrjunejune.com>
parents: 268
diff changeset
17 fi
270
358dd5950985 sync production config on every deploy
MrJuneJune <me@mrjunejune.com>
parents: 269
diff changeset
18 sudo install -d -o mrjunejune_server -g zenbu_team -m 0750 \
358dd5950985 sync production config on every deploy
MrJuneJune <me@mrjunejune.com>
parents: 269
diff changeset
19 "$(dirname "$production_config")"
358dd5950985 sync production config on every deploy
MrJuneJune <me@mrjunejune.com>
parents: 269
diff changeset
20 sudo install -o mrjunejune_server -g zenbu_team -m 0640 \
358dd5950985 sync production config on every deploy
MrJuneJune <me@mrjunejune.com>
parents: 269
diff changeset
21 "$source_config" "$production_config"
358dd5950985 sync production config on every deploy
MrJuneJune <me@mrjunejune.com>
parents: 269
diff changeset
22 echo "Updated production config at $production_config"
266
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
23
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
24 # Always create staging from an empty directory. Copying into an existing
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
25 # directory nests the bundle and can promote stale/incomplete runtime files.
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
26 sudo rm -rf "$staging"
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
27 sudo mkdir -p "$staging"
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
28 sudo cp -a "$bundle"/. "$staging"/
260
1f9877b637e9 Add Copilot-powered cyberpunk JRPG chat
MrJuneJune <mrjunejune@users.noreply.github.com>
parents: 207
diff changeset
29 sudo mv \
266
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
30 "$staging/mrjunejune_server" \
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
31 "$staging/mrjunejune_server_binary"
260
1f9877b637e9 Add Copilot-powered cyberpunk JRPG chat
MrJuneJune <mrjunejune@users.noreply.github.com>
parents: 207
diff changeset
32 sudo cp \
266
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
33 "$staging/mrjunejune/production_entrypoint.sh" \
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
34 "$staging/mrjunejune_server"
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
35
267
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
36 copilot_cli="$(
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
37 sudo find -L "$staging" -type f \
268
f7b1188d5fb1 support repo rules Copilot bundle path
MrJuneJune <me@mrjunejune.com>
parents: 267
diff changeset
38 \( \
f7b1188d5fb1 support repo rules Copilot bundle path
MrJuneJune <me@mrjunejune.com>
parents: 267
diff changeset
39 -path '*+_repo_rules2+copilot_cli_linux_x86_64/copilot' -o \
f7b1188d5fb1 support repo rules Copilot bundle path
MrJuneJune <me@mrjunejune.com>
parents: 267
diff changeset
40 -path '*+http_archive+copilot_cli_linux_x86_64/copilot' \
f7b1188d5fb1 support repo rules Copilot bundle path
MrJuneJune <me@mrjunejune.com>
parents: 267
diff changeset
41 \) -print -quit
267
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
42 )"
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
43 python_runtime="$(
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
44 sudo find -L "$staging" -type f \
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
45 -path '*/rules_python++python+python_3_11_x86_64-unknown-linux-gnu/bin/python3' \
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
46 -print -quit
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
47 )"
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
48 if [[ -z "$copilot_cli" ]]; then
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
49 echo "Deployment bundle does not contain the Copilot CLI" >&2
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
50 exit 1
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
51 fi
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
52 if [[ -z "$python_runtime" ]]; then
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
53 echo "Deployment bundle does not contain the Python runtime" >&2
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
54 exit 1
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
55 fi
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
56
266
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
57 required_runtime=(
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
58 "$staging/mrjunejune_server"
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
59 "$staging/mrjunejune_server_binary"
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
60 "$staging/mrjunejune/inference_stack.sh"
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
61 "$staging/mrjunejune/inference_sidecar_launcher.sh"
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
62 "$staging/mrjunejune/inference/copilot_sidecar.zip"
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
63 "$staging/mrjunejune/inference/litellm_proxy.zip"
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
64 "$staging/mrjunejune/inference/litellm_config.yaml"
267
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
65 "$copilot_cli"
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
66 "$python_runtime"
266
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
67 )
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
68 for runtime_path in "${required_runtime[@]}"; do
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
69 if [[ ! -e "$runtime_path" ]]; then
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
70 echo "Deployment bundle is missing runtime: $runtime_path" >&2
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
71 exit 1
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
72 fi
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
73 done
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
74
260
1f9877b637e9 Add Copilot-powered cyberpunk JRPG chat
MrJuneJune <mrjunejune@users.noreply.github.com>
parents: 207
diff changeset
75 sudo chmod +x \
266
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
76 "$staging/mrjunejune_server" \
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
77 "$staging/mrjunejune/inference_stack.sh" \
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
78 "$staging/mrjunejune/inference_sidecar_launcher.sh" \
267
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
79 "$copilot_cli" \
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
80 "$python_runtime"
266
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
81 sudo chown -R mrjunejune_server:zenbu_team "$staging"
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
82
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
83 # Persistent database, config, and Copilot tokens stay outside the immutable
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
84 # bundle and survive swaps.
207
58d9b64d8dca Updated deployment script to include sqlite3
MrJuneJune <me@mrjunejune.com>
parents: 102
diff changeset
85 sudo mkdir -p /opt/data/mrjunejune/
58d9b64d8dca Updated deployment script to include sqlite3
MrJuneJune <me@mrjunejune.com>
parents: 102
diff changeset
86 sudo chown -R mrjunejune_server:zenbu_team /opt/data/mrjunejune/
99
684edfaf93b7 Updating deployment script
June Park <parkjune1995@gmail.com>
parents: 98
diff changeset
87
684edfaf93b7 Updating deployment script
June Park <parkjune1995@gmail.com>
parents: 98
diff changeset
88 # Swap
266
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
89 sudo rm -rf "$active"
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
90 sudo mv "$staging" "$active"
99
684edfaf93b7 Updating deployment script
June Park <parkjune1995@gmail.com>
parents: 98
diff changeset
91
98
5c47eab8032d Updated deploy script
June Park <parkjune1995@gmail.com>
parents: 97
diff changeset
92 sudo systemctl restart mrjunejune_server.service
5c47eab8032d Updated deploy script
June Park <parkjune1995@gmail.com>
parents: 97
diff changeset
93 echo "Deployment complete!"