You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by zh...@apache.org on 2022/08/10 18:14:55 UTC
[apisix-ingress-controller] branch master updated: test: add cronjob runs e2e in multiple k8s versions (#1203)
This is an automated email from the ASF dual-hosted git repository.
zhangjintao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix-ingress-controller.git
The following commit(s) were added to refs/heads/master by this push:
new 537501cd test: add cronjob runs e2e in multiple k8s versions (#1203)
537501cd is described below
commit 537501cd3415dbd71f45a539f57c757d9a634549
Author: Xin Rong <ro...@api7.ai>
AuthorDate: Thu Aug 11 02:14:51 2022 +0800
test: add cronjob runs e2e in multiple k8s versions (#1203)
---
.github/workflows/k8s-timer-ci.yml | 177 +++++++++++++++++++++++++++++++++++++
.gitignore | 3 +
Makefile | 25 +++---
test/e2e/scaffold/ingress.go | 1 -
test/e2e/suite-features/retries.go | 2 +-
utils/kind-with-registry.sh | 4 +-
6 files changed, 197 insertions(+), 15 deletions(-)
diff --git a/.github/workflows/k8s-timer-ci.yml b/.github/workflows/k8s-timer-ci.yml
new file mode 100644
index 00000000..8676c2fb
--- /dev/null
+++ b/.github/workflows/k8s-timer-ci.yml
@@ -0,0 +1,177 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+name: k8s-timer-ci
+
+on:
+ schedule:
+ - cron: '0 1 * * 1'
+
+jobs:
+ changes:
+ runs-on: ubuntu-latest
+ outputs:
+ docs: ${{ steps.filter.outputs.docs }}
+ go: ${{ steps.filter.outputs.go }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ with:
+ submodules: recursive
+
+ - uses: ./.github/actions/paths-filter
+ id: filter
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ filters: |
+ docs:
+ - 'docs/**/*'
+ - '*.md'
+ go:
+ - '*.go'
+ - '**/*.go'
+ - 'go.mod'
+ - 'go.sum'
+ - 'Makefile'
+ - 'Dockerfile'
+ - 'test/e2e/**/*'
+ - 'conf/**'
+ - 'utils/**'
+ build:
+ name: Build
+ runs-on: ubuntu-latest
+ needs: changes
+
+ steps:
+
+ - name: Checkout
+ uses: actions/checkout@v3 # v3.0.2
+
+ - name: Set up Go 1.18
+ id: go
+ uses: actions/setup-go@v3 # v3.2.0
+ with:
+ go-version: '1.18'
+
+ - name: Set up QEMU
+ uses: docker/setup-qemu-action@v2 #v2.0.0
+
+ - name: Set up Docker Buildx
+ id: buildx
+ uses: docker/setup-buildx-action@v2 # v2.0.0
+ with:
+ version: latest
+
+ - name: Prepare Host
+ run: |
+ curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.11.1/kind-linux-amd64
+ chmod +x ./kind
+ sudo mv kind /usr/local/bin
+
+ - name: Build images
+ env:
+ TAG: dev
+ ARCH: amd64
+ REGISTRY: localhost:5000
+ ENABLE_PROXY: "false"
+ run: |
+ echo "building images..."
+ make clean-image build-images
+
+ echo "creating images cache..."
+ docker save \
+ localhost:5000/apache/apisix:dev \
+ localhost:5000/bitnami/etcd:dev \
+ localhost:5000/apache/apisix-ingress-controller:dev \
+ localhost:5000/kennethreitz/httpbin:dev \
+ localhost:5000/test-backend:dev \
+ localhost:5000/jmalloc/echo-server:dev \
+ localhost:5000/busybox:dev \
+ | pigz > docker.tar.gz
+
+ - name: cache
+ uses: actions/upload-artifact@v3 # v3.1.0
+ with:
+ name: docker.tar.gz
+ path: docker.tar.gz
+
+ prepare:
+ needs: changes
+ if: needs.changes.outputs.go == 'true'
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ submodules: recursive
+
+ - name: Check e2e test cases' naming
+ run: make e2e-names-check
+
+ Kubernetes-e2e-test:
+ needs:
+ - changes
+ - prepare
+ - build
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false # If false, GitHub will not cancels all in-progress jobs in the matrix if any matrix job fails.
+ matrix:
+ k8s:
+ - v1.19.11@sha256:07db187ae84b4b7de440a73886f008cf903fcf5764ba8106a9fd5243d6f32729
+ - v1.20.7@sha256:cbeaf907fc78ac97ce7b625e4bf0de16e3ea725daf6b04f930bd14c67c671ff9
+ - v1.21.1@sha256:69860bda5563ac81e3c0057d654b5253219618a22ec3a346306239bba8cfa1a6
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ with:
+ submodules: recursive
+
+ - name: Install ginkgo
+ run: |
+ go install github.com/onsi/ginkgo/v2/ginkgo@v2.1.4
+ sudo cp ~/go/bin/ginkgo /usr/local/bin
+
+ - name: cache
+ uses: actions/download-artifact@v2 # v2
+ with:
+ name: docker.tar.gz
+
+ - name: Create Kubernetes ${{ matrix.k8s }} cluster
+ shell: bash
+ env:
+ K8S_VERSION: ${{ matrix.k8s }}
+ run: |
+ make kind-up
+ kubectl wait --for=condition=Ready nodes --all
+
+ - name: Load images from cache
+ run: |
+ echo "loading docker images..."
+ pigz -dc docker.tar.gz | docker load
+ make push-images
+
+ - name: Run E2E test suite
+ shell: bash
+ env:
+ ENABLE_PROXY: "false"
+ E2E_SKIP_BUILD: "1"
+ E2E_FLAKE_ATTEMPTS: "2"
+ E2E_ENV: "ci"
+ E2E_NODES: "8"
+ run: |
+ make e2e-test
diff --git a/.gitignore b/.gitignore
index aa6584f9..be473d69 100644
--- a/.gitignore
+++ b/.gitignore
@@ -26,6 +26,9 @@
# Test binary, build with `go test -c`
*.test
+# Related log files
+*.log
+
# Output of the go coverage tool, specifically when used with LiteIDE
*.out
release
diff --git a/Makefile b/Makefile
index 9a2ed4b1..c0ea68bd 100644
--- a/Makefile
+++ b/Makefile
@@ -60,13 +60,14 @@ clean-image: ## Removes local image
### build-image: Build apisix-ingress-controller image
.PHONY: build-image
build-image:
- docker build -t apache/apisix-ingress-controller:$(IMAGE_TAG) --build-arg ENABLE_PROXY=true .
-
-### pack-ingress-image: Build and push Ingress image used in e2e test suites to kind or custom registry.
-.PHONY: pack-ingress-image
-pack-ingress-image:
+ifeq ($(E2E_SKIP_BUILD), 0)
docker build -t apache/apisix-ingress-controller:$(IMAGE_TAG) --build-arg ENABLE_PROXY=$(ENABLE_PROXY) .
docker tag apache/apisix-ingress-controller:$(IMAGE_TAG) $(REGISTRY)/apache/apisix-ingress-controller:$(IMAGE_TAG)
+endif
+
+### pack-image: Build and push Ingress image used in e2e test suites to kind or custom registry.
+.PHONY: pack-image
+pack-image: build-image
docker push $(REGISTRY)/apache/apisix-ingress-controller:$(IMAGE_TAG)
### pack-images: Build and push images used in e2e test suites to kind or custom registry.
@@ -250,10 +251,10 @@ endif
.PHONY: kind-load-images
kind-load-images:
kind load docker-image --name=apisix \
- localhost:5000/apache/apisix:dev \
- localhost:5000/bitnami/etcd:dev \
- localhost:5000/apache/apisix-ingress-controller:dev \
- localhost:5000/kennethreitz/httpbin:dev \
- localhost:5000/test-backend:dev \
- localhost:5000/jmalloc/echo-server:dev \
- localhost:5000/busybox:dev
+ $(REGISTRY)/apache/apisix:dev \
+ $(REGISTRY)/bitnami/etcd:dev \
+ $(REGISTRY)/apache/apisix-ingress-controller:dev \
+ $(REGISTRY)/kennethreitz/httpbin:dev \
+ $(REGISTRY)/test-backend:dev \
+ $(REGISTRY)/jmalloc/echo-server:dev \
+ $(REGISTRY)/busybox:dev
diff --git a/test/e2e/scaffold/ingress.go b/test/e2e/scaffold/ingress.go
index 4da381dc..5117e331 100644
--- a/test/e2e/scaffold/ingress.go
+++ b/test/e2e/scaffold/ingress.go
@@ -390,7 +390,6 @@ spec:
- %s
- --ingress-status-address
- "%s"
- - --watch-endpointslices
- --enable-gateway-api
- "true"
%s
diff --git a/test/e2e/suite-features/retries.go b/test/e2e/suite-features/retries.go
index 02832cbf..76fa9c0e 100644
--- a/test/e2e/suite-features/retries.go
+++ b/test/e2e/suite-features/retries.go
@@ -61,7 +61,7 @@ spec:
`, backendSvc)
err = s.CreateVersionedApisixResource(au)
assert.Nil(ginkgo.GinkgoT(), err, "create ApisixUpstream")
- time.Sleep(2 * time.Second)
+ time.Sleep(6 * time.Second)
ups, err := s.ListApisixUpstreams()
assert.Nil(ginkgo.GinkgoT(), err)
diff --git a/utils/kind-with-registry.sh b/utils/kind-with-registry.sh
index 34b54bf8..8142ea03 100755
--- a/utils/kind-with-registry.sh
+++ b/utils/kind-with-registry.sh
@@ -22,6 +22,7 @@ set -o pipefail
# desired cluster name; default is "apisix"
KIND_CLUSTER_NAME="${KIND_CLUSTER_NAME:-apisix}"
+K8S_VERSION=${K8S_VERSION:-v1.21.1@sha256:69860bda5563ac81e3c0057d654b5253219618a22ec3a346306239bba8cfa1a6}
if kind get clusters | grep -q ^apisix$ ; then
echo "cluster already exists, moving on"
@@ -54,7 +55,8 @@ fi
echo "Registry Host: ${reg_host}"
# create a cluster with the local registry enabled in containerd
-kind_node_image='kindest/node:v1.21.1@sha256:69860bda5563ac81e3c0057d654b5253219618a22ec3a346306239bba8cfa1a6'
+kind_node_image="kindest/node:${K8S_VERSION}"
+echo "Kubernetes version: ${kind_node_image}"
cat <<EOF | kind create cluster --name "${KIND_CLUSTER_NAME}" --image ${kind_node_image} --config=-
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4