Skip to content
The WormBase web application and external model
HTML JavaScript Perl CSS Perl 6 PHP Other
Branch: staging
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.ebextensions update volume snapshot for WS273 Oct 18, 2019
build migrating from subversion to mercurial Apr 16, 2009
client fix literature parameter for textpresso Nov 11, 2019
conf update release number Oct 8, 2019
credentials @ f1cab06 use new omim credential in submodule Apr 29, 2016
docker fix website container entrypoint Jul 3, 2019
docs update title Oct 31, 2019
githooks use yarn to speed up install to be called after git checkout Nov 16, 2017
lib use https for access couchdb subdomain Oct 11, 2019
logs fix nginx config causing errors Jun 28, 2019
metadata updated the metadata path Jul 1, 2014
proxy add additional container for upstream-proxy to avoid circular linking Jul 3, 2019
root fix reference widget when curated references is empty Nov 6, 2019
script defaults to prod when APP isn't set Apr 22, 2019
src/epcr * upgraded gbrowse to the newest version (hopefully no conflicts) Sep 9, 2013
t fix test cases due to gene description change May 16, 2019
util Updated URL base for SPELL. Jun 6, 2018
.dockerignore dockerignore utils/omin and conf/gbrowse Apr 22, 2019
.gitignore fix nginx config causing errors Jun 28, 2019
.gitmodules * added github integration for posts from the comment form Jul 25, 2012
ASSEMBLIES.WS251.json add the assemblies json for blast searches Jan 3, 2016
Changes migrating from subversion to mercurial Apr 16, 2009
CutyCapt add cutycapt Jan 21, 2011 release WS273.4 Nov 5, 2019
Makefile update config for eb to refer to new SSL certificate Oct 18, 2019
Makefile.PL include in Makefile.PL Module::Versions Jun 18, 2018 document on getting permission for botpot instance Nov 4, 2019 allow access keys to be used for development environment, such as loc… Aug 28, 2019 manage node_modules volume differently to avoid interference between … Aug 7, 2019
docker-compose.yml release WS273.4 Nov 5, 2019
gbrowse.psgi changing working directory to be consistent with hardcoded paths Apr 22, 2019 fix staging deployment without eb Jul 8, 2019 check in docker-compose.yml after modifying version Jun 28, 2019
wormbase-for-docker.psgi and wormbase-for-docker.psgi Apr 22, 2019
wormbase.conf update release number to 274 Nov 15, 2019
wormbase.env.template updated template Oct 12, 2011
wormbase.psgi for remove the PSGI_DEBUG_PANELS Jun 25, 2018
wormbase_local.conf.template update wormbase_local.conf.template about service URLs to configure Jun 22, 2018
wormbase_production.conf use https for access couchdb subdomain Oct 11, 2019
wormbase_staging.conf Revert "temporarily turn cache on staging" Nov 15, 2019

WormBase Website Repository

This repository contains the WormBase Web application.

The repository for WormBase Mobile can be found at WormBase/website-mobile

Technical Overview

The technical stack of WormBase website consits of:

Italic indicates services whose deployment are managed separately from what is in this repository.

For devOps, we use Docker, docker-compose, Jenkins, AWS Elastic Beanstalk.


Development environment can be setup easily, using a shared development machine and docker-compose.

For Legacy instructions that set up without docker or docker-compose, please visit the Manual Setup Guide.


  • Obtain access and login to the shared development instance, where data and legacy software are stored.

  • Ensure environment variable CATALYST_PORT and WEBPACK_SERVER_PORT are set.

  • Ensure /usr/local/bin/ is on your $PATH, as dependencies such as docker-compose and yarn are installed there.

To start your development stack:

make dev and wait for website/Catalyst and webpack(DevServer) to start.

To shutdown your development stack cleanly:

make dev-down

Development Environment Troubleshooting

make dev appears stuck

The first time that make dev runs, it takes longer due to installation of dependencies. Subsequent startup should take a few seconds.

The stdout is jumbled

The stdout of docker-compose combines the stdouts of the containers. To make it easier to read, stdout of individual containers can be accessed via SERVICE=[name_of_service] make console, where the name of service could be website, webpack, etc as found in docker-compose.yml and

docker-compose cli commands not taking effect

The Makefile exports user-specific environment variable COMPOSE_PROJECT_NAME to allow multiple instances of the development stack to run on the same machine. If you use docker-compose cli directly, please set COMPOSE_PROJECT_NAME accordingly to interact with your particular development instance.

Unable to connect to ACeDB

ACeDB container isn't started as part the development stack to reduce memory footprint. Instead, we rely on a shared acedb container, which is expected to run on the docker networked wb-network. If the shared acedb container is down, instructions to start the shared acedb container is found here.

Prettier git pre-commit hook doesn't trigger

JavaScript dependencies (such as prettier and husky) need to be installed on the host for code formatting and other git pre-commit hooks to work.

Compilation failure: You must configure a default store type unless you use exactly one store plugin.

This problem seems to show up occasionally, when I modify the wormbase_local.conf while the server is running. Try make dev-down and then make dev, and repeat a few times until the problem resolves itself.

Staging Environment

WormBase staging site is hosted on the shared development instance. Its deployment is automated, triggered by committing to the staging branch on Github.

Continuous integration for staging environment is handled by Jenkins. Jenkins runs the script to for deployment and testing. For detailed setup, please visit the Jenkins web console.

Production Environment

WormBase production site is hosted with AWS Elastic Beanstalk. For details about customizing the production deployment, please visit the WormBase Beanstalk Guide for Website.

Prepare for a website release

  • Change the WS release number in wormbase.conf, in particular, wormbase_release, rest_server, and search_server properties

  • Update the volume snapshot for the WS release here

  • Create the release branch, such as release/273

  • At the release branch:

    make release  # to build the assets (ie containers) required for deployment
    make eb-create  # to create and deploy to the pre-production environment
  • Login to the AWS Management Console, and navigate to Elastic Beanstalk, and then to the website Application.

    • Wait for the deployment to complete, and verify the pre-production environment is working
      • If ACeDB TreeView isn't working, which seems to be caused by a race condition between setting up the file system and starting ACeDB container, the problem can be fixed by re-deploying to the same environment make production-deploy.

Go live with a release

  • Login to the AWS Management Console, and navigate to Elastic Beanstalk, and then to the website Application.
    • Swap the URL between the pre-production environment and the current production environment
    • After making sure the new production environment is working, wait until the DNS TTL passes on Nginx before shutting down the previous production environment

Hotfix production environment

  • Grant permission to the instance by attaching the wb-catalyst-beanstalk-ec2-role.

  • Prior to applying the hotfix, ensure you are at the appropriate git branch for production.

  • Then run the following commands,

     VERSION=[GIT_TAG_TO_BE_CREATED] make release  # the tag should look like WS273.1
     make production-deploy

Production Deployment without AWS Beanstalk

For instances not managed by Beanstalk, deployment can be performed with:

  • Checkout the latest of the release branch, such as release/273

  • Ensure port 5000 is available, and run:

make production-deploy-no-eb


Our development workflow can be found here:

Todd Harris (



Thanks to BrowserStack for allowing us to perform interactive cross browser and cross OS testing.

You can’t perform that action at this time.