Skip to content

Release from dev: Annotate and Home tabs rebuilt on the hypeR-native client, staging tooling, React app removed #154

Closed

Description

@Cvicnaire

Release checklist for the next dev -> master pull request. Paired with montilab/SigRepo release issue montilab/SigRepo#267 (the client one). The two release pull requests merge in the same window, and production rebuilds its image once, after both are in. See the client issue for why the coupling runs both ways; in one line: server dev calls seven client functions that only exist on client dev, and client dev's runHypeR() breaks the run_enrichment MCP tool that server master still ships.

Staging is montilab.bu.edu running montilab/sigrepo:dev; every box below is ticked there unless it says otherwise.

Depends on the client release

  • Rebuild the Shiny Annotate tab on SigRepo::runHypeR() and open it #148 Shiny Annotate tab rebuilt on SigRepo::runHypeR(). On staging, run LLFS_Aging_Gene_2023 (uploaded as .rds; it is not a repository signature there) with hypergeometric, kstest and fgsea against MSigDB Hallmarks: results table, dot plot, enrichment plot, Excel export all work; the generated R script shown in the tab reproduces the call. Run a mouse signature with the Organism control set to Mus musculus: it runs; with it left at Homo sapiens, readiness blocks the run naming the mismatch (the behaviour agreed on 2026-09-16; a signature-driven default is a follow-up, not part of this release). The MSigDB cache is read from data/msigdb_genesets/ in the bind-mounted checkout, and startup does not warn "MSigDB cache file was not found".
  • Restyle the Shiny Home tab to match the retired React dashboard #153 Shiny Home tab restyled to match the retired React dashboard. Counts on the Home tab equal SELECT COUNT(*) on the staging database for signatures, collections and organisms; links from the tiles land on the right tabs.
  • Withdraw the MCP run_enrichment tool until it is rebuilt on the new runHypeR() #139 MCP run_enrichment withdrawn. The MCP tool list has no run_enrichment; rummagene_enrich, search_signatures, compare_signatures still answer. This is the change that makes the client release safe for production.

Staging and build tooling (server-only)

Removals

Process and CI

Release steps

  • Open the release PR dev -> master with this checklist copied into the body. No Closes lines.
  • Merge together with the client release PR (Release 1.1.0 from dev: hypeR-native client, searchExternal(), LINCS script writer SigRepo#267); production must not rebuild between the two merges.
  • Rebuild (done: :latest pushed 2026-10-14 16:29 UTC with client master 6c3b7d2 = v1.1.0) and deploy montilab/sigrepo:latest on the DigitalOcean host (pull only; pushes come from the Mac). Confirm packageDescription("SigRepo")$Version is 1.1.0 and packageDescription("OmicSignature")$Version is 1.4.1 inside the production API container.
  • Run the API smoke test and the Shiny sign-in check against sigrepo.org.
  • Merge master back into dev the same day.
  • Close montilab/SigRepo idea Stop leaked DB pools from hanging testServer() output reads #82 by hand if the client release did not.

Out of this release

  • Nothing on dev is excluded. A failed box becomes a bug issue linked here; this issue carries blocked until it closes.

Activity

  1. added
    enhancementNew feature or request
    readyStatus: next step is stated; anyone could pick it up.
    on Oct 7, 2026
  2. Cvicnaire commented on Oct 13, 2026

    @Cvicnaire
    CollaboratorAuthor

    Validation pass, 2026-10-13 against montilab: both checkouts at dev HEAD (server e02aff8, client 76a78c5), SIGREPO_IMAGE_TAG=dev, today's 12:04 deploy log for the pull and the API smoke test, the Shiny checks through the tunnel with chromote.

    Ticked

    Already ticked, re-checked

    Not ticked

    For the release steps

    • dev → master merges clean (git merge-tree); the client release PR does not (NEWS.md), see Release 1.1.0 from dev: hypeR-native client, searchExternal(), LINCS script writer SigRepo#267.
    • Rollback baseline on the droplet: /SigRepo_Server at c24c6ee (master), image b65374fddca7, and the running API container already carries OmicSignature 1.4.1 with client master 80e36475. docker-compose-vm.yml changes in this release (sigrepo-web removed), so the deploy is a pull plus up with the new file, and sigrepo-web becomes an orphan to remove. The droplet had 346 MB available at the time of checking, so recreate the services one at a time.
    • A server master merge rebuilds :latest with whatever client master is at that moment, and a client master merge triggers nothing, so merge the client first, or run workflow_dispatch on master after both are in.
  3. Cvicnaire commented on Oct 14, 2026

    @Cvicnaire
    CollaboratorAuthor

    #151 (schema migration runner) is left out of this release by Cameron's decision; it stays an open PR against dev and goes in a later release. Nothing in master..dev touches mysql/, so this release needs no migration step.

  4. Cvicnaire commented on Oct 14, 2026

    @Cvicnaire
    CollaboratorAuthor

    Release PR opened: #163 (dev -> master, checklist in the body). Note from montilab/SigRepo#267: the client's repository_dispatch from #241 is dropped by GitHub until this release puts the trigger on master, because dispatches go to the default branch's workflow. A manual workflow_dispatch on dev is building :dev now.

  5. Cvicnaire commented on Oct 14, 2026

    @Cvicnaire
    CollaboratorAuthor

    #143 reworded and ticked: 8051 is public on purpose as of 2026-10-14, Shiny's login is the gate, the other SigRepo ports stay on loopback. The containment allowance is #165 (--public-ports, into dev; it joins the release PR #163 when merged). The montilab deploy script in sigrepo-ops now passes the flag from SHINY_BIND and has been copied to the host, and ~/check_staging.sh there passes it too, so the next staging deploy should end green.

  6. Cvicnaire commented on Oct 14, 2026

    @Cvicnaire
    CollaboratorAuthor

    Released 2026-10-14. #163 merged into master at 16:07 UTC (merge commit f53606d; the README bot then added a2afda4), one minute after the client's #274, so no rebuild happened between the two merges. dev was fast-forwarded to master the same day.

    Image. montilab/sigrepo:latest was rebuilt twice by the two master pushes; the later build (run 38595697369) pushed at 16:29 UTC and bakes SIGREPO_BRANCH=master = SigRepo 1.1.0 at 6c3b7d2 (the v1.1.0 tag), OmicSignature 1.4.1 and hypeR 2.11.1, read from the build log.

    Staging dispatch now works. With the repository_dispatch trigger on master, the first client-triggered build ever ran here (run 38596663461, event repository_dispatch, fired by gh workflow run notify-staging-image.yml --ref dev on the client) and republished :dev at 16:36 UTC with the same client. The back-merge push itself did not dispatch because the client's notify workflow has a paths: filter and the merge commit changed no package file.

    Boxes. #148 reworded to what was built (Organism control with a mismatch guard, cache read from the bind-mounted checkout) and ticked from the 2026-10-13 validation. #151 struck through: out of this release by decision.

    Left for the production deploy (needs a shell on the droplet):

    cd /SigRepo_Server
    docker compose -f docker-compose-vm.yml pull sigrepo-api        # one image; mcp and shiny share it
    git pull
    docker rm -f sigrepo-web                                        # retired by #134, frees memory first
    docker compose -f docker-compose-vm.yml up -d sigrepo-api
    docker compose -f docker-compose-vm.yml up -d sigrepo-mcp
    docker compose -f docker-compose-vm.yml up -d sigrepo-shiny
    docker exec sigrepo-api Rscript -e 'cat(as.character(packageVersion("SigRepo")), as.character(packageVersion("OmicSignature")), "\n")'
    bash scripts/smoke_test.sh   # and scripts/smoke_test_ui.R, against sigrepo.org
    docker image prune -f        # drops the 2026-10-07 image

    One service at a time: the box had 373 MB available before the deploy. Then tick the last two boxes and close this issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestreadyStatus: next step is stated; anyone could pick it up.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions