dbb8f6e006713f43b7dbd6100d3b5c024dc72766 braney Fri Sep 18 11:11:15 2026 -0700 weeklybld: let the docker instance scripts run a past release, refs #38377 We could not reproduce a bug against the release a user is actually on. hgwdev runs tip and the current release, and nothing older. Docker Hub already has a per-release image, so the missing piece was a way to run one. The lifecycle scripts now take a release name as well as tip, beta and rel. run-instance.sh v503 starts the published v503 image as container kent-v503 on port 8503; the port is 8000 plus the release number, so the mapping needs no table and no allocator. A release instance gets no CGI overlay, for the same reason rel gets none: it has to be the code that shipped. refresh-instance.sh, remove-instance.sh and smoke-instance.sh take the same name. smoke-instance.sh checks a release instance against the version in its own name, so no --version flag is needed. start-all.sh and stop-all.sh now read the release containers that exist rather than a fixed list, so the set of releases we keep can change without editing them. tunnel-release.sh is one script for every release rather than one per release, since that set changes. v499 through v503 are running on hgwdev on ports 8499 through 8503 and pass smoke-instance.sh. Five instances cost about 1.5 GB of memory, 10 GB of docker disk, and no measurable CPU. They read tables from genome-mysql.soe.ucsc.edu and files from hgdownload.soe.ucsc.edu, so they put no load on the hgwdev MySQL or /gbdb. diff --git src/utils/qa/weeklybld/remove-instance.sh src/utils/qa/weeklybld/remove-instance.sh index dea25892298..3d689e6c5ff 100755 --- src/utils/qa/weeklybld/remove-instance.sh +++ src/utils/qa/weeklybld/remove-instance.sh @@ -1,34 +1,41 @@ #!/bin/bash # # remove-instance.sh # # Stop and remove the named container. For beta and beta-arm64, also remove the # local image and named volumes, since the beta instances are torn down for good # when a release ships (do_wrapup) and the next build cycle starts from a clean # slate. +# +# A release instance (v499, v503, ...) loses its volumes too, because removing +# it means we have stopped keeping that release. Its image stays: it is the +# published release image, so a later run-instance.sh needs no pull. refs #38377 # refs #37655 # set -eEu -o pipefail usage() { - echo "usage: $(basename "$0") tip|beta|rel" >&2 + echo "usage: $(basename "$0") tip|beta|rel|vNNN" >&2 exit 1 } [[ $# -eq 1 ]] || usage name="$1" case "$name" in - tip|beta|beta-arm64|rel) ;; + tip|beta|beta-arm64|rel|v[0-9][0-9][0-9]) ;; *) usage ;; esac container="kent-$name" docker stop "$container" >/dev/null 2>&1 || true docker rm "$container" >/dev/null 2>&1 || true case "$name" in beta|beta-arm64) docker rmi "kent:$name" >/dev/null 2>&1 || true docker volume rm "kent-${name}-mysql" "kent-${name}-gbdb" >/dev/null 2>&1 || true ;; + v[0-9][0-9][0-9]) + docker volume rm "kent-${name}-mysql" "kent-${name}-gbdb" >/dev/null 2>&1 || true + ;; esac