GMOD / jbrowse-components

Source code for JBrowse 2, a modern React-based genome browser
https://jbrowse.org/jb2
Apache License 2.0
208 stars 62 forks source link

Building against develop branch? #2714

Open bbimber opened 2 years ago

bbimber commented 2 years ago

Hello,

We have a complex project that depends on jbrowse as an npm dependency. JBrowse is a rapidly evolving project, and I'm trying to work through how to better manage jbrowse version changes. Because some of the time we might also develop a patch to JBrowse, being able to build our code against a jbrowse fork would be convenient too.

Do you know if it is possible for our package.json to point directly to the develop branch of JBrowse on github? In theory package.json support git+XXXX syntax; however, I'm not sure about subfolders in a monorepo. We can give this a try, but I thought I'd check if this has already been tried from your group.

The point of this idea is that we'd have a branch of our project that always builds off JBrowse's main branch and runs our selenium tests. This should hopefully proactively identify breaks or changes.

As I write this, another idea might be if JBrowse could publish a nightly (or some schedule) 'dev' build with a static URL. We and others could point to that package to test upgrades.

Thanks for any ideas.

cmdcolin commented 2 years ago

Some challenges with our repo include that we

(a) have many packages that comprise jbrowse 2, so in order to properly build against a development branch, you have to link against all of the ones that you care about (which is probably at least @jbrowse/core, @jbrowse/react-linear-genome-view, and many @jbrowse/plugin modules like @jbrowse/plugin-alignments, @jbrowse/plugin-linear-genome-view, etc). (b) are not well setup for doing yarn link'ing

There is definitely more than one way to do it but a method that I have used was here https://github.com/GMOD/jb2export/blob/master/setup_node_modules.sh

I build the repo, and then I copy the files into my node_modules folder (similar thing could be done with e.g. yarn link but see (b) for this, yarn link doesn't work great)

cmdcolin commented 2 years ago

Basically you can clone a fresh main branch of jbrowse-components in your CI and run something like setup_node_modules in your repo

cmdcolin commented 2 years ago

Also, I do apologize for any weirdness you've seen so far also, hope to keep things stable and reliable!

bbimber commented 2 years ago

@hextraza Let's discuss this script. Thinking aloud: if the primary scenario we want to support is headless CI, or perhaps the scenario where we want to build our local LK instance using a fork or branch form JBrowse, I wonder if we could have an npm task that stages all the JBrowse code locally and builds it. Perhaps then our package.json could point to these local artifacts, rather than github?

garrettjstevens commented 2 years ago

Another option could be to use a fork of jbrowse-components and publish the packages to your own private package registry for internal use (see the --registry option in lerna, which is what we use to publish).

bbimber commented 2 years ago

Thanks, we were actually just talking about this option. It does seem like maybe that would be the easiest.