The Wayback Machine - https://web.archive.org/web/20201110185545/https://github.com/docker/cli/pull/1902
Skip to content
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

[WIP] cli-plugins: look for plugins in experimental folder when experimental is enabled #1902

Open
wants to merge 2 commits into
base: master
from

Conversation

@tiborvass
Copy link
Contributor

@tiborvass tiborvass commented May 22, 2019

This is an alternative to #1898

Closes #1897 #1898

Related to docker/docker-ce-packaging#332

This patch expands the cli plugin search paths by adding -experimental to each,
only if the CLI has experimental mode enabled.

To test that experimental plugins do not work by default:

$ ln -s plugins-linux-amd64 build/plugins-linux-amd64-experimental
$ vim ~/.config/docker.json # add $(pwd)/build/plugins-linux-amd64 to "cliPluginsExtraDirs"
$ make plugins
$ make binary
$ docker helloworld

To show it enabled:

DOCKER_CLI_EXPERIMENTAL=enabled docker helloworld

Signed-off-by: Tibor Vass tibor@docker.com

@codecov-io
Copy link

@codecov-io codecov-io commented May 23, 2019

Codecov Report

Merging #1902 into master will decrease coverage by 0.02%.
The diff coverage is 32.35%.

@@            Coverage Diff             @@
##           master    #1902      +/-   ##
==========================================
- Coverage   56.75%   56.73%   -0.03%     
==========================================
  Files         309      309              
  Lines       21680    21701      +21     
==========================================
+ Hits        12305    12311       +6     
- Misses       8476     8489      +13     
- Partials      899      901       +2
Copy link
Contributor

@andrewhsu andrewhsu left a comment

LGTM

dirs := make([]string, len(pluginDirs), len(pluginDirs)*2)
copy(dirs, pluginDirs)
for _, dir := range dirs {
pluginDirs = append(pluginDirs, dir+"-experimental")

This comment has been minimized.

@ijc

ijc May 23, 2019
Contributor

This puts all experimental paths after all non-experimental paths, rather than interleving them, is that as intended?

IOW this is:

~/.docker/cli-plugins
/usr/local/lib/docker/cli-plugins
/usr/lib/docker/cli-plugins
~/.docker/cli-plugins-experimental
/usr/local/lib/docker/cli-plugins-experimental
/usr/lib/docker/cli-plugins-experimental

and not

~/.docker/cli-plugins
~/.docker/cli-plugins-experimental
/usr/local/lib/docker/cli-plugins
/usr/local/lib/docker/cli-plugins-experimental
/usr/lib/docker/cli-plugins
/usr/lib/docker/cli-plugins-experimental

I think it's deliberate but just wanted to check that the implications had been considered i.e. As a user I cannot now install an experimental update to something shipped in /usr/lib/docker/cli-plugins in my home dir.

This comment has been minimized.

@thaJeztah

thaJeztah May 23, 2019
Member

Was thinking about this; if someone installs both an "experimental" and "stable" version of a plugin; which one should take precedence?

This comment has been minimized.

@ijc

ijc May 23, 2019
Contributor

it should be precisely the first enabled plugin found in the search path, which is why the above distinction on the ordering might matter.

With the current layout I think there is no way to install an experimental version "over" an non-experimental one, other than by pretending it is non-experimental

This comment has been minimized.

@tiborvass

tiborvass May 23, 2019
Author Contributor

We could do either, I thought this was not only easier to implement, but also made more sense. But happy to change it.

}
t.Run(tc.name, func(t *testing.T) {
fmt.Println("toto", tc.c.Experimental())

This comment has been minimized.

@ijc

ijc May 23, 2019
Contributor

left over deubg?

Copy link
Contributor

@ijc ijc left a comment

Code looks ok, I left some minor comments/nits.

I think the stuff about e2e testing from #1902 (comment) applies to this variant applies here too but you were going to do that in a follow up so that's fine.

@thaJeztah thaJeztah changed the title cli-plugins: look for plugins in experimental folder when experimental is enabled [WIP] cli-plugins: look for plugins in experimental folder when experimental is enabled May 23, 2019
@thaJeztah
Copy link
Member

@thaJeztah thaJeztah commented May 23, 2019

I renamed this "WIP" for now; as there might be things to discuss w.r.t. Docker Desktop integration and some other concerns; lets do so on #1897

tiborvass added 2 commits May 22, 2019
…l is enabled

This patch expands the cli plugin search paths by adding `-experimental` to each,
only if the CLI has experimental mode enabled.

To test that experimental plugins do not work by default:
```
$ ln -s plugins-linux-amd64 build/plugins-linux-amd64-experimental
$ vim ~/.config/docker.json # add $(pwd)/build/plugins-linux-amd64 to "cliPluginsExtraDirs"
$ make plugins
$ make binary
$ docker helloworld
```

To show it enabled:
```
DOCKER_CLI_EXPERIMENTAL=enabled docker helloworld
```

Signed-off-by: Tibor Vass <tibor@docker.com>
Signed-off-by: Tibor Vass <tibor@docker.com>
@tiborvass tiborvass force-pushed the tiborvass:plugin_experimental2 branch from ca44e4b to e39aa2d May 23, 2019
@tiborvass
Copy link
Contributor Author

@tiborvass tiborvass commented May 23, 2019

@ijc Updated with fixes.

@tiborvass
Copy link
Contributor Author

@tiborvass tiborvass commented May 23, 2019

I can't retrigger validate, but validate passed locally for me.

@thaJeztah
Copy link
Member

@thaJeztah thaJeztah commented May 23, 2019

restarted CI (you can restart after connecting GitHub in the user-settings in CircleCI)

@thaJeztah
Copy link
Member

@thaJeztah thaJeztah commented May 23, 2019

closing as #1898 was merged

@thaJeztah thaJeztah closed this May 23, 2019
@tiborvass
Copy link
Contributor Author

@tiborvass tiborvass commented May 23, 2019

I'm reopening because I thought this was still desired.

@tiborvass tiborvass reopened this May 23, 2019
@ijc
Copy link
Contributor

@ijc ijc commented May 24, 2019

I'm reopening because I thought this was still desired.

Yeah, I was about to say I don't think the two approaches need to be mutually exclusive...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

7 participants
You can’t perform that action at this time.