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