1
0
mirror of https://github.com/moby/moby.git synced 2025-04-18 20:44:11 +03:00

Merge pull request #49677 from vvoland/integration-cli-bump-cli

integration-cli: Update default CLI version to v18.06.3-ce
This commit is contained in:
Paweł Gronowski 2025-04-11 10:32:36 +00:00 committed by GitHub
commit fb2983ab0d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 54 additions and 34 deletions

View File

@ -13,7 +13,7 @@ ARG DOCKERCLI_REPOSITORY="https://github.com/docker/cli.git"
# cli version used for integration-cli tests
ARG DOCKERCLI_INTEGRATION_REPOSITORY="https://github.com/docker/cli.git"
ARG DOCKERCLI_INTEGRATION_VERSION=v17.06.2-ce
ARG DOCKERCLI_INTEGRATION_VERSION=v18.06.3-ce
# BUILDX_VERSION is the version of buildx to install in the dev container.
ARG BUILDX_VERSION=0.20.1
ARG COMPOSE_VERSION=v2.33.1

View File

@ -1,7 +1,7 @@
#!/bin/sh
: ${DOCKERCLI_CHANNEL:=stable}
: ${DOCKERCLI_VERSION:=17.06.2-ce}
: ${DOCKERCLI_VERSION:=18.06.3-ce}
install_dockercli() {
echo "Install docker/cli version $DOCKERCLI_VERSION from $DOCKERCLI_CHANNEL"

View File

@ -6256,7 +6256,7 @@ func (s *DockerCLIBuildSuite) TestBuildEmitsEvents(t *testing.T) {
"--since", before.Format(time.RFC3339),
),
cli.WithTimeout(time.Millisecond*300),
cli.WithEnvironmentVariables("DOCKER_API_VERSION=v1.46"), // FIXME(thaJeztah): integration-cli runs docker CLI 17.06; we're "upgrading" the API version to a version it doesn't support here ;)
cli.WithEnvironmentVariables("DOCKER_API_VERSION=v1.46"), // FIXME(thaJeztah): integration-cli runs docker CLI 18.06; we're "upgrading" the API version to a version it doesn't support here ;)
)
stdout := cmd.Stdout()

View File

@ -19,6 +19,7 @@ import (
"github.com/cloudflare/cfssl/helpers"
"github.com/docker/docker/api/types/swarm"
"github.com/docker/docker/api/types/versions"
"github.com/docker/docker/integration-cli/checker"
"github.com/docker/docker/integration-cli/cli"
"github.com/docker/docker/integration-cli/daemon"
@ -51,15 +52,15 @@ func (s *DockerSwarmSuite) TestSwarmUpdate(c *testing.T) {
assert.NilError(c, err, out)
spec := getSpec()
assert.Equal(c, spec.CAConfig.NodeCertExpiry, 30*time.Hour)
assert.Equal(c, spec.Dispatcher.HeartbeatPeriod, 11*time.Second)
assert.Check(c, is.Equal(spec.CAConfig.NodeCertExpiry, 30*time.Hour))
assert.Check(c, is.Equal(spec.Dispatcher.HeartbeatPeriod, 11*time.Second))
// setting anything under 30m for cert-expiry is not allowed
out, err = d.Cmd("swarm", "update", "--cert-expiry", "15m")
assert.ErrorContains(c, err, "")
assert.Assert(c, is.Contains(out, "minimum certificate expiry time"))
spec = getSpec()
assert.Equal(c, spec.CAConfig.NodeCertExpiry, 30*time.Hour)
assert.Check(c, is.Equal(spec.CAConfig.NodeCertExpiry, 30*time.Hour))
// passing an external CA (this is without starting a root rotation) does not fail
cli.Docker(cli.Args("swarm", "update", "--external-ca", "protocol=cfssl,url=https://something.org",
@ -69,10 +70,18 @@ func (s *DockerSwarmSuite) TestSwarmUpdate(c *testing.T) {
expected, err := os.ReadFile("fixtures/https/ca.pem")
assert.NilError(c, err)
spec = getSpec()
assert.Equal(c, len(spec.CAConfig.ExternalCAs), 2)
assert.Equal(c, spec.CAConfig.ExternalCAs[0].CACert, "")
assert.Equal(c, spec.CAConfig.ExternalCAs[1].CACert, string(expected))
version := cli.Docker(cli.Args("version", "--format", "{{ .Client.Version }}"), cli.Daemon(d)).Stdout()
version = strings.TrimSpace(version)
// This was broken in v18.06
// See: https://github.com/docker/cli/pull/5995
if version != "" && versions.LessThan(version, "18.06") {
spec = getSpec()
sw := d.GetSwarm(c)
if assert.Check(c, is.Len(spec.CAConfig.ExternalCAs, 2)) {
assert.Check(c, is.Equal(spec.CAConfig.ExternalCAs[0].CACert, sw.TLSInfo.TrustRoot))
assert.Check(c, is.Equal(spec.CAConfig.ExternalCAs[1].CACert, string(expected)))
}
}
// passing an invalid external CA fails
tempFile := fs.NewFile(c, "testfile", fs.WithContent("fakecert"))
@ -117,18 +126,29 @@ func (s *DockerSwarmSuite) TestSwarmInit(c *testing.T) {
assert.NilError(c, err)
spec := getSpec()
assert.Equal(c, spec.CAConfig.NodeCertExpiry, 30*time.Hour)
assert.Equal(c, spec.Dispatcher.HeartbeatPeriod, 11*time.Second)
assert.Equal(c, len(spec.CAConfig.ExternalCAs), 2)
assert.Equal(c, spec.CAConfig.ExternalCAs[0].CACert, "")
assert.Equal(c, spec.CAConfig.ExternalCAs[1].CACert, string(expected))
assert.Check(c, is.Equal(spec.CAConfig.NodeCertExpiry, 30*time.Hour))
assert.Check(c, is.Equal(spec.Dispatcher.HeartbeatPeriod, 11*time.Second))
version := cli.Docker(cli.Args("version", "--format", "{{ .Client.Version }}"), cli.Daemon(d)).Stdout()
version = strings.TrimSpace(version)
// This was broken in v18.06
// See: https://github.com/docker/cli/pull/5995
if version != "" && versions.LessThan(version, "18.06") {
if assert.Check(c, is.Len(spec.CAConfig.ExternalCAs, 2)) {
// TODO: Should this actually be:
// assert.Check(c, is.Equal(spec.CAConfig.ExternalCAs[0].CACert, sw.TLSInfo.TrustRoot))
assert.Check(c, is.Equal(spec.CAConfig.ExternalCAs[0].CACert, ""))
assert.Check(c, is.Equal(spec.CAConfig.ExternalCAs[1].CACert, string(expected)))
}
}
assert.NilError(c, d.SwarmLeave(ctx, c, true))
cli.Docker(cli.Args("swarm", "init"), cli.Daemon(d)).Assert(c, icmd.Success)
spec = getSpec()
assert.Equal(c, spec.CAConfig.NodeCertExpiry, 90*24*time.Hour)
assert.Equal(c, spec.Dispatcher.HeartbeatPeriod, 5*time.Second)
assert.Check(c, is.Equal(spec.CAConfig.NodeCertExpiry, 90*24*time.Hour))
assert.Check(c, is.Equal(spec.Dispatcher.HeartbeatPeriod, 5*time.Second))
}
func (s *DockerSwarmSuite) TestSwarmInitIPv6(c *testing.T) {
@ -176,7 +196,7 @@ func (s *DockerSwarmSuite) TestSwarmServiceTemplatingHostname(c *testing.T) {
ctx := testutil.GetContext(c)
d := s.AddDaemon(ctx, c, true, true)
hostname, err := d.Cmd("node", "inspect", "--format", "{{.Description.Hostname}}", "self")
assert.Assert(c, err == nil, hostname)
assert.NilError(c, err, hostname)
out, err := d.Cmd("service", "create", "--detach", "--no-resolve-image", "--name", "test", "--hostname", "{{.Service.Name}}-{{.Task.Slot}}-{{.Node.Hostname}}", "busybox", "top")
assert.NilError(c, err, out)
@ -216,19 +236,19 @@ func (s *DockerSwarmSuite) TestSwarmServiceListFilter(c *testing.T) {
// We search checker.Contains with `name+" "` to prevent prefix only.
out, err = d.Cmd("service", "ls", "--filter", filter1)
assert.NilError(c, err, out)
assert.Assert(c, strings.Contains(out, name1+" "), out)
assert.Assert(c, !strings.Contains(out, name2+" "), out)
assert.Assert(c, !strings.Contains(out, name3+" "), out)
assert.Check(c, is.Contains(out, name1+" "))
assert.Check(c, !strings.Contains(out, name2+" "), out)
assert.Check(c, !strings.Contains(out, name3+" "), out)
out, err = d.Cmd("service", "ls", "--filter", filter2)
assert.NilError(c, err, out)
assert.Assert(c, strings.Contains(out, name1+" "), out)
assert.Assert(c, strings.Contains(out, name2+" "), out)
assert.Assert(c, !strings.Contains(out, name3+" "), out)
assert.Check(c, is.Contains(out, name1+" "))
assert.Check(c, is.Contains(out, name2+" "))
assert.Check(c, !strings.Contains(out, name3+" "))
out, err = d.Cmd("service", "ls")
assert.NilError(c, err, out)
assert.Assert(c, strings.Contains(out, name1+" "), out)
assert.Assert(c, strings.Contains(out, name2+" "), out)
assert.Assert(c, strings.Contains(out, name3+" "), out)
assert.Check(c, is.Contains(out, name1+" "))
assert.Check(c, is.Contains(out, name2+" "))
assert.Check(c, is.Contains(out, name3+" "))
}
func (s *DockerSwarmSuite) TestSwarmNodeListFilter(c *testing.T) {
@ -244,7 +264,7 @@ func (s *DockerSwarmSuite) TestSwarmNodeListFilter(c *testing.T) {
out, err = d.Cmd("node", "ls", "--filter", filter)
assert.NilError(c, err, out)
assert.Assert(c, strings.Contains(out, name), out)
assert.Assert(c, is.Contains(out, name))
out, err = d.Cmd("node", "ls", "--filter", "name=none")
assert.NilError(c, err, out)
assert.Assert(c, !strings.Contains(out, name), out)
@ -266,9 +286,9 @@ func (s *DockerSwarmSuite) TestSwarmNodeTaskListFilter(c *testing.T) {
out, err = d.Cmd("node", "ps", "--filter", filter, "self")
assert.NilError(c, err, out)
assert.Assert(c, strings.Contains(out, name+".1"), out)
assert.Assert(c, strings.Contains(out, name+".2"), out)
assert.Assert(c, strings.Contains(out, name+".3"), out)
assert.Check(c, is.Contains(out, name+".1"))
assert.Check(c, is.Contains(out, name+".2"))
assert.Check(c, is.Contains(out, name+".3"))
out, err = d.Cmd("node", "ps", "--filter", "name=none", "self")
assert.NilError(c, err, out)
assert.Assert(c, !strings.Contains(out, name+".1"), out)
@ -295,13 +315,13 @@ func (s *DockerSwarmSuite) TestSwarmPublishAdd(c *testing.T) {
assert.NilError(c, err, out)
_, err = d.CmdRetryOutOfSequence("service", "update", "--detach", "--publish-add", "80:80", "--publish-add", "80:20", name)
assert.ErrorContains(c, err, "")
assert.Check(c, is.ErrorContains(err, ""))
// this last command does not have to be retried because service inspect
// does not return out of sequence errors.
out, err = d.Cmd("service", "inspect", "--format", "{{ .Spec.EndpointSpec.Ports }}", name)
assert.NilError(c, err, out)
assert.Equal(c, strings.TrimSpace(out), "[{ tcp 80 80 ingress}]")
assert.Check(c, is.Equal(strings.TrimSpace(out), "[{ tcp 80 80 ingress}]"))
}
func (s *DockerSwarmSuite) TestSwarmServiceWithGroup(c *testing.T) {
@ -324,7 +344,7 @@ func (s *DockerSwarmSuite) TestSwarmServiceWithGroup(c *testing.T) {
out, err = d.Cmd("exec", container, "id")
assert.NilError(c, err, out)
assert.Equal(c, strings.TrimSpace(out), "uid=0(root) gid=0(root) groups=0(root),10(wheel),29(audio),50(staff),777")
assert.Check(c, is.Equal(strings.TrimSpace(out), "uid=0(root) gid=0(root) groups=0(root),10(wheel),29(audio),50(staff),777"))
}
func (s *DockerSwarmSuite) TestSwarmContainerAutoStart(c *testing.T) {