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

[25.0 backport] update CI #4915

Merged
merged 3 commits into from
Mar 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
10 changes: 5 additions & 5 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ on:

jobs:
prepare:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
outputs:
matrix: ${{ steps.platforms.outputs.matrix }}
steps:
Expand All @@ -37,7 +37,7 @@ jobs:
echo ${{ steps.platforms.outputs.matrix }}

build:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
needs:
- prepare
strategy:
Expand Down Expand Up @@ -90,7 +90,7 @@ jobs:
if-no-files-found: error

bin-image:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
if: ${{ github.event_name != 'pull_request' && github.repository == 'docker/cli' }}
steps:
-
Expand Down Expand Up @@ -134,7 +134,7 @@ jobs:
*.cache-to=type=gha,scope=bin-image,mode=max

prepare-plugins:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
outputs:
matrix: ${{ steps.platforms.outputs.matrix }}
steps:
Expand All @@ -152,7 +152,7 @@ jobs:
echo ${{ steps.platforms.outputs.matrix }}

plugins:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
needs:
- prepare-plugins
strategy:
Expand Down
14 changes: 7 additions & 7 deletions .github/workflows/e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ on:

jobs:
e2e:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
Expand All @@ -28,11 +28,11 @@ jobs:
- alpine
- debian
engine-version:
# - 20.10-dind # FIXME: Fails on 20.10
- stable-dind # TODO: Use 20.10-dind, stable-dind is deprecated
include:
- target: non-experimental
engine-version: 19.03-dind
- 25.0 # latest
- 24.0 # latest - 1
- 23.0 # mirantis lts
# TODO(krissetto) 19.03 needs a look, doesn't work ubuntu 22.04 (cgroup errors).
# we could have a separate job that tests it against ubuntu 20.04
steps:
-
name: Checkout
Expand All @@ -55,7 +55,7 @@ jobs:
make -f docker.Makefile test-e2e-${{ matrix.target }}
env:
BASE_VARIANT: ${{ matrix.base }}
E2E_ENGINE_VERSION: ${{ matrix.engine-version }}
ENGINE_VERSION: ${{ matrix.engine-version }}
TESTFLAGS: -coverprofile=/tmp/coverage/coverage.txt
-
name: Send to Codecov
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ on:

jobs:
ctn:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
steps:
-
name: Checkout
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ on:

jobs:
validate:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
Expand All @@ -37,7 +37,7 @@ jobs:

# check that the generated Markdown and the checked-in files match
validate-md:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
steps:
-
name: Checkout
Expand All @@ -57,7 +57,7 @@ jobs:
fi

validate-make:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
Expand Down
10 changes: 5 additions & 5 deletions docker.Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@ PACKAGER_NAME ?=

DEV_DOCKER_IMAGE_NAME = docker-cli-dev$(IMAGE_TAG)
E2E_IMAGE_NAME = docker-cli-e2e
E2E_ENGINE_VERSION ?=
ENGINE_VERSION ?=
CACHE_VOLUME_NAME := docker-cli-dev-cache
ifeq ($(DOCKER_CLI_GO_BUILD_CACHE),y)
DOCKER_CLI_MOUNTS += -v "$(CACHE_VOLUME_NAME):/root/.cache/go-build"
endif
VERSION = $(shell cat VERSION)
ENVVARS = -e VERSION=$(VERSION) -e GITCOMMIT -e PLATFORM -e TESTFLAGS -e TESTDIRS -e GOOS -e GOARCH -e GOARM -e TEST_ENGINE_VERSION=$(E2E_ENGINE_VERSION)
ENVVARS = -e VERSION=$(VERSION) -e GITCOMMIT -e PLATFORM -e TESTFLAGS -e TESTDIRS -e GOOS -e GOARCH -e GOARM -e ENGINE_VERSION

# Some Dockerfiles use features that are only supported with BuildKit enabled
export DOCKER_BUILDKIT=1
Expand Down Expand Up @@ -132,21 +132,21 @@ test-e2e: test-e2e-non-experimental test-e2e-experimental test-e2e-connhelper-ss

.PHONY: test-e2e-experimental
test-e2e-experimental: build-e2e-image # run experimental e2e tests
docker run --rm $(ENVVARS) -e DOCKERD_EXPERIMENTAL=1 -e TEST_ENGINE_VERSION=$(E2E_ENGINE_VERSION) \
docker run --rm $(ENVVARS) -e DOCKERD_EXPERIMENTAL=1 \
--mount type=bind,src=$(CURDIR)/build/coverage,dst=/tmp/coverage \
--mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
$(E2E_IMAGE_NAME)

.PHONY: test-e2e-non-experimental
test-e2e-non-experimental: build-e2e-image # run non-experimental e2e tests
docker run --rm $(ENVVARS) -e TEST_ENGINE_VERSION=$(E2E_ENGINE_VERSION) \
docker run --rm $(ENVVARS) \
--mount type=bind,src=$(CURDIR)/build/coverage,dst=/tmp/coverage \
--mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
$(E2E_IMAGE_NAME)

.PHONY: test-e2e-connhelper-ssh
test-e2e-connhelper-ssh: build-e2e-image # run experimental SSH-connection helper e2e tests
docker run --rm $(ENVVARS) -e DOCKERD_EXPERIMENTAL=1 -e TEST_ENGINE_VERSION=$(E2E_ENGINE_VERSION) -e TEST_CONNHELPER=ssh \
docker run --rm $(ENVVARS) -e DOCKERD_EXPERIMENTAL=1 -e TEST_CONNHELPER=ssh \
--mount type=bind,src=$(CURDIR)/build/coverage,dst=/tmp/coverage \
--mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
$(E2E_IMAGE_NAME)
Expand Down
2 changes: 2 additions & 0 deletions e2e/compose-env.connhelper-ssh.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,7 @@ services:
build:
context: ./testdata
dockerfile: Dockerfile.connhelper-ssh
args:
- ENGINE_VERSION
environment:
- TEST_CONNHELPER_SSH_ID_RSA_PUB
4 changes: 3 additions & 1 deletion e2e/compose-env.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
services:

registry:
image: 'registry:2'

engine:
image: 'docker:${TEST_ENGINE_VERSION:-stable-dind}'
image: 'docker:${ENGINE_VERSION:-25.0}-dind'
privileged: true
command: ['--insecure-registry=registry:5000']
environment:
Expand All @@ -16,6 +17,7 @@ services:
ports:
- 4443:4443
command: ['notary-server', '-config=/fixtures/notary-config.json']

evil-notary-server:
build:
context: ./testdata
Expand Down
2 changes: 1 addition & 1 deletion e2e/image/testdata/pull-with-content-trust.golden
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Pull (1 of 1): registry:5000/trust-pull:latest@sha256:e2e16842c9b54d985bf1ef9242a313f36b856181f188de21313820e177002501
sha256:e2e16842c9b54d985bf1ef9242a313f36b856181f188de21313820e177002501: Pulling from trust-pull
registry:5000/trust-pull@sha256:e2e16842c9b54d985bf1ef9242a313f36b856181f188de21313820e177002501: Pulling from trust-pull
Digest: sha256:e2e16842c9b54d985bf1ef9242a313f36b856181f188de21313820e177002501
Status: Downloaded newer image for registry:5000/trust-pull@sha256:e2e16842c9b54d985bf1ef9242a313f36b856181f188de21313820e177002501
registry:5000/trust-pull:latest
5 changes: 4 additions & 1 deletion e2e/plugin/trust_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"github.com/docker/cli/e2e/internal/fixtures"
"github.com/docker/cli/internal/test/environment"
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/versions"
"github.com/pkg/errors"
"gotest.tools/v3/assert"
"gotest.tools/v3/fs"
Expand All @@ -21,6 +22,8 @@ import (
const registryPrefix = "registry:5000"

func TestInstallWithContentTrust(t *testing.T) {
// TODO(krissetto): remove this skip once the fix (see https://github.com/moby/moby/pull/47299) is deployed to moby versions < 25
skip.If(t, versions.LessThan(environment.DaemonAPIVersion(t), "1.44"))
skip.If(t, environment.SkipPluginTests())

pluginName := fmt.Sprintf("%s/plugin-content-trust", registryPrefix)
Expand Down Expand Up @@ -50,7 +53,7 @@ func TestInstallWithContentTrust(t *testing.T) {
fixtures.WithNotary,
)
result.Assert(t, icmd.Expected{
Out: fmt.Sprintf("Status: Downloaded newer image for %s@sha", pluginName),
Out: fmt.Sprintf("Installed plugin %s", pluginName),
})
}

Expand Down
15 changes: 13 additions & 2 deletions e2e/testdata/Dockerfile.connhelper-ssh
Original file line number Diff line number Diff line change
@@ -1,5 +1,16 @@
FROM docker:test-dind
RUN apk --no-cache add shadow openssh-server && \
# syntax=docker/dockerfile:1

# ENGINE_VERSION is the version of the (docker-in-docker) Docker Engine to
# test against.
ARG ENGINE_VERSION=25.0

FROM docker:${ENGINE_VERSION}-dind

# the openssh-client update is needed for security reasons when using docker:23.0-dind, currently maintained as an lts by mirantis
RUN apk --no-cache upgrade openssh-client && \
apk --no-cache add shadow openssh-server && \
# TODO(krissetto): `groupadd` can be removed once we only test against moby >= v24
# see https://github.com/docker-library/docker/pull/470
groupadd -f docker && \
useradd --create-home --shell /bin/sh --password $(head -c32 /dev/urandom | base64) penguin && \
usermod -aG docker penguin && \
Expand Down
3 changes: 3 additions & 0 deletions e2e/testdata/Dockerfile.evil-notary-server
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
# syntax=docker/dockerfile:1

ARG NOTARY_VERSION=0.6.1

FROM notary:server-${NOTARY_VERSION}

COPY ./notary-evil/ /fixtures/
3 changes: 3 additions & 0 deletions e2e/testdata/Dockerfile.notary-server
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
# syntax=docker/dockerfile:1

ARG NOTARY_VERSION=0.6.1

FROM notary:server-${NOTARY_VERSION}

COPY ./notary/ /fixtures/
11 changes: 11 additions & 0 deletions internal/test/environment/testenv.go
Original file line number Diff line number Diff line change
Expand Up @@ -108,3 +108,14 @@ func SkipIfNotPlatform(t *testing.T, platform string) {
daemonPlatform := strings.TrimSpace(result.Stdout())
skip.If(t, daemonPlatform != platform, "running against a non %s daemon", platform)
}

// DaemonAPIVersion returns the negotiated daemon API version.
func DaemonAPIVersion(t *testing.T) string {
vvoland marked this conversation as resolved.
Show resolved Hide resolved
t.Helper()
// Use Client.APIVersion instead of Server.APIVersion.
// The latter is the maximum version that the server supports
// while the Client.APIVersion contains the negotiated version.
result := icmd.RunCmd(icmd.Command("docker", "version", "--format", "{{.Client.APIVersion}}"))
result.Assert(t, icmd.Expected{Err: icmd.None})
return strings.TrimSpace(result.Stdout())
}