conda / conda/constructor

Add more output formats (Docker, conda-pack)

Open
#730 2 comments 1 reaction 0 assignees View on GitHub
stale::recovered type::feature
Dominant language
Python
Stars
497
Forks
181
Avg merge
1d 16h
Merged PRs (30d)
17

Description

### Checklist

- [X] I added a descriptive title
- [X] I searched open requests and couldn't find a duplicate

### What is the idea?

`constructor` is able to generate installers for Linux, macOS, and Windows, using an array of formats (SH, PKG, EXE, respectively). However, there's nothing special about these "installers" they are just "artifacts" that "pack" a number of conda packages.

The idea here would be to teach constructor how to generate additional artifact formats, like:

- Docker containers via `conda-docker`
- Tarballs via `conda-pack`

### Why is this needed?

`constructor` would slowly become an interface for packaging and distributing conda environments. There is plenty of duplicated logic across this projects and we would benefit from a single maintenance hub for all of them. There are bits of `conda-pack` internals that would be lovely to have in `constructor`'s code (like the Environment abstraction).

### What should happen?

Users could just have a `construct.yml` like this:

```yaml
name: Scripts
version: X
# installer_type: all
artifacts:
- container # via conda-docker
- conda-pack
channels:
- http://repo.anaconda.com/pkgs/main/
specs:
- python
```

### Additional Context

This is the other side of https://github.com/conda/conda-pack/issues/294.

We could take a look and see how feasible this is. `constructor` was always built with the "installer" idea in mind, so some concepts in the config file and code base might be too coupled. In that case, a separate tool that encompasses all these usages with their nuances could be better welcome (e.g. `conda-bundle`).

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.