annotate mrjunejune/deploy.sh @ 267:a78f5986011f

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 <[email protected]>
author MrJuneJune <me@mrjunejune.com>
date Fri, 07 Aug 2026 12:58:55 -0700
parents efaf4c63cc94
children f7b1188d5fb1
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"
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
9
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
10 # 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
11 # 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
12 sudo rm -rf "$staging"
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
13 sudo mkdir -p "$staging"
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
14 sudo cp -a "$bundle"/. "$staging"/
260
1f9877b637e9 Add Copilot-powered cyberpunk JRPG chat
MrJuneJune <mrjunejune@users.noreply.github.com>
parents: 207
diff changeset
15 sudo mv \
266
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
16 "$staging/mrjunejune_server" \
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
17 "$staging/mrjunejune_server_binary"
260
1f9877b637e9 Add Copilot-powered cyberpunk JRPG chat
MrJuneJune <mrjunejune@users.noreply.github.com>
parents: 207
diff changeset
18 sudo cp \
266
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
19 "$staging/mrjunejune/production_entrypoint.sh" \
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
20 "$staging/mrjunejune_server"
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
21
267
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
22 copilot_cli="$(
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
23 sudo find -L "$staging" -type f \
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
24 -path '*/copilot_cli_linux_x86_64/copilot' -print -quit
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
25 )"
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
26 python_runtime="$(
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
27 sudo find -L "$staging" -type f \
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
28 -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
29 -print -quit
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
30 )"
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
31 if [[ -z "$copilot_cli" ]]; then
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
32 echo "Deployment bundle does not contain the Copilot CLI" >&2
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
33 exit 1
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
34 fi
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
35 if [[ -z "$python_runtime" ]]; then
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
36 echo "Deployment bundle does not contain the Python runtime" >&2
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
37 exit 1
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
38 fi
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
39
266
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
40 required_runtime=(
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
41 "$staging/mrjunejune_server"
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
42 "$staging/mrjunejune_server_binary"
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
43 "$staging/mrjunejune/inference_stack.sh"
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
44 "$staging/mrjunejune/inference_sidecar_launcher.sh"
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
45 "$staging/mrjunejune/inference/copilot_sidecar.zip"
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
46 "$staging/mrjunejune/inference/litellm_proxy.zip"
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
47 "$staging/mrjunejune/inference/litellm_config.yaml"
267
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
48 "$copilot_cli"
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
49 "$python_runtime"
266
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
50 )
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
51 for runtime_path in "${required_runtime[@]}"; do
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
52 if [[ ! -e "$runtime_path" ]]; then
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
53 echo "Deployment bundle is missing runtime: $runtime_path" >&2
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
54 exit 1
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
55 fi
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
56 done
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
57
260
1f9877b637e9 Add Copilot-powered cyberpunk JRPG chat
MrJuneJune <mrjunejune@users.noreply.github.com>
parents: 207
diff changeset
58 sudo chmod +x \
266
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
59 "$staging/mrjunejune_server" \
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" \
267
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
62 "$copilot_cli" \
a78f5986011f discover bundled production runtimes
MrJuneJune <me@mrjunejune.com>
parents: 266
diff changeset
63 "$python_runtime"
266
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
64 sudo chown -R mrjunejune_server:zenbu_team "$staging"
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
65
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
66 # Persistent database, config, and Copilot tokens stay outside the immutable
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
67 # bundle and survive swaps.
207
58d9b64d8dca Updated deployment script to include sqlite3
MrJuneJune <me@mrjunejune.com>
parents: 102
diff changeset
68 sudo mkdir -p /opt/data/mrjunejune/
58d9b64d8dca Updated deployment script to include sqlite3
MrJuneJune <me@mrjunejune.com>
parents: 102
diff changeset
69 sudo chown -R mrjunejune_server:zenbu_team /opt/data/mrjunejune/
99
684edfaf93b7 Updating deployment script
June Park <parkjune1995@gmail.com>
parents: 98
diff changeset
70
684edfaf93b7 Updating deployment script
June Park <parkjune1995@gmail.com>
parents: 98
diff changeset
71 # Swap
266
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
72 sudo rm -rf "$active"
efaf4c63cc94 fix clean production bundle staging
MrJuneJune <me@mrjunejune.com>
parents: 260
diff changeset
73 sudo mv "$staging" "$active"
99
684edfaf93b7 Updating deployment script
June Park <parkjune1995@gmail.com>
parents: 98
diff changeset
74
98
5c47eab8032d Updated deploy script
June Park <parkjune1995@gmail.com>
parents: 97
diff changeset
75 sudo systemctl restart mrjunejune_server.service
5c47eab8032d Updated deploy script
June Park <parkjune1995@gmail.com>
parents: 97
diff changeset
76 echo "Deployment complete!"