This is an automated email from the ASF dual-hosted git repository.

gyfora pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/flink-kubernetes-operator.git


The following commit(s) were added to refs/heads/main by this push:
     new 1a5ee081 [FLINK-36460] Refactoring the CI matrix
1a5ee081 is described below

commit 1a5ee081eef2c8435c9414faf2530c2f12149c08
Author: Sam Barker <[email protected]>
AuthorDate: Sat Nov 2 02:05:29 2024 +1300

    [FLINK-36460] Refactoring the CI matrix
---
 .github/workflows/ci.yml   | 235 ++++++++++++++-------------------------------
 .github/workflows/e2e.yaml |  96 ++++++++++++++++++
 2 files changed, 170 insertions(+), 161 deletions(-)

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index bff87908..1deb2c2e 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -27,10 +27,14 @@ on:
       - main
       - release-*
   pull_request:
+concurrency:
+  group: ${{ github.workflow }}-${{ github.event.workflow_run.head_branch }}
+  cancel-in-progress: true
+
 jobs:
   test_ci:
     runs-on: ubuntu-latest
-    name: test_ci
+    name: maven build
     strategy:
       matrix:
         java-version: [ 11, 17, 21 ]
@@ -68,195 +72,104 @@ jobs:
           mvn -B verify -Dit.skip=false
           cd ..
   e2e_smoke_test:
-    name: HTTP Client smoke test
-    runs-on: ubuntu-latest
+    name: Smoke test
     strategy:
       matrix:
         http-client: [ "okhttp", "jdk", "jetty", "vertx" ]
-        version: ["v1_20"]
-        mode: ["native"]
-        namespace: ["default"]
-        java-version: ["21"]
+        java-version: [ "11", "17", "21" ]
+    uses: ./.github/workflows/e2e.yaml
+    with:
+      java-version: ${{ matrix.java-version }}
+      flink-version: "v1_20"
+      http-client: ${{ matrix.http-client }}
+      test: test_application_operations.sh
+  e2e_namespace_tests:
+    name: Alternative namespace tests
+    needs: e2e_smoke_test
+    strategy:
+      matrix:
+        flink-version:
+          - "v1_20"
+          - "v1_18"
+          - "v1_19"
+          - "v1_17"
+          - "v1_16"
+        mode:
+         - "native"
+         - "standalone"
         test:
           - test_application_operations.sh
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java-version }}
-        uses: actions/setup-java@v4
-        with:
-          java-version: ${{ matrix.java-version }}
-          distribution: 'temurin'
-          cache: 'maven'
-      - name: Start minikube
-        run: |
-          source e2e-tests/utils.sh
-          start_minikube
-      - name: Install cert-manager
-        run: |
-          kubectl get pods -A
-          kubectl apply -f e2e-tests/cert-manager.yaml
-          kubectl -n cert-manager wait --all=true --for=condition=Available 
--timeout=300s deploy
-      - name: Build image
-        run: |
-          export SHELL=/bin/bash
-          export DOCKER_BUILDKIT=1
-          eval $(minikube -p minikube docker-env)
-          JAVA_VERSION=${{matrix.java-version}}
-          HTTP_CLIENT=${{ matrix.http-client }}
-          docker build --progress=plain --no-cache -f ./Dockerfile -t 
flink-kubernetes-operator:ci-latest --progress plain --build-arg 
JAVA_VERSION="${JAVA_VERSION:-11}" --build-arg 
HTTP_CLIENT="${HTTP_CLIENT:-okhttp}" .
-          docker images
-      - name: Start the operator
-        run: |
-          if [[ "${{ matrix.test }}" == "test_flink_operator_ha.sh" ]]; then
-            sed -i "s/# kubernetes.operator.leader-election.enabled: 
false/kubernetes.operator.leader-election.enabled: true/" 
helm/flink-kubernetes-operator/conf/flink-conf.yaml
-            sed -i "s/# kubernetes.operator.leader-election.lease-name: 
flink-operator-lease/kubernetes.operator.leader-election.lease-name: 
flink-operator-lease/" helm/flink-kubernetes-operator/conf/flink-conf.yaml
-            sed -i "s/replicas: 1/replicas: 2/" 
helm/flink-kubernetes-operator/values.yaml
-          fi
-          helm --debug install flink-kubernetes-operator -n ${{ 
matrix.namespace }} helm/flink-kubernetes-operator --set 
image.repository=flink-kubernetes-operator --set image.tag=ci-latest ${{ 
matrix.extraArgs }}
-          kubectl wait --for=condition=Available --timeout=120s -n ${{ 
matrix.namespace }} deploy/flink-kubernetes-operator
-          kubectl get pods -n ${{ matrix.namespace }}
-      - name: Run Flink e2e tests
-        run: |
-          sed -i "s/image: flink:.*/image: ${{ matrix.image }}/" 
e2e-tests/data/*.yaml
-          sed -i "s/flinkVersion: .*/flinkVersion: ${{ matrix.version }}/" 
e2e-tests/data/*.yaml
-          sed -i "s/mode: .*/mode: ${{ matrix.mode }}/" e2e-tests/data/*.yaml
-          git diff HEAD
-          echo "Running e2e-tests/$test"
-          bash e2e-tests/${{ matrix.test }} || exit 1
-          git reset --hard
-      - name: Stop the operator
-        run: |
-          helm uninstall -n ${{ matrix.namespace }} flink-kubernetes-operator
-      - name: Stop minikube
-        run: |
-          source e2e-tests/utils.sh
-          stop_minikube
+          - test_multi_sessionjob.sh
+          - test_autoscaler.sh
+          - test_dynamic_config.sh
+        exclude:
+          - mode: standalone
+            test: test_autoscaler.sh
+          - mode: standalone
+            test: test_dynamic_config.sh
+          - flink-version: v1_16
+            test: test_autoscaler.sh
+          - flink-version: v1_16
+            test: test_dynamic_config.sh
+
+    uses: ./.github/workflows/e2e.yaml
+    with:
+      java-version: 11
+      flink-version: ${{ matrix.flink-version }}
+      test: ${{ matrix.test }}
+      namespace: "flink"
+      create-namespace: true
+      mode: ${{ matrix.mode }}
   e2e_ci:
     needs: e2e_smoke_test
-    runs-on: ubuntu-latest
     strategy:
       matrix:
-        version: ["v1_20","v1_19","v1_18","v1_17","v1_16"]
-        namespace: ["default","flink"]
-        mode: ["native", "standalone"]
-        java-version: [ 11, 17, 21 ]
+        flink-version:
+          - "v1_20"
+          - "v1_18"
+          - "v1_19"
+          - "v1_17"
+          - "v1_16"
+        mode:
+          - "native"
+          - "standalone"
         test:
           - test_application_kubernetes_ha.sh
           - test_application_operations.sh
           - test_dynamic_config.sh
           - test_sessionjob_kubernetes_ha.sh
           - test_sessionjob_operations.sh
-          - test_multi_sessionjob.sh
           - test_autoscaler.sh
           - test_flink_operator_ha.sh
           - test_snapshot.sh
-        include:
-          - namespace: flink
-            extraArgs: '--create-namespace --set 
"watchNamespaces={default,flink}"'
-          - version: v1_20
-            image: flink:1.20
-          - version: v1_19
-            image: flink:1.19
-          - version: v1_18
-            image: flink:1.18
-          - version: v1_17
-            image: flink:1.17
-          - version: v1_16
-            image: flink:1.16
         exclude:
-          - namespace: default
-            test: test_multi_sessionjob.sh
-          - namespace: default
-            test: test_autoscaler.sh
-          - namespace: default
-            test: test_dynamic_config.sh
-          - mode: standalone
+          - flink-version: v1_16
             test: test_autoscaler.sh
           - mode: standalone
-            test: test_dynamic_config.sh
-          - mode: standalone
-            test: test_snapshot.sh
-          - version: v1_16
             test: test_autoscaler.sh
-          - version: v1_16
+          - flink-version: v1_16
             test: test_dynamic_config.sh
-          - version: v1_16
+          - flink-version: v1_16
             test: test_flink_operator_ha.sh
-          - version: v1_16
+          - flink-version: v1_16
             test: test_snapshot.sh
-          - version: v1_17
+          - flink-version: v1_17
             test: test_dynamic_config.sh
-          - version: v1_17
+          - flink-version: v1_17
             test: test_flink_operator_ha.sh
-          - version: v1_17
+          - flink-version: v1_17
             test: test_snapshot.sh
-          - version: v1_18
+          - flink-version: v1_18
             test: test_dynamic_config.sh
-          - version: v1_18
+          - flink-version: v1_18
             test: test_flink_operator_ha.sh
-          - version: v1_18
+          - flink-version: v1_18
             test: test_snapshot.sh
-          - version: v1_19
+          - flink-version: v1_19
             test: test_snapshot.sh
-          - version: v1_16
-            java-version: 17
-          - version: v1_17
-            java-version: 17
-          - version: v1_16
-            java-version: 21
-          - version: v1_17
-            java-version: 21
-          - version: v1_18
-            java-version: 21
-    name: e2e_ci
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java-version }}
-        uses: actions/setup-java@v4
-        with:
-          java-version: ${{ matrix.java-version }}
-          distribution: 'temurin'
-          cache: 'maven'
-      - name: Start minikube
-        run: |
-          source e2e-tests/utils.sh
-          start_minikube
-      - name: Install cert-manager
-        run: |
-          kubectl get pods -A
-          kubectl apply -f e2e-tests/cert-manager.yaml
-          kubectl -n cert-manager wait --all=true --for=condition=Available 
--timeout=300s deploy
-      - name: Build image
-        run: |
-          export SHELL=/bin/bash
-          export DOCKER_BUILDKIT=1
-          eval $(minikube -p minikube docker-env)
-          JAVA_VERSION=${{ matrix.java-version }}
-          docker build --progress=plain --no-cache -f ./Dockerfile -t 
flink-kubernetes-operator:ci-latest --progress plain --build-arg 
JAVA_VERSION="${JAVA_VERSION:-11}" .
-          docker images
-      - name: Start the operator
-        run: |
-          if [[ "${{ matrix.test }}" == "test_flink_operator_ha.sh" ]]; then
-            sed -i "s/# kubernetes.operator.leader-election.enabled: 
false/kubernetes.operator.leader-election.enabled: true/" 
helm/flink-kubernetes-operator/conf/flink-conf.yaml
-            sed -i "s/# kubernetes.operator.leader-election.lease-name: 
flink-operator-lease/kubernetes.operator.leader-election.lease-name: 
flink-operator-lease/" helm/flink-kubernetes-operator/conf/flink-conf.yaml
-            sed -i "s/replicas: 1/replicas: 2/" 
helm/flink-kubernetes-operator/values.yaml
-          fi
-          helm --debug install flink-kubernetes-operator -n ${{ 
matrix.namespace }} helm/flink-kubernetes-operator --set 
image.repository=flink-kubernetes-operator --set image.tag=ci-latest ${{ 
matrix.extraArgs }}
-          kubectl wait --for=condition=Available --timeout=120s -n ${{ 
matrix.namespace }} deploy/flink-kubernetes-operator
-          kubectl get pods -n ${{ matrix.namespace }}
-      - name: Run Flink e2e tests
-        run: |
-          sed -i "s/image: flink:.*/image: ${{ matrix.image }}/" 
e2e-tests/data/*.yaml
-          sed -i "s/flinkVersion: .*/flinkVersion: ${{ matrix.version }}/" 
e2e-tests/data/*.yaml
-          sed -i "s/mode: .*/mode: ${{ matrix.mode }}/" e2e-tests/data/*.yaml
-          git diff HEAD
-          echo "Running e2e-tests/$test"
-          bash e2e-tests/${{ matrix.test }} || exit 1
-          git reset --hard
-      - name: Stop the operator
-        run: |
-          helm uninstall -n ${{ matrix.namespace }} flink-kubernetes-operator
-      - name: Stop minikube
-        run: |
-          source e2e-tests/utils.sh
-          stop_minikube
+    uses: ./.github/workflows/e2e.yaml
+    with:
+      java-version: 11
+      flink-version: ${{ matrix.flink-version }}
+      test: ${{ matrix.test }}
+      mode: ${{ matrix.mode }}
diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml
new file mode 100644
index 00000000..d349a434
--- /dev/null
+++ b/.github/workflows/e2e.yaml
@@ -0,0 +1,96 @@
+name: E2E test workflow
+
+on:
+  workflow_call:
+    inputs:
+      java-version:
+        required: true
+        type: string
+      flink-version:
+        required: true
+        type: string
+      http-client:
+        required: false
+        type: string
+        default: "okhttp"
+      namespace:
+        required: false
+        type: string
+        default: "default"
+      mode:
+        required: false
+        type: string
+        default: "native"
+      test:
+        required: true
+        type: string
+      create-namespace:
+        type: boolean
+        default: false
+
+jobs:
+  e2e_test:
+    name: ${{ inputs.test }}
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v4
+      - name: Set up JDK ${{ inputs.java-version }}
+        uses: actions/setup-java@v4
+        with:
+          java-version: ${{ inputs.java-version }}
+          distribution: 'temurin'
+          cache: 'maven'
+      - name: Start minikube
+        run: |
+          source e2e-tests/utils.sh
+          start_minikube
+      - name: Install cert-manager
+        run: |
+          kubectl get pods -A
+          kubectl apply -f e2e-tests/cert-manager.yaml
+          kubectl -n cert-manager wait --all=true --for=condition=Available 
--timeout=300s deploy
+      - name: Build image
+        run: |
+          export SHELL=/bin/bash
+          export DOCKER_BUILDKIT=1
+          eval $(minikube -p minikube docker-env)
+          JAVA_VERSION=${{ inputs.java-version }}
+          HTTP_CLIENT=${{ inputs.http-client }}
+          docker build --progress=plain --no-cache -f ./Dockerfile -t 
flink-kubernetes-operator:ci-latest --progress plain --build-arg 
JAVA_VERSION="${JAVA_VERSION:-11}" --build-arg 
HTTP_CLIENT="${HTTP_CLIENT:-okhttp}" .
+          docker images
+      - name: Create ${{ inputs.namespace }} == ${{ inputs.create-namespace }}
+        id: namespace-creator
+        if: ${{ inputs.create-namespace }}
+        run: |
+          source e2e-tests/utils.sh
+          create_namespace ${{ inputs.namespace }}
+          echo 'EXTRA_HELM_INSTALL_ARGS=--set 
"watchNamespaces={default,flink}"' >> $GITHUB_OUTPUT
+      - name: Start the operator
+        run: |
+          if [[ "${{ inputs.test }}" == "test_flink_operator_ha.sh" ]]; then
+           sed -i "s/# kubernetes.operator.leader-election.enabled: 
false/kubernetes.operator.leader-election.enabled: true/" 
helm/flink-kubernetes-operator/conf/flink-conf.yaml
+           sed -i "s/# kubernetes.operator.leader-election.lease-name: 
flink-operator-lease/kubernetes.operator.leader-election.lease-name: 
flink-operator-lease/" helm/flink-kubernetes-operator/conf/flink-conf.yaml
+           sed -i "s/replicas: 1/replicas: 2/" 
helm/flink-kubernetes-operator/values.yaml
+          fi
+          helm --debug install flink-kubernetes-operator -n ${{ 
inputs.namespace }} helm/flink-kubernetes-operator --set 
image.repository=flink-kubernetes-operator --set image.tag=ci-latest ${{ 
steps.namespace-creator.outputs.EXTRA_HELM_INSTALL_ARGS }} 
+          kubectl wait --for=condition=Available --timeout=120s -n ${{ 
inputs.namespace }} deploy/flink-kubernetes-operator
+          kubectl get pods -n ${{ inputs.namespace }}
+      - name: Run Flink e2e tests
+        run: |
+          FLINK_IMAGE=$(sed --regexp-extended 
's/v([0-9]+)_([0-9]+)/flink:\1.\2/g' <<< ${{ inputs.flink-version }} )
+          echo FLINK_IMAGE=${FLINK_IMAGE}
+          sed -i "s/image: flink:.*/image: ${FLINK_IMAGE}/" 
e2e-tests/data/*.yaml
+          sed -i "s/flinkVersion: .*/flinkVersion: ${{ inputs.flink-version 
}}/" e2e-tests/data/*.yaml
+          sed -i "s/mode: .*/mode: ${{ inputs.mode }}/" e2e-tests/data/*.yaml
+          git diff HEAD
+          echo "Running e2e-tests/$test"
+          bash e2e-tests/${{ inputs.test }} || exit 1
+          git reset --hard
+      - name: Stop the operator
+        run: |
+          helm uninstall -n ${{ inputs.namespace }} flink-kubernetes-operator
+      - name: Stop minikube
+        run: |
+          source e2e-tests/utils.sh
+          stop_minikube
+

Reply via email to