annotate mrjunejune/deploy.sh @ 268:f7b1188d5fb1

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