-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add support for Conda lock file #172
Comments
I've looked a bit more into the required commands to handle this. In a nutshell to create a lock file the following command should be executed after the
The To recreate the environment the following command should be used
Which is essentially the same command used to install from a recipe file, the only difference is that it uses a lock file instead of env (yaml) file. See |
Resuming this with a simplified approach. The build will be done using the classic Conda environment, Wave will only take care to store and report the corresponding lock file generated by micromamba using seqeralabs/libseqera#23. The conda lock file is going generated using this command:
Then Wave will save it to a S3 bucket and render in the build API response and page view. Conda lock files will stored and retried via a |
I can't tell you how happy this makes me @pditommaso :-) |
Summary
Wave allows the build of container images starting from Conda recipies.
It's going so by creating a Dockfile on-the-fly from the given Conda packages using Micromamba.
The problem of this solution is that the resulting containers are not replicable because the exact list of dependent packages resolved by Conda can change over time even if specific versions were provided. As result a container rebuilt with the same list of packages can have different package versions.
To solve this Conda lock file should be used. A lock file list the exact checksum each package that was resolved by Conda to create the required environment (and used by Wave to build the container).
A Conda lock file looks like the following
Goal
The goal of this issue is to use the Conda lock file to guarantee the reproducibility of containers built by Wave starting from a Conda recipe.
The general flow looks like the following:
Implementation
The Wave plugin is currently turning the Conda requirement into a Dockerfile and passing into via the containerFile attribute.
We need to modify this behaviour in a such a way that, when a nextflow process specify one or more Conda packages via a conda directive, like this; the requirement is turned into a Conda recipe file, like the one showed here.
The recipe file is then passed via the condaFile attribute.
By doing that is enough to create a checksum for the given
condaFile
content, and apply the strategy described in the Goal sectionThe text was updated successfully, but these errors were encountered: