cd9c0c51f9463d768c5eecdec14cb7c9aaf66cf7 braney Fri May 29 17:28:10 2026 -0700 Docker QA instances on hgwdev (tip/beta/rel): lifecycle scripts + autoBuild wiring, refs #37655 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> diff --git src/utils/qa/weeklybld/autoBuild.sh src/utils/qa/weeklybld/autoBuild.sh index ff2910eb675..b37ad3f0185 100755 --- src/utils/qa/weeklybld/autoBuild.sh +++ src/utils/qa/weeklybld/autoBuild.sh @@ -423,44 +423,48 @@ today_date=$(date "+%b %e" | sed 's/ / /') # e.g. "Mar 17" if ! echo "$newest_cgi" | grep -q "$(date '+%b')" 2>/dev/null; then log "WARNING: CGIs in cgi-bin-beta may not have been updated today. Check manually." fi fi # Run robots in background (takes 6+ hours, wiki says don't wait) log "Starting doRobots.csh (runs for 6+ hours in background)..." local robotlog="$LOGDIR/v${BRANCHNN}.robots.log" if ! $DRY_RUN; then nohup /bin/tcsh -c "source $BUILDENV && cd $WEEKLYBLD && ./doRobots.csh >& $robotlog" & local robot_pid=$! log "doRobots.csh started in background (PID $robot_pid). Log: $robotlog" fi - # Docker testing image build - log "Building testing Docker images..." - ensure_binfmt + # Build the beta image locally on hgwdev; do NOT push to Docker Hub. + # kent-beta runs from this image and is torn down again on do_wrapup. + # refs #37655 (replaces the former genomebrowser/server:testing push) + log "Building local beta Docker image kent:beta (for v${BRANCHNN})..." local dockerdir dockerdir="$BUILDHOME/v${BRANCHNN}_branch/kent/src/product/installer/docker" if [[ -d "$dockerdir" ]]; then - local dockerlog="$LOGDIR/v${BRANCHNN}.docker-testing.log" - # refs #37350: rm stale local manifest before create, drop --amend to prevent digest accumulation - run_tcsh "cd $dockerdir && setenv stage testing && docker build --no-cache --platform linux/amd64 -t genomebrowser/server:\${stage}-amd64 . && docker push genomebrowser/server:\${stage}-amd64 && docker build --no-cache --platform linux/arm64 -t genomebrowser/server:\${stage}-arm64 . && docker push genomebrowser/server:\${stage}-arm64 && docker manifest rm genomebrowser/server:\${stage} >& /dev/null ; docker manifest create genomebrowser/server:\${stage} genomebrowser/server:\${stage}-amd64 genomebrowser/server:\${stage}-arm64 && docker manifest push genomebrowser/server:\${stage}" >& "$dockerlog" || { - log "WARNING: Docker testing build had issues. See $dockerlog (non-fatal, continuing)" + local dockerlog="$LOGDIR/v${BRANCHNN}.docker-beta.log" + # amd64 only: the container only runs on hgwdev (amd64) and is never + # pushed, so no arm64 build, no manifest, no binfmt. + run_tcsh "cd $dockerdir && docker build --no-cache --platform linux/amd64 -t kent:beta ." >& "$dockerlog" || { + log "WARNING: kent:beta build had issues. See $dockerlog (non-fatal, continuing)" } - log "Docker testing build complete (or skipped on error)." + log "Refreshing local kent-beta container..." + run "$WEEKLYBLD/refresh-instance.sh" beta || \ + log "WARNING: kent-beta refresh failed; container may be stale" else - log "WARNING: Docker directory not found at $dockerdir - skipping Docker build" + log "WARNING: Docker directory not found at $dockerdir - skipping beta build" fi log "Final Build complete. Robots running in background." log "Next steps: QA tests on hgwbeta, then cherry-picks as needed, then push." } ############################################################################## # Generate markdown release notes from the versions page ############################################################################## generate_release_markdown() { local ver="$1" local outdir="$WEEKLYBLD/markdownReleaseNotes" local outfile="$outdir/v${ver}_markdown.txt" local url="https://genecats.gi.ucsc.edu/builds/versions-all/v${ver}.html" @@ -597,30 +601,39 @@ # Step 7: Build release Docker images log "Building release Docker images..." ensure_binfmt local dockerdir="$BUILDHOME/v${BRANCHNN}_branch/kent/src/product/installer/docker" if [[ -d "$dockerdir" ]]; then local dockerlog="$LOGDIR/v${BRANCHNN}.docker-release.log" # refs #37350: rm stale local manifest before create, drop --amend to prevent digest accumulation run_tcsh "cd $dockerdir && setenv stage v${BRANCHNN} && docker build --no-cache --platform linux/amd64 -t genomebrowser/server:\${stage}-amd64 . && docker push genomebrowser/server:\${stage}-amd64 && docker build --no-cache --platform linux/arm64 -t genomebrowser/server:\${stage}-arm64 . && docker push genomebrowser/server:\${stage}-arm64 && docker manifest rm genomebrowser/server:\${stage} >& /dev/null ; docker manifest create genomebrowser/server:\${stage} genomebrowser/server:\${stage}-amd64 genomebrowser/server:\${stage}-arm64 && docker manifest push genomebrowser/server:\${stage} && docker manifest rm genomebrowser/server:latest >& /dev/null ; docker manifest create genomebrowser/server:latest genomebrowser/server:\${stage}-amd64 genomebrowser/server:\${stage}-arm64 && docker manifest push genomebrowser/server:latest" >& "$dockerlog" || { log "WARNING: Docker release build had issues. See $dockerlog (non-fatal)" } log "Docker release build complete." else log "WARNING: Docker directory not found - skipping Docker release build" fi + # Refresh kent-rel against the just-pushed release image, then tear down + # the beta container/image now that v${BRANCHNN} has shipped. refs #37655 + log "Refreshing local kent-rel container..." + run "$WEEKLYBLD/refresh-instance.sh" rel || \ + log "WARNING: kent-rel refresh failed; container may be stale" + log "Removing local kent-beta container and image (v${BRANCHNN} has shipped)..." + run "$WEEKLYBLD/remove-instance.sh" beta || \ + log "WARNING: kent-beta teardown failed; check container/image manually" + # Step 8: Generate markdown release notes for GitHub if ! $DRY_RUN; then generate_release_markdown "$BRANCHNN" fi log "Wrap-up complete for v${BRANCHNN}." log "Manual steps remaining:" log " - Push to genome browser store: sudo /cluster/bin/scripts/gbib_gbic_push" log " - Create GitHub release at https://github.com/ucscGenomeBrowser/kent/releases/new" log " Release notes: $WEEKLYBLD/markdownReleaseNotes/v${BRANCHNN}_markdown.txt" log " - Wait 1 day for nightly rsync, then verify hgdownload: https://hgdownload.soe.ucsc.edu/admin/exe/" log " - Send mirror announcement email to genome-mirror@soe.ucsc.edu" } ##############################################################################