Skip to content

Commit 1ba7bf4

Browse files
authored
e2e: ensure kops e2e uses push-images script (#838)
* Dockerfile: use vendor directory instead of downloading * e2e: ensure kops e2e uses push-images script We want to test with the same build that we are now using to publish images. * e2e: configure docker auth * Dockerfile: combine COPY lines * e2e: stop using go workspace in tests Having a go.work causes go.mod to change which causes the docker build to fail.
1 parent 6622e57 commit 1ba7bf4

File tree

3 files changed

+33
-50
lines changed

3 files changed

+33
-50
lines changed

Dockerfile

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@ ARG GOOS=linux
77
ENV CGO_ENABLED=0
88

99
WORKDIR /go/src/app
10-
COPY go.mod go.mod
11-
COPY go.sum go.sum
12-
COPY providers/go.mod providers/go.mod
13-
COPY providers/go.sum providers/go.sum
14-
RUN go mod download
10+
COPY go.mod go.sum .
11+
COPY providers/go.mod providers/go.sum providers/
12+
COPY vendor/ vendor/
13+
1514
COPY cmd/ cmd/
1615
COPY pkg/ pkg/
1716
COPY providers/ providers/
17+
1818
RUN CGO_ENABLED=0 go build -o /go/bin/cloud-controller-manager ./cmd/cloud-controller-manager
1919

2020
FROM registry.k8s.io/build-image/go-runner:v2.4.0-go1.24.0-bookworm.0

e2e/add-kubernetes-to-workspace.sh

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,26 @@ cd ${REPO_ROOT}
2222
cd ..
2323
WORKSPACE=$(pwd)
2424

25-
# Set up go workspace to build with this version
2625
cd "${REPO_ROOT}"
2726

28-
go work init
29-
30-
go work use .
31-
go work use providers
27+
# We used to build with a go workspace in our tests, but that means we were testing something different from what we were shipping.
28+
# We keep the workspace support around (for now), but guard it behind an env var (USE_GO_WORKSPACE) which we don't set.
3229

33-
# Add kubernetes to workspace
34-
go work use ${WORKSPACE}/kubernetes
35-
for d in ${WORKSPACE}/kubernetes/staging/src/k8s.io/*; do
36-
go work use $d
37-
done
38-
39-
# Workaround for go.mod replacements
40-
sed -i 's/^\s*k8s.io.*//g' go.mod
41-
go work sync
30+
# Set up go workspace to build with this version
31+
if [[ -n "${USE_GO_WORKSPACE:-}" ]]; then
32+
echo "Setting up go workspace including kubernetes"
33+
go work init
34+
35+
go work use .
36+
go work use providers
37+
38+
# Add kubernetes to workspace
39+
go work use ${WORKSPACE}/kubernetes
40+
for d in ${WORKSPACE}/kubernetes/staging/src/k8s.io/*; do
41+
go work use $d
42+
done
43+
44+
# Workaround for go.mod replacements
45+
sed -i 's/^\s*k8s.io.*//g' go.mod
46+
go work sync
47+
fi

e2e/scenarios/kops-simple

Lines changed: 8 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -127,43 +127,22 @@ if [[ -z "${IMAGE_TAG:-}" ]]; then
127127
fi
128128
echo "IMAGE_TAG=${IMAGE_TAG}"
129129

130-
131130
# Build and push cloud-controller-manager
132131
cd ${REPO_ROOT}
133-
export KO_DOCKER_REPO="${IMAGE_REPO}"
134132

135133
export KUBE_ROOT=${REPO_ROOT}
136134
source "${REPO_ROOT}/tools/version.sh"
137135
get_version_vars
138136
unset KUBE_ROOT
139137

140-
BUILD_DATE=$(date ${SOURCE_DATE_EPOCH:+"--date=@${SOURCE_DATE_EPOCH}"} -u +'%Y-%m-%dT%H:%M:%SZ')
141-
142-
cat > ${WORKDIR}/.ko.yaml <<EOF
143-
builds:
144-
- id: cloud-controller-manager
145-
dir: .
146-
main: cmd/cloud-controller-manager
147-
ldflags:
148-
- -X k8s.io/component-base/version/verflag.programName=cloud-controller-manager
149-
150-
- -X k8s.io/component-base/version.buildDate=${BUILD_DATE}
151-
- -X k8s.io/component-base/version.gitCommit=${KUBE_GIT_COMMIT}
152-
- -X k8s.io/component-base/version.gitMajor=${KUBE_GIT_MAJOR}
153-
- -X k8s.io/component-base/version.gitMinor=${KUBE_GIT_MINOR}
154-
- -X k8s.io/component-base/version.gitTreeState=${KUBE_GIT_TREE_STATE}
155-
- -X k8s.io/component-base/version.gitVersion=${KUBE_GIT_VERSION}
156-
157-
- -X k8s.io/client-go/pkg/version.buildDate=${BUILD_DATE}
158-
- -X k8s.io/client-go/pkg/version.gitCommit=${KUBE_GIT_COMMIT}
159-
- -X k8s.io/client-go/pkg/version.gitMajor=${KUBE_GIT_MAJOR}
160-
- -X k8s.io/client-go/pkg/version.gitMinor=${KUBE_GIT_MINOR}
161-
- -X k8s.io/client-go/pkg/version.gitTreeState=${KUBE_GIT_TREE_STATE}
162-
- -X k8s.io/client-go/pkg/version.gitVersion=${KUBE_GIT_VERSION}
163-
EOF
164-
165-
# KO_CONFIG_PATH is the directory, not the path, until https://github.com/ko-build/ko/pull/731 lands in a tag (it's not in 0.12)
166-
KO_CONFIG_PATH=${WORKDIR}/ go run github.com/google/[email protected] build --tags ${IMAGE_TAG} --base-import-paths --push=true ./cmd/cloud-controller-manager/
138+
echo "git status:"
139+
git status
140+
141+
echo "Configuring docker auth with gcloud"
142+
gcloud auth configure-docker
143+
144+
echo "Building and pushing images"
145+
IMAGE_REPO=${IMAGE_REPO} IMAGE_TAG=${IMAGE_TAG} tools/push-images
167146

168147
if [[ -z "${ADMIN_ACCESS:-}" ]]; then
169148
ADMIN_ACCESS="0.0.0.0/0" # Or use your IPv4 with /32
@@ -185,12 +164,10 @@ cp "${REPO_ROOT}/deploy/packages/default/manifest.yaml" "${WORKDIR}/cloud-provid
185164
sed -i -e "s@k8scloudprovidergcp/cloud-controller-manager:latest@${IMAGE_REPO}/cloud-controller-manager:${IMAGE_TAG}@g" "${WORKDIR}/cloud-provider-gcp.yaml"
186165
create_args="${create_args} --add=${WORKDIR}/cloud-provider-gcp.yaml"
187166

188-
189167
# Enable cluster addons, this enables us to replace the built-in manifest
190168
KOPS_FEATURE_FLAGS="ClusterAddons,${KOPS_FEATURE_FLAGS:-}"
191169
echo "KOPS_FEATURE_FLAGS=${KOPS_FEATURE_FLAGS}"
192170

193-
194171
# Note that these arguments for kubetest2 and kOps, not (for example) the arguments passed to the cloud-provider-gcp
195172
KUBETEST2_ARGS=""
196173
KUBETEST2_ARGS="${KUBETEST2_ARGS} -v=2 --cloud-provider=${CLOUD_PROVIDER}"

0 commit comments

Comments
 (0)