From 91d2c60aada7ea7bc1f43f6d35b425e50b31282e Mon Sep 17 00:00:00 2001 From: Jintao Zhang Date: Fri, 29 Mar 2024 13:35:47 +0000 Subject: [PATCH] test: allow installation using a specified GatewayAPI commit Signed-off-by: Jintao Zhang --- .github/workflows/_linters.yaml | 3 +++ Makefile | 8 ++++++- test/consts/zz_generated_gateway.go | 9 ++++---- test/envtest/setup.go | 2 +- .../gateway_consts.tmpl | 1 + .../cmd/generate-gateway-api-consts/main.go | 21 ++++++++++++------- 6 files changed, 31 insertions(+), 13 deletions(-) diff --git a/.github/workflows/_linters.yaml b/.github/workflows/_linters.yaml index 905929fecb..aab6c6fc16 100644 --- a/.github/workflows/_linters.yaml +++ b/.github/workflows/_linters.yaml @@ -30,4 +30,7 @@ jobs: run: make verify.manifests - name: Verify generators consistency + env: + # The new version of GWAPI has not been released yet, and we have used a specific commit. + GATEWAY_API_VERSION: 1f401c5e2448b918e3e2d9da27302d598e488974 run: make verify.generators diff --git a/Makefile b/Makefile index 5a82886658..3a0a2935be 100644 --- a/Makefile +++ b/Makefile @@ -725,10 +725,15 @@ _run: # unsupported ref and downloads the manifests from the main branch. # # [1]: https://github.com/kubernetes-sigs/kustomize/blob/master/examples/remoteBuild.md#remote-directories +# +# If you want to install from a specific commit, +# you can set GATEWAY_API_VERSION to the full commit hash +# and GATEWAY_API_PACKAGE_VERSION will be automatically obtained through go mod. GATEWAY_API_PACKAGE ?= sigs.k8s.io/gateway-api GATEWAY_API_RELEASE_CHANNEL ?= experimental GATEWAY_API_VERSION ?= $(shell go list -m -f '{{ .Version }}' $(GATEWAY_API_PACKAGE)) -GATEWAY_API_CRDS_LOCAL_PATH = $(shell go env GOPATH)/pkg/mod/$(GATEWAY_API_PACKAGE)@$(GATEWAY_API_VERSION)/config/crd +GATEWAY_API_PACKAGE_VERSION ?= $(shell go list -m -f '{{ .Version }}' $(GATEWAY_API_PACKAGE)) +GATEWAY_API_CRDS_LOCAL_PATH = $(shell go env GOPATH)/pkg/mod/$(GATEWAY_API_PACKAGE)@$(GATEWAY_API_PACKAGE_VERSION)/config/crd GATEWAY_API_REPO ?= github.com/kubernetes-sigs/gateway-api GATEWAY_API_RAW_REPO ?= https://raw.githubusercontent.com/kubernetes-sigs/gateway-api GATEWAY_API_CRDS_URL = $(GATEWAY_API_REPO)/config/crd/$(GATEWAY_API_RELEASE_CHANNEL)?ref=$(GATEWAY_API_VERSION) @@ -745,6 +750,7 @@ print-gateway-api-raw-repo-url: .PHONY: generate.gateway-api-consts generate.gateway-api-consts: GATEWAY_API_VERSION=$(GATEWAY_API_VERSION) \ + GATEWAY_API_PACKAGE_VERSION=$(GATEWAY_API_PACKAGE_VERSION) \ CRDS_STANDARD_URL=$(shell GATEWAY_API_RELEASE_CHANNEL="" $(MAKE) print-gateway-api-crds-url) \ CRDS_EXPERIMENTAL_URL=$(shell GATEWAY_API_RELEASE_CHANNEL="experimental" $(MAKE) print-gateway-api-crds-url) \ RAW_REPO_URL=$(shell $(MAKE) print-gateway-api-raw-repo-url) \ diff --git a/test/consts/zz_generated_gateway.go b/test/consts/zz_generated_gateway.go index d7df532695..29c3b85ac9 100644 --- a/test/consts/zz_generated_gateway.go +++ b/test/consts/zz_generated_gateway.go @@ -4,8 +4,9 @@ package consts const ( - GatewayAPIVersion = "v1.0.0" - GatewayStandardCRDsKustomizeURL = "github.com/kubernetes-sigs/gateway-api/config/crd/?ref=v1.0.0" - GatewayExperimentalCRDsKustomizeURL = "github.com/kubernetes-sigs/gateway-api/config/crd/experimental?ref=v1.0.0" - GatewayRawRepoURL = "https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.0.0" + GatewayAPIVersion = "1f401c5e2448b918e3e2d9da27302d598e488974" + GatewayAPIPackageVersion = "v1.0.1-0.20240328211832-1f401c5e2448" + GatewayStandardCRDsKustomizeURL = "github.com/kubernetes-sigs/gateway-api/config/crd/?ref=1f401c5e2448b918e3e2d9da27302d598e488974" + GatewayExperimentalCRDsKustomizeURL = "github.com/kubernetes-sigs/gateway-api/config/crd/experimental?ref=1f401c5e2448b918e3e2d9da27302d598e488974" + GatewayRawRepoURL = "https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/1f401c5e2448b918e3e2d9da27302d598e488974" ) diff --git a/test/envtest/setup.go b/test/envtest/setup.go index 37d6c155a0..d2805dbd81 100644 --- a/test/envtest/setup.go +++ b/test/envtest/setup.go @@ -127,7 +127,7 @@ func Setup(t *testing.T, scheme *k8sruntime.Scheme, optModifiers ...OptionModifi func installGatewayCRDs(t *testing.T, scheme *k8sruntime.Scheme, cfg *rest.Config) { t.Helper() - gatewayCRDPath := filepath.Join(build.Default.GOPATH, "pkg", "mod", "sigs.k8s.io", "gateway-api@"+consts.GatewayAPIVersion, "config", "crd", "experimental") + gatewayCRDPath := filepath.Join(build.Default.GOPATH, "pkg", "mod", "sigs.k8s.io", "gateway-api@"+consts.GatewayAPIPackageVersion, "config", "crd", "experimental") _, err := envtest.InstallCRDs(cfg, envtest.CRDInstallOptions{ Scheme: scheme, Paths: []string{gatewayCRDPath}, diff --git a/test/internal/cmd/generate-gateway-api-consts/gateway_consts.tmpl b/test/internal/cmd/generate-gateway-api-consts/gateway_consts.tmpl index 56acf15482..57c7a2c8dc 100644 --- a/test/internal/cmd/generate-gateway-api-consts/gateway_consts.tmpl +++ b/test/internal/cmd/generate-gateway-api-consts/gateway_consts.tmpl @@ -5,6 +5,7 @@ package consts const ( GatewayAPIVersion = "{{.GatewayAPIVersion}}" + GatewayAPIPackageVersion = "{{.GatewayAPIPackageVersion}}" GatewayStandardCRDsKustomizeURL = "{{.CRDsStandardKustomizeURL}}" GatewayExperimentalCRDsKustomizeURL = "{{.CRDsExperimentalKustomizeURL}}" GatewayRawRepoURL = "{{.RawRepoURL}}" diff --git a/test/internal/cmd/generate-gateway-api-consts/main.go b/test/internal/cmd/generate-gateway-api-consts/main.go index 071be0f238..7d8086350f 100644 --- a/test/internal/cmd/generate-gateway-api-consts/main.go +++ b/test/internal/cmd/generate-gateway-api-consts/main.go @@ -14,19 +14,21 @@ import ( "text/template" ) -//go:generate go run --tags generate_gateway_api_consts . -gateway-api-version $GATEWAY_API_VERSION -crds-standard-url $CRDS_STANDARD_URL -crds-experimental-url $CRDS_EXPERIMENTAL_URL -raw-repo-url $RAW_REPO_URL -in $INPUT -out $OUTPUT +//go:generate go run --tags generate_gateway_api_consts . -gateway-api-version $GATEWAY_API_VERSION -gateway-api-package-version $GATEWAY_API_PACKAGE_VERSION -crds-standard-url $CRDS_STANDARD_URL -crds-experimental-url $CRDS_EXPERIMENTAL_URL -raw-repo-url $RAW_REPO_URL -in $INPUT -out $OUTPUT var ( - gatewayAPIVersionFlag = flag.String("gateway-api-version", "", "The semver version of Gateway API that should be used") - crdsStandardURLFlag = flag.String("crds-standard-url", "", "The URL of standard Gateway API CRDs to be consumed by kustomize") - crdsExperimentalURLFlag = flag.String("crds-experimental-url", "", "The URL of experimental Gateway API CRDs to be consumed by kustomize") - rawRepoURLFlag = flag.String("raw-repo-url", "", "The raw URL of Gateway API repository") - inFlag = flag.String("in", "", "Template file path") - outFlag = flag.String("out", "", "Output file path where the generated file will be placed") + gatewayAPIVersionFlag = flag.String("gateway-api-version", "", "The semver version of Gateway API that should be used") + gatewayAPIPackageVersionFlag = flag.String("gateway-api-package-version", "", "The version of Gateway API package that should be used") + crdsStandardURLFlag = flag.String("crds-standard-url", "", "The URL of standard Gateway API CRDs to be consumed by kustomize") + crdsExperimentalURLFlag = flag.String("crds-experimental-url", "", "The URL of experimental Gateway API CRDs to be consumed by kustomize") + rawRepoURLFlag = flag.String("raw-repo-url", "", "The raw URL of Gateway API repository") + inFlag = flag.String("in", "", "Template file path") + outFlag = flag.String("out", "", "Output file path where the generated file will be placed") ) type Data struct { GatewayAPIVersion string + GatewayAPIPackageVersion string CRDsStandardKustomizeURL string CRDsExperimentalKustomizeURL string RawRepoURL string @@ -37,6 +39,7 @@ func main() { data := Data{ GatewayAPIVersion: *gatewayAPIVersionFlag, + GatewayAPIPackageVersion: *gatewayAPIPackageVersionFlag, CRDsStandardKustomizeURL: *crdsStandardURLFlag, CRDsExperimentalKustomizeURL: *crdsExperimentalURLFlag, RawRepoURL: *rawRepoURLFlag, @@ -56,6 +59,10 @@ func flagParse() { log.Print("Please provide the 'gateway-api-version' flag") os.Exit(0) } + if *gatewayAPIPackageVersionFlag == "" { + log.Print("Please provide the 'gateway-api-package-version' flag") + os.Exit(0) + } if *crdsStandardURLFlag == "" { log.Print("Please provide the 'crds-standard-url' flag") os.Exit(0)