Skip to content

Commit 37e9694

Browse files
committed
rework the markers to make kops markers behave the same as kubernetes markers
1 parent 7b714f7 commit 37e9694

File tree

7 files changed

+57
-130
lines changed

7 files changed

+57
-130
lines changed

Makefile

Lines changed: 28 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,10 @@
1414

1515
# kops source root directory (without trailing /)
1616
KOPS_ROOT?=$(patsubst %/,%,$(abspath $(dir $(firstword $(MAKEFILE_LIST)))))
17-
DOCKER_REGISTRY?=gcr.io/must-override
17+
DOCKER_IMAGE_REGISTRY?=gcr.io/must-override
1818
S3_BUCKET?=s3://must-override/
1919
UPLOAD_DEST?=$(S3_BUCKET)
20-
GCS_LOCATION?=gs://must-override
21-
GCS_URL=$(GCS_LOCATION:gs://%=https://storage.googleapis.com/%)
22-
LATEST_FILE?=latest-ci.txt
20+
GCS_BUCKET?=gs://must-override
2321
GOPATH_1ST:=$(shell go env GOPATH)
2422
UNIQUE:=$(shell date +%s)
2523
BUILD=$(KOPS_ROOT)/.build
@@ -39,6 +37,16 @@ ifeq ($(GOBIN),)
3937
GOBIN := $(shell go env GOPATH)/bin
4038
endif
4139

40+
# We need to create latest.txt for master and latest-X.Y for release branches
41+
BRANCH ?= $(shell git -C $(KOPS_ROOT) rev-parse --abbrev-ref HEAD)
42+
ifeq ($(BRANCH),master)
43+
LATEST_FILE ?= latest.txt
44+
else ifneq (,$(filter release-1.%,$(BRANCH)))
45+
LATEST_FILE ?= $(patsubst release-%,latest-%.txt,$(BRANCH))
46+
else
47+
LATEST_FILE ?= latest.txt
48+
endif
49+
4250
# CODEGEN_VERSION is the version of k8s.io/code-generator to use
4351
CODEGEN_VERSION=v0.34.1
4452

@@ -193,18 +201,18 @@ kops: crossbuild-kops-$(shell go env GOOS)-$(shell go env GOARCH)
193201
.PHONY: crossbuild-kops-linux-amd64 crossbuild-kops-linux-arm64
194202
crossbuild-kops-linux-amd64 crossbuild-kops-linux-arm64: crossbuild-kops-linux-%:
195203
mkdir -p ${DIST}/linux/$*
196-
GOOS=linux GOARCH=$* go build ${GCFLAGS} ${BUILDFLAGS} ${EXTRA_BUILDFLAGS} -o ${DIST}/linux/$*/kops ${LDFLAGS}"${EXTRA_LDFLAGS} -X k8s.io/kops.Version=${VERSION} -X k8s.io/kops.GitVersion=${GITSHA}" k8s.io/kops/cmd/kops
204+
GOOS=linux GOARCH=$* go build ${GCFLAGS} ${BUILDFLAGS} ${EXTRA_BUILDFLAGS} -o ${DIST}/linux/$*/kops ${LDFLAGS}"${EXTRA_LDFLAGS} -X k8s.io/kops.Version=${VERSION}" k8s.io/kops/cmd/kops
197205

198206
.PHONY: crossbuild-kops-darwin-amd64 crossbuild-kops-darwin-arm64
199207
crossbuild-kops-darwin-amd64 crossbuild-kops-darwin-arm64: crossbuild-kops-darwin-%:
200208
mkdir -p ${DIST}/darwin/$*
201-
GOOS=darwin GOARCH=$* go build ${GCFLAGS} ${BUILDFLAGS} ${EXTRA_BUILDFLAGS} -o ${DIST}/darwin/$*/kops ${LDFLAGS}"${EXTRA_LDFLAGS} -X k8s.io/kops.Version=${VERSION} -X k8s.io/kops.GitVersion=${GITSHA}" k8s.io/kops/cmd/kops
209+
GOOS=darwin GOARCH=$* go build ${GCFLAGS} ${BUILDFLAGS} ${EXTRA_BUILDFLAGS} -o ${DIST}/darwin/$*/kops ${LDFLAGS}"${EXTRA_LDFLAGS} -X k8s.io/kops.Version=${VERSION}" k8s.io/kops/cmd/kops
202210

203211

204212
.PHONY: crossbuild-kops-windows-amd64
205213
crossbuild-kops-windows-amd64:
206214
mkdir -p ${DIST}/windows/amd64
207-
GOOS=windows GOARCH=amd64 go build ${GCFLAGS} ${BUILDFLAGS} ${EXTRA_BUILDFLAGS} -o ${DIST}/windows/amd64/kops.exe ${LDFLAGS}"${EXTRA_LDFLAGS} -X k8s.io/kops.Version=${VERSION} -X k8s.io/kops.GitVersion=${GITSHA}" k8s.io/kops/cmd/kops
215+
GOOS=windows GOARCH=amd64 go build ${GCFLAGS} ${BUILDFLAGS} ${EXTRA_BUILDFLAGS} -o ${DIST}/windows/amd64/kops.exe ${LDFLAGS}"${EXTRA_LDFLAGS} -X k8s.io/kops.Version=${VERSION}" k8s.io/kops/cmd/kops
208216

209217
.PHONY: crossbuild
210218
crossbuild: crossbuild-kops
@@ -215,7 +223,7 @@ crossbuild: crossbuild-kops-linux-amd64 crossbuild-kops-linux-arm64 crossbuild-k
215223
.PHONY: nodeup-amd64 nodeup-arm64
216224
nodeup-amd64 nodeup-arm64: nodeup-%:
217225
mkdir -p ${DIST}/linux/$*
218-
GOOS=linux GOARCH=$* go build ${GCFLAGS} ${BUILDFLAGS} ${EXTRA_BUILDFLAGS} -o ${DIST}/linux/$*/nodeup ${LDFLAGS}"${EXTRA_LDFLAGS} -X k8s.io/kops.Version=${VERSION} -X k8s.io/kops.GitVersion=${GITSHA}" k8s.io/kops/cmd/nodeup
226+
GOOS=linux GOARCH=$* go build ${GCFLAGS} ${BUILDFLAGS} ${EXTRA_BUILDFLAGS} -o ${DIST}/linux/$*/nodeup ${LDFLAGS}"${EXTRA_LDFLAGS} -X k8s.io/kops.Version=${VERSION}" k8s.io/kops/cmd/nodeup
219227

220228
.PHONY: nodeup
221229
nodeup: nodeup-amd64
@@ -226,7 +234,7 @@ crossbuild-nodeup: nodeup-amd64 nodeup-arm64
226234
.PHONY: protokube-amd64 protokube-arm64
227235
protokube-amd64 protokube-arm64: protokube-%:
228236
mkdir -p ${DIST}/linux/$*
229-
GOOS=linux GOARCH=$* go build -tags=peer_name_alternative,peer_name_hash ${GCFLAGS} ${BUILDFLAGS} ${EXTRA_BUILDFLAGS} -o ${DIST}/linux/$*/protokube ${LDFLAGS}"${EXTRA_LDFLAGS} -X k8s.io/kops.Version=${VERSION} -X k8s.io/kops.GitVersion=${GITSHA}" k8s.io/kops/protokube/cmd/protokube
237+
GOOS=linux GOARCH=$* go build -tags=peer_name_alternative,peer_name_hash ${GCFLAGS} ${BUILDFLAGS} ${EXTRA_BUILDFLAGS} -o ${DIST}/linux/$*/protokube ${LDFLAGS}"${EXTRA_LDFLAGS} -X k8s.io/kops.Version=${VERSION}" k8s.io/kops/protokube/cmd/protokube
230238

231239
.PHONY: protokube
232240
protokube: protokube-amd64
@@ -237,7 +245,7 @@ crossbuild-protokube: protokube-amd64 protokube-arm64
237245
.PHONY: channels-amd64 channels-arm64
238246
channels-amd64 channels-arm64: channels-%:
239247
mkdir -p ${DIST}/linux/$*
240-
GOOS=linux GOARCH=$* go build ${GCFLAGS} ${BUILDFLAGS} ${EXTRA_BUILDFLAGS} -o ${DIST}/linux/$*/channels ${LDFLAGS}"${EXTRA_LDFLAGS} -X k8s.io/kops.Version=${VERSION} -X k8s.io/kops.GitVersion=${GITSHA}" k8s.io/kops/channels/cmd/channels
248+
GOOS=linux GOARCH=$* go build ${GCFLAGS} ${BUILDFLAGS} ${EXTRA_BUILDFLAGS} -o ${DIST}/linux/$*/channels ${LDFLAGS}"${EXTRA_LDFLAGS} -X k8s.io/kops.Version=${VERSION}" k8s.io/kops/channels/cmd/channels
241249

242250
.PHONY: channels
243251
channels: channels-amd64
@@ -251,24 +259,15 @@ upload: version-dist # Upload kops to S3
251259

252260
# gcs-upload builds kops and uploads to GCS
253261
.PHONY: gcs-upload
254-
gcs-upload: gsutil version-dist
262+
gcs-upload: version-dist
255263
@echo "== Uploading kops =="
256-
gsutil -h "Cache-Control:private, max-age=0, no-transform" -m cp -n -r ${UPLOAD}/kops/* ${GCS_LOCATION}
264+
gcloud storage cp -r ${UPLOAD}/kops/* ${GCS_BUCKET}
257265

258266
# gcs-upload-tag runs gcs-upload to upload, then uploads a version-marker to LATEST_FILE
259267
.PHONY: gcs-upload-and-tag
260268
gcs-upload-and-tag: gsutil gcs-upload
261-
echo "${GCS_URL}${VERSION}" > ${UPLOAD}/latest.txt
262-
gsutil -h "Cache-Control:private, max-age=0, no-transform" cp ${UPLOAD}/latest.txt ${GCS_LOCATION}${LATEST_FILE}
263-
264-
# gcs-publish-ci is the entry point for CI testing
265-
.PHONY: gcs-publish-ci
266-
gcs-publish-ci: gsutil version-dist-ci
267-
@echo "== Uploading kops =="
268-
gsutil -h "Cache-Control:private, max-age=0, no-transform" -m cp -n -r ${UPLOAD}/kops/* ${GCS_LOCATION}
269-
echo "VERSION: ${VERSION}"
270-
echo "${GCS_URL}/${VERSION}" > ${UPLOAD}/${LATEST_FILE}
271-
gsutil -h "Cache-Control:private, max-age=0, no-transform" cp ${UPLOAD}/${LATEST_FILE} ${GCS_LOCATION}
269+
echo "${VERSION}" > ${UPLOAD}/${LATEST_FILE}
270+
gcloud storage cp ${UPLOAD}/${LATEST_FILE} ${GCS_BUCKET}/${LATEST_FILE}
272271

273272
.PHONY: gen-cli-docs
274273
gen-cli-docs: kops # Regenerate CLI docs
@@ -300,21 +299,21 @@ push-aws-run-amd64 push-aws-run-arm64: push-aws-run-%: push-%
300299

301300
.PHONY: ${NODEUP}
302301
${NODEUP}:
303-
go build ${GCFLAGS} ${EXTRA_BUILDFLAGS} ${LDFLAGS}"${EXTRA_LDFLAGS} -X k8s.io/kops.Version=${VERSION} -X k8s.io/kops.GitVersion=${GITSHA}" -o $@ k8s.io/kops/cmd/nodeup
302+
go build ${GCFLAGS} ${EXTRA_BUILDFLAGS} ${LDFLAGS}"${EXTRA_LDFLAGS} -X k8s.io/kops.Version=${VERSION}" -o $@ k8s.io/kops/cmd/nodeup
304303

305304
.PHONY: dns-controller-push
306305
dns-controller-push: ko-dns-controller-push
307306

308307
.PHONY: ko-dns-controller-push
309308
ko-dns-controller-push:
310-
KO_DOCKER_REPO="${DOCKER_REGISTRY}/${DOCKER_IMAGE_PREFIX}dns-controller" GOFLAGS="-tags=peer_name_alternative,peer_name_hash" ${KO} build --tags ${DNS_CONTROLLER_TAG} --platform=linux/amd64,linux/arm64 --bare ./dns-controller/cmd/dns-controller/
309+
KO_DOCKER_REPO="${DOCKER_IMAGE_REGISTRY}/dns-controller" GOFLAGS="-tags=peer_name_alternative,peer_name_hash" ${KO} build --tags ${DNS_CONTROLLER_TAG} --platform=linux/amd64,linux/arm64 --bare ./dns-controller/cmd/dns-controller/
311310

312311
.PHONY: kops-utils-cp-push
313312
kops-utils-cp-push: ko-kops-utils-cp-push
314313

315314
.PHONY: ko-kops-utils-cp-push
316315
ko-kops-utils-cp-push:
317-
KO_DOCKER_REPO="${DOCKER_REGISTRY}/${DOCKER_IMAGE_PREFIX}kops-utils-cp" ${KO} build --tags ${KOPS_UTILS_CP_TAG} --platform=linux/amd64,linux/arm64 --bare ./cmd/kops-utils-cp/
316+
KO_DOCKER_REPO="${DOCKER_IMAGE_REGISTRY}/kops-utils-cp" ${KO} build --tags ${KOPS_UTILS_CP_TAG} --platform=linux/amd64,linux/arm64 --bare ./cmd/kops-utils-cp/
318317

319318
# --------------------------------------------------
320319
# development targets
@@ -592,14 +591,6 @@ version-dist: dev-version-dist-amd64 dev-version-dist-arm64 crossbuild
592591
cp ${DIST}/windows/amd64/kops.exe ${UPLOAD}/kops/${VERSION}/windows/amd64/kops.exe
593592
tools/sha256 ${UPLOAD}/kops/${VERSION}/windows/amd64/kops.exe ${UPLOAD}/kops/${VERSION}/windows/amd64/kops.exe.sha256
594593

595-
# This target skips arm64 and windows kops binary since CI does not use them
596-
.PHONY: version-dist-ci
597-
version-dist-ci: dev-version-dist-amd64 dev-version-dist-arm64 crossbuild-kops-linux-amd64
598-
mkdir -p ${UPLOAD}/kops/${VERSION}/linux/amd64/
599-
cp ${DIST}/linux/amd64/kops ${UPLOAD}/kops/${VERSION}/linux/amd64/kops
600-
tools/sha256 ${UPLOAD}/kops/${VERSION}/linux/amd64/kops ${UPLOAD}/kops/${VERSION}/linux/amd64/kops.sha256
601-
602-
603594
# prow-postsubmit is run by the prow postsubmit job
604595
# It uploads a build to a staging directory, which in theory we can publish as a release
605596
.PHONY: prow-postsubmit
@@ -791,7 +782,7 @@ kops-controller-push: ko-kops-controller-push
791782

792783
.PHONY: ko-kops-controller-push
793784
ko-kops-controller-push:
794-
KO_DOCKER_REPO="${DOCKER_REGISTRY}/${DOCKER_IMAGE_PREFIX}kops-controller" ${KO} build --tags ${KOPS_CONTROLLER_TAG} --platform=linux/amd64,linux/arm64 --bare ./cmd/kops-controller/
785+
KO_DOCKER_REPO="${DOCKER_IMAGE_REGISTRY}/kops-controller" ${KO} build --tags ${KOPS_CONTROLLER_TAG} --platform=linux/amd64,linux/arm64 --bare ./cmd/kops-controller/
795786

796787
#------------------------------------------------------
797788
# kube-apiserver-healthcheck
@@ -801,7 +792,7 @@ kube-apiserver-healthcheck-push: ko-kube-apiserver-healthcheck-push
801792

802793
.PHONY: ko-kube-apiserver-healthcheck-push
803794
ko-kube-apiserver-healthcheck-push:
804-
KO_DOCKER_REPO="${DOCKER_REGISTRY}/${DOCKER_IMAGE_PREFIX}kube-apiserver-healthcheck" ${KO} build --tags ${KUBE_APISERVER_HEALTHCHECK_TAG} --platform=linux/amd64,linux/arm64 --bare ./cmd/kube-apiserver-healthcheck/
795+
KO_DOCKER_REPO="${DOCKER_IMAGE_REGISTRY}/kube-apiserver-healthcheck" ${KO} build --tags ${KUBE_APISERVER_HEALTHCHECK_TAG} --platform=linux/amd64,linux/arm64 --bare ./cmd/kube-apiserver-healthcheck/
805796

806797
#------------------------------------------------------
807798
# discovery-server
@@ -811,7 +802,7 @@ discovery-server-push: ko-discovery-server-push
811802

812803
.PHONY: ko-discovery-server-push
813804
ko-discovery-server-push:
814-
KO_DOCKER_REPO="${DOCKER_REGISTRY}/${DOCKER_IMAGE_PREFIX}discovery-server" ${KO} build --tags ${DISCOVERY_SERVER_TAG} --platform=linux/amd64,linux/arm64 --bare ./discovery/cmd/discovery-server/
805+
KO_DOCKER_REPO="${DOCKER_IMAGE_REGISTRY}/discovery-server" ${KO} build --tags ${DISCOVERY_SERVER_TAG} --platform=linux/amd64,linux/arm64 --bare ./discovery/cmd/discovery-server/
815806

816807
#------------------------------------------------------
817808
# CloudBuild artifacts

cloudbuild.yaml

Lines changed: 7 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -4,63 +4,35 @@ options:
44
substitution_option: ALLOW_LOOSE
55
machineType: "E2_HIGHCPU_32"
66
steps:
7-
# Push the images
7+
# Build & Push the images
88
- name: "mirror.gcr.io/library/golang:1.25.7-trixie"
99
id: images
1010
entrypoint: make
1111
env:
12-
# _GIT_TAG is not a valid semver, we use CI=1 instead
13-
# - VERSION=$_GIT_TAG
1412
- CI=$_CI
15-
- PULL_BASE_REF=$_PULL_BASE_REF
16-
- DOCKER_REGISTRY=$_DOCKER_REGISTRY
17-
- DOCKER_IMAGE_PREFIX=$_DOCKER_IMAGE_PREFIX
13+
- DOCKER_IMAGE_REGISTRY=$_DOCKER_IMAGE_REGISTRY
1814
args:
1915
- kops-utils-cp-push
2016
- kops-controller-push
2117
- dns-controller-push
2218
- kube-apiserver-healthcheck-push
2319
- discovery-server-push
24-
# Push the artifacts
20+
# Build & push the binaries
2521
- name: "mirror.gcr.io/library/golang:1.25.7-trixie"
26-
id: artifacts
22+
id: binaries
2723
entrypoint: make
2824
env:
2925
# _GIT_TAG is not a valid semver, we use CI=1 instead
3026
# - VERSION=$_GIT_TAG
3127
- CI=$_CI
32-
- PULL_BASE_REF=$_PULL_BASE_REF
33-
- DOCKER_REGISTRY=$_DOCKER_REGISTRY
34-
- DOCKER_IMAGE_PREFIX=$_DOCKER_IMAGE_PREFIX
35-
- GCS_LOCATION=$_GCS_LOCATION
36-
- LATEST_FILE=markers/${_PULL_BASE_REF}/latest-ci.txt
28+
- GCS_BUCKET=$_GCS_BUCKET
3729
args:
3830
- gcs-upload-and-tag
39-
# Build cloudbuild artifacts (for attestation)
40-
- name: "mirror.gcr.io/library/golang:1.25.7-trixie"
41-
id: cloudbuild-artifacts
42-
entrypoint: make
43-
env:
44-
# _GIT_TAG is not a valid semver, we use CI=1 instead
45-
# - VERSION=$_GIT_TAG
46-
- CI=$_CI
47-
- PULL_BASE_REF=$_PULL_BASE_REF
48-
- DOCKER_REGISTRY=$_DOCKER_REGISTRY
49-
- DOCKER_IMAGE_PREFIX=$_DOCKER_IMAGE_PREFIX
50-
- GCS_LOCATION=$_GCS_LOCATION
51-
- LATEST_FILE=markers/${_PULL_BASE_REF}/latest-ci.txt
52-
args:
53-
- cloudbuild-artifacts
5431
substitutions:
5532
# _GIT_TAG will be filled with a git-based tag for the image, of the form vYYYYMMDD-hash, and
5633
# can be used as a substitution
5734
_CI: "1"
5835
_GIT_TAG: "12345"
5936
_PULL_BASE_REF: "dev"
60-
_DOCKER_REGISTRY: "gcr.io"
61-
_DOCKER_IMAGE_PREFIX: "k8s-staging-kops/"
62-
_GCS_LOCATION: "gs://k8s-staging-kops/kops/releases/"
63-
artifacts:
64-
objects:
65-
location: "$_GCS_LOCATION/$_GIT_TAG/cloudbuild/"
66-
paths: ["cloudbuild/*"]
37+
_DOCKER_IMAGE_REGISTRY: "gcr.io/k8s-staging-kops"
38+
_GCS_BUCKET: "gs://k8s-staging-kops"

hack/set-version

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -44,17 +44,9 @@ PATCH=${BASH_REMATCH[2]}
4444
PRERELEASE=${BASH_REMATCH[4]}
4545
PRERELEASE_SEQUENCE=${BASH_REMATCH[5]}
4646

47-
if [[ -z "$PRERELEASE" ]]; then
48-
NEW_CI_VERSION="${MINOR}."$(($PATCH + 1))
49-
else
50-
NEW_CI_VERSION="${MINOR}.${PATCH}-${PRERELEASE}."$(($PRERELEASE_SEQUENCE + 1))
51-
fi
52-
53-
KOPS_RELEASE_VERSION=`grep 'KOPS_RELEASE_VERSION\s*=' kops-version.go | awk '{print $3}' | sed -e 's_"__g'`
54-
KOPS_CI_VERSION=`grep 'KOPS_CI_VERSION\s*=' kops-version.go | awk '{print $3}' | sed -e 's_"__g'`
47+
KOPS_RELEASE_VERSION=`git describe --always --dirty --tags --match='v*' --abbrev=14`
5548

5649
echo "KOPS_RELEASE_VERSION ${KOPS_RELEASE_VERSION} -> ${NEW_RELEASE_VERSION}"
57-
echo "KOPS_CI_VERSION ${KOPS_CI_VERSION} -> ${NEW_CI_VERSION}"
5850

5951
sed -i.bak -e "s@${KOPS_RELEASE_VERSION}@${NEW_RELEASE_VERSION}@g" pkg/nodemodel/wellknownassets/kopsassets_test.go
6052

@@ -68,6 +60,3 @@ git grep -l registry.k8s.io/kops/kops-utils-cp | xargs -I {} sed -i.bak -e "s@ko
6860
git grep -l registry.k8s.io/kops/kube-apiserver-healthcheck | xargs -I {} sed -i.bak -e "s@kube-apiserver-healthcheck:${KOPS_RELEASE_VERSION}@kube-apiserver-healthcheck:${NEW_RELEASE_VERSION}@g" {}
6961

7062
git grep -l "version..${KOPS_RELEASE_VERSION}" upup/pkg/fi/cloudup/tests/bootstrapchannelbuilder/ | xargs -I {} sed -i.bak -e "s@version: ${KOPS_RELEASE_VERSION}@version: ${NEW_RELEASE_VERSION}@g" {}
71-
72-
sed -i.bak -e "s@${KOPS_CI_VERSION}@${NEW_CI_VERSION}@g" kops-version.go
73-
sed -i.bak -e "s@${KOPS_RELEASE_VERSION}@${NEW_RELEASE_VERSION}@g" kops-version.go

kops-version.go

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ package kops
1919
import "strings"
2020

2121
// Version can be replaced by build tooling
22-
var Version = KOPS_RELEASE_VERSION
22+
var Version = "unknown"
2323

2424
// KopsVersionImageTag is like Version, but with + replaced by - (so it can be used in docker tags)
2525
func KopsVersionImageTag() string {
@@ -28,11 +28,5 @@ func KopsVersionImageTag() string {
2828
return strings.ReplaceAll(tag, "+", "-")
2929
}
3030

31-
// These constants are parsed by build tooling - be careful about changing the formats
32-
const (
33-
KOPS_RELEASE_VERSION = "1.35.0-beta.1"
34-
KOPS_CI_VERSION = "1.35.0-beta.2"
35-
)
36-
3731
// GitVersion should be replaced by the makefile
3832
var GitVersion = ""

tests/e2e/kubetest2-kops/builder/build.go

Lines changed: 10 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ package builder
1818

1919
import (
2020
"fmt"
21-
"net/url"
2221
"os"
2322
"path/filepath"
2423
"regexp"
@@ -47,9 +46,6 @@ type BuildResults struct {
4746
func (b *BuildOptions) Build() (*BuildResults, error) {
4847
// We expect to upload to a subdirectory with a version identifier
4948
gcsLocation := b.StageLocation
50-
if !strings.HasSuffix(gcsLocation, "/") {
51-
gcsLocation += "/"
52-
}
5349

5450
results := &BuildResults{}
5551

@@ -88,7 +84,7 @@ func (b *BuildOptions) Build() (*BuildResults, error) {
8884
env := []string{
8985
fmt.Sprintf("HOME=%v", os.Getenv("HOME")),
9086
fmt.Sprintf("PATH=%v", os.Getenv("PATH")),
91-
fmt.Sprintf("GCS_LOCATION=%v", gcsLocation),
87+
fmt.Sprintf("GCS_BUCKET=%v", gcsLocation),
9288
fmt.Sprintf("GOPATH=%v", os.Getenv("GOPATH")),
9389
}
9490
// We need to "forward" some variables, in particular the variables like "CI" that change the version we use
@@ -107,31 +103,21 @@ func (b *BuildOptions) Build() (*BuildResults, error) {
107103
}
108104

109105
// Get the full path (including subdirectory) that we uploaded to
110-
// It is written by gcs-publish-ci to .build/upload/latest-ci.txt
111-
latestPath := filepath.Join(b.KopsRoot, ".build", "upload", "latest-ci.txt")
112-
kopsBaseURL, err := os.ReadFile(latestPath)
106+
// It is written by gcs-publish-ci to .build/upload/latest.txt
107+
latestPath := filepath.Join(b.KopsRoot, ".build", "upload", "latest.txt")
108+
// kops
109+
kopsVersion, err := os.ReadFile(latestPath)
113110
if err != nil {
114111
return nil, fmt.Errorf("failed to read file %q: %w", latestPath, err)
115112
}
116-
u, err := url.Parse(strings.TrimSpace(string(kopsBaseURL)))
117-
if err != nil {
118-
return nil, fmt.Errorf("failed to parse url %q from file %q: %w", string(kopsBaseURL), latestPath, err)
119-
}
120-
u.Path = strings.ReplaceAll(u.Path, "//", "/")
121-
results = &BuildResults{
122-
KopsBaseURL: u.String(),
113+
var kopsBaseUrl string
114+
if after, ok := strings.CutPrefix(b.StageLocation, "gs://"); ok {
115+
kopsBaseUrl = "https://storage.googleapis.com/" + after + "/" + strings.TrimSpace(string(kopsVersion))
123116
}
124117

125-
// Write some meta files so that other tooling can know e.g. KOPS_BASE_URL
126-
metaDir := filepath.Join(b.KopsRoot, ".kubetest2")
127-
if err := os.MkdirAll(metaDir, 0o755); err != nil {
128-
return nil, fmt.Errorf("failed to Mkdir(%q): %w", metaDir, err)
129-
}
130-
p := filepath.Join(metaDir, "kops-base-url")
131-
if err := os.WriteFile(p, []byte(results.KopsBaseURL), 0o644); err != nil {
132-
return nil, fmt.Errorf("failed to WriteFile(%q): %w", p, err)
118+
results = &BuildResults{
119+
KopsBaseURL: kopsBaseUrl,
133120
}
134-
klog.Infof("wrote file %q with %q", p, results.KopsBaseURL)
135121

136122
return results, nil
137123
}

tests/e2e/pkg/kops/download.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ import (
2727
)
2828

2929
// DownloadKops will download the kops binary from the version marker URL
30-
// Returning the URL to use for KOPS_BASE_URL
31-
// Example markerURL: https://storage.googleapis.com/k8s-staging-kops/kops/releases/markers/master/latest-ci-updown-green.txt
30+
// KOPS_BASE_URL will be set to the contents of marker + marker URL
31+
// Example markerURL: https://storage.googleapis.com/k8s-staging-kops/kops/latest.txt
3232
func DownloadKops(markerURL, downloadPath, kopsVersion string) (string, error) {
3333
var b bytes.Buffer
3434
var kopsBaseURL string
@@ -39,7 +39,11 @@ func DownloadKops(markerURL, downloadPath, kopsVersion string) (string, error) {
3939
if err := util.HTTPGETWithHeaders(markerURL, nil, &b); err != nil {
4040
return "", err
4141
}
42-
kopsBaseURL = strings.TrimSpace(b.String())
42+
baseURL := markerURL
43+
if slash := strings.LastIndex(markerURL, "/"); slash != -1 {
44+
baseURL = markerURL[:slash]
45+
}
46+
kopsBaseURL = baseURL + "/" + strings.TrimSpace(b.String())
4347
}
4448

4549
kopsFile, err := os.Create(downloadPath)

0 commit comments

Comments
 (0)