comparison hg-web/deploy.sh @ 227:8bb0ac8f4587

[hg-web] Add Bazel deployment target
author MrJuneJune <me@mrjunejune.com>
date Sun, 02 Aug 2026 16:31:44 -0700
parents ce7f4400c2de
children c5129452493e
comparison
equal deleted inserted replaced
226:3fa4bf481f42 227:8bb0ac8f4587
6 ACTIVE_PATH="${ACTIVE_PATH:-/opt/hg_web_server_bundle_active}" 6 ACTIVE_PATH="${ACTIVE_PATH:-/opt/hg_web_server_bundle_active}"
7 HEALTH_URL="${HEALTH_URL:-http://127.0.0.1:6970/}" 7 HEALTH_URL="${HEALTH_URL:-http://127.0.0.1:6970/}"
8 SERVICE_USER="${SERVICE_USER:-hg_web_server}" 8 SERVICE_USER="${SERVICE_USER:-hg_web_server}"
9 SERVICE_GROUP="${SERVICE_GROUP:-zenbu_team}" 9 SERVICE_GROUP="${SERVICE_GROUP:-zenbu_team}"
10 10
11 workspace="$(hg root)" 11 workspace="${BUILD_WORKSPACE_DIRECTORY:-$(hg root)}"
12 cd "$workspace" 12 cd "$workspace"
13
14 if [[ -n "${BUILD_WORKSPACE_DIRECTORY:-}" ]]; then
15 if [[ -n "${RUNFILES_DIR:-}" ]]; then
16 source "$RUNFILES_DIR/bazel_tools/tools/bash/runfiles/runfiles.bash"
17 elif [[ -n "${RUNFILES_MANIFEST_FILE:-}" ]]; then
18 runfiles_library="$(
19 grep -sm1 '^bazel_tools/tools/bash/runfiles/runfiles.bash ' \
20 "$RUNFILES_MANIFEST_FILE" | cut -d' ' -f2-
21 )"
22 source "$runfiles_library"
23 elif [[ -d "$0.runfiles" ]]; then
24 RUNFILES_DIR="$0.runfiles"
25 export RUNFILES_DIR
26 source "$RUNFILES_DIR/bazel_tools/tools/bash/runfiles/runfiles.bash"
27 elif [[ -f "$0.runfiles_manifest" ]]; then
28 RUNFILES_MANIFEST_FILE="$0.runfiles_manifest"
29 export RUNFILES_MANIFEST_FILE
30 runfiles_library="$(
31 grep -sm1 '^bazel_tools/tools/bash/runfiles/runfiles.bash ' \
32 "$RUNFILES_MANIFEST_FILE" | cut -d' ' -f2-
33 )"
34 source "$runfiles_library"
35 else
36 echo "Bazel runfiles are unavailable." >&2
37 exit 1
38 fi
39 bundle_dir="$(rlocation _main/hg-web/hg_web_server_bundle)"
40 else
41 bazel build -c opt //hg-web:hg_web_server_bundle
42 bundle_dir="bazel-bin/hg-web/hg_web_server_bundle"
43 fi
13 44
14 revision="$(hg log -r . -T '{node|short}')" 45 revision="$(hg log -r . -T '{node|short}')"
15 release_name="${revision}-$(date -u +%Y%m%dT%H%M%SZ)" 46 release_name="${revision}-$(date -u +%Y%m%dT%H%M%SZ)"
16 release_dir="${RELEASE_ROOT}/${release_name}" 47 release_dir="${RELEASE_ROOT}/${release_name}"
17 staging_dir="${RELEASE_ROOT}/.${release_name}.tmp" 48 staging_dir="${RELEASE_ROOT}/.${release_name}.tmp"
18 next_link="${ACTIVE_PATH}.next" 49 next_link="${ACTIVE_PATH}.next"
19 bundle_dir="bazel-bin/hg-web/hg_web_server_bundle"
20 previous_release="" 50 previous_release=""
21 promoted=0 51 promoted=0
22 52
23 health_check() { 53 health_check() {
24 for _ in $(seq 1 20); do 54 for _ in $(seq 1 20); do
51 sudo rm -rf "$staging_dir" 81 sudo rm -rf "$staging_dir"
52 exit 1 82 exit 1
53 } 83 }
54 trap rollback ERR 84 trap rollback ERR
55 85
56 bazel build -c opt //hg-web:hg_web_server_bundle
57
58 sudo install -d -o root -g "$SERVICE_GROUP" -m 0755 "$RELEASE_ROOT" 86 sudo install -d -o root -g "$SERVICE_GROUP" -m 0755 "$RELEASE_ROOT"
59 sudo rm -rf "$staging_dir" 87 sudo rm -rf "$staging_dir"
60 sudo install -d -o "$SERVICE_USER" -g "$SERVICE_GROUP" -m 0755 "$staging_dir" 88 sudo install -d -o "$SERVICE_USER" -g "$SERVICE_GROUP" -m 0755 "$staging_dir"
61 sudo cp -a "${bundle_dir}/." "$staging_dir/" 89 sudo cp -a "${bundle_dir}/." "$staging_dir/"
62 sudo chown -R "$SERVICE_USER:$SERVICE_GROUP" "$staging_dir" 90 sudo chown -R "$SERVICE_USER:$SERVICE_GROUP" "$staging_dir"