Name: dockstore
Owner: Global Alliance for Genomics and Health
Description: Our VM/Docker sharing infrastructure and management component
Created: 2015-04-03 21:34:05.0
Updated: 2017-12-05 12:28:29.0
Pushed: 2017-12-19 22:38:14.0
Homepage: https://dockstore.org/
Size: 14423
Language: Java
GitHub Committers
User | Most Recent Commit | # Commits |
---|
Other Committers
User | Most Recent Commit | # Commits |
---|
Dockstore provides a place for users to share tools encapsulated in Docker and described with the Common
Workflow Language (CWL) or WDL (Workflow Description Language). This enables scientists to share analytical
workflows so that they are machine readable as well as runnable in a variety of environments. While the
Dockstore is focused on serving researchers in the biosciences, the combination of Docker + CWL/WDL can be used by
anyone to describe the tools and services in their Docker images in a standardized, machine-readable way.
We hope to use this project as motivation to create a GA4GH API standard for container registries.
For the live site see dockstore.org
This repo contains the web service and CLI components for Dockstore as well as collecting documentation and the issues for the project as a whole. The usage of this is to enumerate the docker containers (from quay.io and hopefully docker hub) and the workflows (from github/bitbucket) that are available to users of Dockstore.org.
For the related web UI see the dockstore-ui project.
The following section is useful for users of Dockstore (e.g. those that want to browse, register, and launch tools).
After registering at dockstore.org, you will be able to download the Dockstore CLI at https://dockstore.org/onboarding
The CLI has the following dependencies
To install CWL tool:
pip install --user cwl-runner cwltool==1.0.20170828135420 schema-salad==2.6.20170806163416 avro==1.8.1 ruamel.yaml==0.14.12 requests==2.18.4
You may need other pip installable tools like typing
or setuptools
. This depends on your python environment.
A basic Dockstore configuration file is available/should be created in ~/.dockstore/config
and contains the following
at minimum:
n = <your generated by the dockstore site>
er-url = https://www.dockstore.org:8443
This keeps track of breaking changes when migrating from Dockstore 1.1 to beta releases of 1.2 on the client side.
s3://test.bucket/test
, icgc://1234-efg
, https://file.org/test.txt
. This means paths like icgc:1234-efg
will no longer work--local-entry
is no longer a flag, but is an alternative to --entry
.Unfortunately, new unique indexes enforcing better data consistency require a clean-up of unpublished workflows. Published content should remain unaffected.
te from workflow_workflowversion ww where ww.workflowid in (select id from workflow where ispublished='f');
te from workflow where ispublished='f';
By default, cwltool reads input files from the local filesystem. Dockstore also adds support for additional file systems such as http, https, and ftp. Through a plug-in system, Dockstore also supports the Amazon S3, Synapse, and ICGC Storage Client via plugins.
Download the above set of default plugins via:
store plugin download
Configuration for plugins can be placed inside the Dockstore configuration file in the following format
n = <your generated by the dockstore site>
er-url = https://www.dockstore.org:8443
tions below this are optional
cache = false #set this to true to cache input files for rapid development
e-dir = /home/<user>/.dockstore/cache #set this to determine where input files are cached (should be the same filesystem as your tool working directories)
kstore-file-synapse-plugin]
kstore-file-s3-plugin]
oint = #set this to point at a non AWS S3 endpoint
kstore-file-icgc-storage-client-plugin]
nt = /media/large_volume/icgc-storage-client-1.0.23/bin/icgc-storage-client
Additional plugins can be created by taking one of the repos in plugins as a model and using pf4j as a reference. See additional documentation for more details.
The following section is useful for Dockstore developers (e.g. those that want to improve or fix the Dockstore web service and UI)
The dependency environment for Dockstore is described by our
Travis-CI config. In addition to the dependencies for
Dockstore users, note the setup instructions for postgres. Specifically, you will need to have postgres installed
and setup with the database user specified in .travis.yml (ideally, postgres is need only for integration tests but not unit tests).
Additional, OpenAPI generation requires swagger2openapi installed with npm install -g swagger2openapi@2.11.16
.
If you maven build in the root directory this will build not only the web service but the client tool:
mvn clean install
# or
mvn clean install -Punit-tests
If you're running tests on Travis-CI (or otherwise have access to the confidential data bundle) Run them via:
mvn clean install -Pintegration-tests
There are also certain categories for tests that they can be added to when writing new tests. Categories include:
ToilOnlyTest
are tests that can only be run by Toil (which also installs a different version of cwltool)ToilCompatibleTest
are tests that can be run with our default cwltool and with ToilConfidentialTest
are tests that require access to our confidential testing bundle (ask a member of the development team if you're on the team)You can also run it on your local computer but will need to setup postgres separately.
java -jar dockstore-webservice/target/dockstore-webservice-*.jar server ~/.dockstore/dockstore.yml
The Swagger UI is reachable while the Dockstore webservice is running. This allows you to explore available web resources.
codestyle.xml defines the coding style for Dockstore as an IntelliJ Code Style XML file that should be imported into IntelliJ IDE.
We also have a matching checkstyle.xml that can be imported into other IDEs and is run during the build.
For users of Intellij or comparable IDEs, we also suggest loading the checkstyle.xml with a plugin in order to display warnings and errors while coding live rather than encountering them later when running a build.
The dockstore command line should be installed in a location in your path.
/dockstore-client/bin/dockstore
You then need to setup a ~/.dockstore/config
file with the following contents:
n: <dockstore_token_from_web_app>
er-url: http://www.dockstore.org:8080
If you are working with a custom-built or updated dockstore client you will need to update the jar in: ~/.dockstore/config/self-installs
.
We use the swagger-codegen-maven-plugin to generate several sections of code which are not checked in. These include
To update these, you will need to point at a new version of the swagger.yaml provided by a service. For example, update the equivalent of inputSpec in your branch.
This is for pre-release versions that have not been released to production.
mvn release:prepare
mvn release:perform
git checkout master; git merge <your tag here>
Special note: If a test is failing during perform, but did not fail during prepare or Travis-CI builds, you may have a non-deterministic error. Skip tests during a release with mvn release:perform -Darguments="-DskipTests"
After the release to Artifactory, document the release on GitHub via the Releases page. Take a look at commits since the last release and closed pull requests for information on what goes into the changelog. Also attach the newly created Dockstore script and shaded client jar.
This is for release versions that have been released to production.
mvn hf hotfix start <version>
mvn versions:set -DnewVersion=<version>-SNAPSHOT
mvn release:prepare
and mvn release:perform
mvn hf hotfix finish
As with the unstable release, document the release and attach the new Dockstore script and shaded client jar.
Encrypted documents necessary for confidential testing are handled as indicated in the documents at Travis-CI for
files and environment variables.
A convenience script is provided as encrypt.sh which will compress confidential files, encrypt them, and then update an encrypted archive on GitHub. Confidential files should also be added to .gitignore to prevent accidental check-in. The unencrypted secrets.tar should be privately distributed among members of the team that need to work with confidential data. When using this script you will likely want to alter the CUSTOM_DIR_NAME. This is necessary since running the script will overwrite the existing encryption keys, instantly breaking existing builds using that key. Our current workaround is to use a new directory when providing a new bundle.
To add copyright headers to all files with IntelliJ
Additional documentation on developing Dockstore is available at legacy.md