intermine / intermine/bluegenes

Improve running Bluegenes from Gradle

Open
#575 1 comment 0 reactions 0 assignees View on GitHub
enhancement Estimate: Day(s)
Dominant language
Clojure
Stars
75
Forks
59
PR merge metrics
No merged PRs in 30d

Description

https://intermine.readthedocs.io/en/latest/system-requirements/software/gradle/?highlight=bluegenes#deploy-blue-genes will probably the most common way to run Bluegenes, so we should improve the experience of this.

- The JSP webapp works with `webapp.deploy.url` and `webapp.baseurl` set to http://mega3:8080 but Bluegenes won't be able to connect to this mine, as it doesn't resolve the full URL before passing it to the frontend (setting both properties to http://mega3.gen.private.cam.ac.uk:8080 is a current workaround).
- Bluegenes now require to be passed the mine namespace as well, in addition to the service root and mine name. Make sure these are passed from the properties file.
- We looked into creating a start/stop command before; I think this could be easily achievable if we run Bluegenes in Tomcat (https://github.com/ring-clojure/ring/wiki/Setup-for-production or https://github.com/marchrock/ring-tomcat-adapter or https://github.com/weavejester/lein-ring) instead of its own Jetty server, when running from Gradle.
- Mention in the documentation linked above that it will deploy Bluegenes to the same address as Intermine (without the path) on port 5000 (we should make this port configurable).
- Review the current documentation linked above, and update if necessary.

*Update: I'm reluctant to advice users to run Bluegenes with gradle. The only way to make this reliable (with start/stop) is by building a WAR file containing Bluegenes to deploy to Tomcat, which can be a bit of work to setup. I think using Jetty inside a docker container would be a decent modern approach.*

Decision:
- We will recommend docker (include example commands) for running Bluegenes in production, but still keep gradle for testing/trying out Bluegenes
- This means we should still fix the first two points above

Contributor guide

Open the contributing guide

Research direction

Start with the Gradle deployment path and the properties file referenced by the issue, then review the linked deployment documentation. Focus on resolving the mine URL before passing it to the frontend and passing the mine namespace alongside the service root and mine name. Done means the first two requirements work while Gradle remains documented for testing and Docker is recommended for production.

Written by the indexing model from the issue text.

Assessment

Tech stack
clojure, docker
Domain
devops, documentation
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.