Mercurial
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 |
| 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 | 92 sudo systemctl restart mrjunejune_server.service |
| 93 echo "Deployment complete!" |