-
Notifications
You must be signed in to change notification settings - Fork 248
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
User contributable container features #8
Comments
These are good. Recent discussions bring a couple more to mind:
There's also a few others that we can probably create separate proposals for (I think):
That said, embedding metadata could be our answer to the double run issue and would reduce the duplicate info in separate devcontainer.json files for pre-build verses run - so that could end up being the proposed solution for these. |
Order of how the tooling installs a feature should be documented (right now it's "no obvious order"). We've talked about this before and perhaps should discuss again if this is something we want to enforce in some layer (whether it be the tooling, the declaration in the .json file, not at all?) |
When the order doesn't matter, we could use it to improve performance, e.g., when adding a feature, we could try to leverage the cached image from a previous build containing all but the added feature and build a new image containing the feature from that. |
One other one I just remembered is unique names for volumes. This is useful for devcontaienr.json, but is a bit of a must-have for features given you can't change the volume name. (This is microsoft/vscode-remote-release#5679) |
Good point |
updated the issue description with additional goals |
I raised #10 and referenced the question on multi-container setup for features there - which also covers the embedded idea. |
For volumes, what about adding a new variable type? I.e. along with things like Then the volume spec in a feature could be something like: "mounts" : [
{
"source":"${devcontainer:name}-dind-var-lib-docker",
"target":"/var/lib/docker",
"type":"volume"
}
] |
The user might not be aware of the devcontainer name being used for the volume name. We could use something like the image name we compute from the local folder path. (Related: microsoft/vscode-remote-release#5679.) |
@chrmarti - that sounds good to me :-) It would have the unique-per-dev-container property and also be resilient to name changes 👍 |
Split #16 into its own issue, as I think it will need additional discussion. |
Not sure if this was discussed already but I am looking for ability to install specific version of extensions within the features. For example, I created a Azure Bicep feature that is capable of installing a specified version of the CLI. However, there is no capability (either in devcontainer-features.json or devcontainer.json) to specify a version of the extension. Azure Bicep CLI and VS Code extension go hand in hand. So, it is important that we match those versions. I tried downloading the VSIX and then extracting it to the VSCode Server folder but that did not work. May be this is something we can consider as a change in general? |
@rchaganti Would it make sense for the extension to support multiple CLI versions? When a user installs the extension from the marketplace they always get the latest version independently of which version of the CLI they have installed. |
Broke this particular bit out into a separate proposal (#19). |
@chrmarti Yes it is possible that an extension may support any previous versions of CLI for backward compatibility. At the same time, there may be breaking changes in an updated version of the extension that no longer work with a previous version of CLI. |
I was trying to make a "common-amzn" feature using an include like this below. But seems this did not work as expected. Did I do something wrong or is this bullet meant to address a feature like this working in the future? See error I got below which suggested I got the {
"id": "common-amzn",
"name": "Install common tools for Amazon Linux 2",
"include": ["amzn"]
}
|
Should this be locked down to Debian? Worth a pull request? https://github.com/microsoft/vscode-dev-containers/blob/main/script-library/container-features/src/install.sh#L7 |
@metaskills Today, all of the This operating system check is done against whatever base image the devcontainer is trying to install features on top of. Also, the "include" in this case is referring to the set of images we publish (mapping to the sub-directories here, and act only as hints for the Remote-Containers UX. You can omit "include" for your purposes (@chrmarti, we should look into removing/updating includes and exclude?) What is the output of your |
Yes, but I had to use
Using AWS Lambda images which comes in runtime/build variants. An example would be
|
FYI, I've had to resort to executing a shell script and copied |
Given there is now a dev container features proposal, I'd propose we close this out in favor of other issues. I think we can raise one tracking feedback on the current proposal -- this is a bit of a task list instead. Any objections? The architecture and OS point we've got captured as #58 - totally think that makes sense. |
Makes sense to me! |
Yeah I think it can be closed because of that one and this one that still needs to be discussed: |
Opened #61 as a spot for comments and also mentioned other existing issues spawned out of the core proposal. |
Collecting the remaining tasks here.
Required for "self-hosting" built-in features:
Required for finalizing the devcontainer-features.json:
buildArg
.features
: Dependency Management #16- How do we handle an inevitable dependency graph?
- eg 1: In the kitchensink image, we'll perhaps want to install node 14 and node 16. How do we specify "installing a feature twice", which one ends up on the $PATH, etc...
- eg 2: Installing two features, where the installation of A depends on installation of B (JupyterLabs and python).
User easy-of-adoptability
Related: #7
/cc @2percentsilk @bamurtaugh
The text was updated successfully, but these errors were encountered: