This repository maintains the toolset for the https://usegalaxy.org Galaxy instance. Using this anyone can request installation of a new tool. Additionally this repository can be used to outfit your own Galaxy with the same toolset.
yamlfiles contain the names of Tool Shed tools/repositories to install and are manually curatedyaml.lockfiles are automatically generated and contain the list of revisions (read "tool versions") to include- All tools are automatically updated with the latest version periodically
- Use the provided
requirements.txtto install dependencies needed for themaketargets - The terms "tools" and "repositories" are used interchangeably in this readme. There is a difference, but it is not needed to be understood for using these scripts.
Anyone can request tool installation on usegalaxy.org or test.galaxyproject.org.
In the commands below fill the {server_name} as appropriate (usegalaxy.org, test.galaxyproject.org)
- Fork and clone usegalaxy-tools
- Create/activate a virtualenv and install Python requirements with
pip install -r requirements.txt - If this is a new a section without an existing yml file create a new one:
- Determine the desired section label
- Normalize the section label to an ID/filename with this process
- Create
{server_name}/<section_id>.ymlsettingtool_panel_section_labelfrom the section label obtained in previous step (see existing yml files for the exact syntax) - Continue with the steps below
- Add the entry for the new tool to the section yml (only the yml, not the yml.lock) example
- You either want the latest or a specific version
- For latest version (most common case):
- Run
$ make TOOLSET={server_name} fix(this will fill the yml.lock )
- Run
- For a specific version (rare case):
- Run
$ make TOOLSET={server_name} fix-no-deps - Edit the .yaml.lock to correct the version number.
- Run
- For latest version (most common case):
- Then
$ git add <file>only the updates that you care about. - Run
make TOOLSET={server_name} lint- Fix any issue that may arise and
git addagain
- Fix any issue that may arise and
- Commit
{server_name}/<repo>.yaml{.lock} - Create a PR against the
masterbranch of usegalaxy-tools- Use PR labels as appropriate
- To aid PR mergers, you can include information on tools in the repo's use of
$GALAXY_SLOTS, or even PR any needed update(s) to Main's job_conf.xml as explained in the "Determine tool requirements" section once the test installation (via Travis) succeeds (see details below)
- Once the PR is merged and the tool appears on usegalaxy.org or test.galaxyproject.org, test to ensure the tool works.
Add the following dependency resolver:
<conda prefix="/cvmfs/sandbox.galaxyproject.org/dependencies/conda" auto_install="False" auto_init="False" />preferably above your existing conda dependency resolver (you will need to set conda_auto_install: false in your galaxy.yml).
And add the new shed tool conf:
tool_config_file: ...,/cvmfs/sandbox.galaxyproject.org/config/shed_tool_conf.xmlIn your destination you should set:
<param id="singularity_enabled">true</param>
<param id="singularity_volumes">$defaults</param>
Before proceeding with deployment, ensure the following preconditions on a PR are met:
- Tools can only be installed on one "toolset" (Galaxy instance) at a time, i.e., PRs installing to both
test.galaxyproject.organdusegalaxy.orgwill fail. - Test loads both its own toolbox as well as Main's, so if the intent is to install a tool on both, it should simply be added to the
usegalaxy.orgtoolset. - Tools installed to Main must be installed from the Main Tool Shed. Do not install tools on Main from the Test Tool Shed.
- Do not install Data Managers on Test or Main, they are not usable on our CVMFS setup.
- IUC-maintained tools (this includes
devteamand some other repo owners) and other tools from trusted authors (e.g.bgruening) do not require independent review. Any other tool requires review from an experienced tool developer (which can be you, if you are one) to ensure there are no critical security, functionality, or performance bugs. These tools may also not have BioContainers available, which are required to function on Test and Main, unless the tool uses a<container>requirement to convert from Docker (not ideal). - Suites cannot be installed using their
suite_repo. Each repo in the suite must be added individually. - The
install_*_dependenciesoptions at the top of the.lockfiles should all remainfalse.
Once preconditions are met:
- Comment
@galaxybot test thisto test deployment. - Review the Jenkins test console output. Just because it is green does not mean it succeeded. You are looking for two things:
- #### contents of OverlayFS upper mount (will be published) contains (at least)
config/shed_tool_conf.xmlandshed_tools/.../the_repos_you_installed - #### diff of shed_tool_conf.xml contains the tools in the repos you installed
- #### contents of OverlayFS upper mount (will be published) contains (at least)
- Comment
galaxybot deploy thisto deploy. This will cause the default test on the PR to run again, and the details link for the test will be updated to a new Jenkins build. - Review the Jenkins deploy console output. Just because it is green does not mean it succeeded.
- Verify that the console output contains the same expected output as in the test deployment,
- Verify that publishing to CVMFS was successful with this appearing toward the end of the console output:
Warnings about
# Publishing transaction on main.galaxyproject.org Waiting for upload of files before committing... Committing file catalogs... Swissknife Sync: Wait for all uploads to finish Swissknife Sync: Exporting repository manifest Statistics stored at: /var/spool/cvmfs/main.galaxyproject.org/stats.db Tagging main.galaxyproject.org Swissknife Sync: Processing changes... Creating virtual snapshots Waiting for upload of files before committing... Committing file catalogs... Swissknife Sync: Wait for all uploads to finish Swissknife Sync: Exporting repository manifest Statistics stored at: /var/spool/cvmfs/main.galaxyproject.org/stats.db Flushing file system buffers Signing new manifest Remounting newly created repository revision[WARNING] 'shed_tools/.../.wh..opq' should be deleted, but was not found in repository.can be safely ignored.
- Merge the PR only after you have verified via Jenkins console output that the deployment succeeded. If it failed, the only way to retry deployment after merge is to make a new PR with whitespace/order changes in the
.lockfile(s) modified in the original PR. - If these are new tools and not just new versions of already installed tools, review whether the tool uses multiple cores (the presence of
${GALAXY_SLOTS:-N}in<command>) and whether increased memory is required and PR changes to the TPV config in https://github.com/galaxyproject/usegalaxy-playbook/
Only approved tool installers can install tools. Request Jenkins access and admission to the Github Team from project admins for approval.