@@ -3144,6 +3144,151 @@ jobs:
3144
3144
name : kube-ovn-connectivity-e2e-${{ matrix.mode }}-ko-log
3145
3145
path : kube-ovn-connectivity-e2e-${{ matrix.mode }}-ko-log.tar.gz
3146
3146
3147
+
3148
+ kube-ovn-underlay-metallb-e2e :
3149
+ name : OVN METALLB E2E
3150
+ needs :
3151
+ - build-kube-ovn
3152
+ - build-e2e-binaries
3153
+ runs-on : ubuntu-24.04
3154
+ timeout-minutes : 15
3155
+ steps :
3156
+ -
uses :
jlumbroso/[email protected]
3157
+ with :
3158
+ android : true
3159
+ dotnet : true
3160
+ haskell : true
3161
+ docker-images : false
3162
+ large-packages : false
3163
+ tool-cache : false
3164
+ swap-storage : false
3165
+
3166
+ - uses : actions/checkout@v4
3167
+
3168
+ - name : Create the default branch directory
3169
+ if : (github.base_ref || github.ref_name) != github.event.repository.default_branch
3170
+ run : mkdir -p test/e2e/source
3171
+
3172
+ - name : Check out the default branch
3173
+ if : (github.base_ref || github.ref_name) != github.event.repository.default_branch
3174
+ uses : actions/checkout@v4
3175
+ with :
3176
+ ref : ${{ github.event.repository.default_branch }}
3177
+ fetch-depth : 1
3178
+ path : test/e2e/source
3179
+
3180
+ - name : Export E2E directory
3181
+ run : |
3182
+ if [ '${{ github.base_ref || github.ref_name }}' = '${{ github.event.repository.default_branch }}' ]; then
3183
+ echo "E2E_DIR=." >> "$GITHUB_ENV"
3184
+ else
3185
+ echo "E2E_DIR=test/e2e/source" >> "$GITHUB_ENV"
3186
+ fi
3187
+
3188
+ - uses : actions/setup-go@v5
3189
+ id : setup-go
3190
+ with :
3191
+ go-version-file : ${{ env.E2E_DIR }}/go.mod
3192
+ check-latest : true
3193
+ cache : false
3194
+
3195
+ - name : Export Go full version
3196
+ run : echo "GO_VERSION=${{ steps.setup-go.outputs.go-version }}" >> "$GITHUB_ENV"
3197
+
3198
+ - name : Go cache
3199
+ uses : actions/cache/restore@v4
3200
+ with :
3201
+ path : |
3202
+ ~/.cache/go-build
3203
+ ~/go/pkg/mod
3204
+ key : ${{ runner.os }}-e2e-go-${{ env.GO_VERSION }}-x86-${{ hashFiles(format('{0}/**/go.sum', env.E2E_DIR)) }}
3205
+ restore-keys : ${{ runner.os }}-e2e-go-${{ env.GO_VERSION }}-x86-
3206
+
3207
+ - name : Install kind
3208
+
3209
+ with :
3210
+ version : ${{ env.KIND_VERSION }}
3211
+ install_only : true
3212
+
3213
+ - name : Install ginkgo
3214
+ working-directory : ${{ env.E2E_DIR }}
3215
+ run : go install -v -mod=mod github.com/onsi/ginkgo/v2/ginkgo
3216
+
3217
+ - name : Download kube-ovn image
3218
+ uses : actions/download-artifact@v4
3219
+ with :
3220
+ name : kube-ovn
3221
+
3222
+ - name : Load images
3223
+ run : docker load -i kube-ovn.tar
3224
+
3225
+ - name : Set environment variables
3226
+ run : |
3227
+ if [ $(($RANDOM%2)) -ne 0 ]; then
3228
+ # run as root and use valgrind to debug memory leak
3229
+ echo "VERSION=$(cat VERSION)-debug" >> "$GITHUB_ENV"
3230
+ echo "DEBUG_WRAPPER=valgrind" >> "$GITHUB_ENV"
3231
+ fi
3232
+
3233
+ - name : Create kind cluster
3234
+ run : |
3235
+ pipx install jinjanator
3236
+ make kind-init
3237
+
3238
+ - name : Install Kube-OVN
3239
+ id : install
3240
+ run : make kind-install-metallb-pool-from-underlay
3241
+
3242
+ - name : Run Ovn Metallb and Kube-OVN Combine E2E
3243
+ id : kube-ovn-underlay-metallb-e2e
3244
+ working-directory : ${{ env.E2E_DIR }}
3245
+ env :
3246
+ E2E_BRANCH : ${{ github.base_ref || github.ref_name }}
3247
+ run : make kube-ovn-underlay-metallb-e2e
3248
+
3249
+ - name : Collect k8s events
3250
+ if : failure() && ( steps.ovn-metallb-e2e.conclusion == 'failure')
3251
+ run : |
3252
+ kubectl get events -A -o yaml > kube-ovn-underlay-metallb-e2e-events.yaml
3253
+ tar zcf kube-ovn-underlay-metallb-e2e-events.tar.gz kube-ovn-underlay-metallb-e2e-events.yaml
3254
+
3255
+ - name : Upload k8s events
3256
+ uses : actions/upload-artifact@v4
3257
+ if : failure() && (steps.kube-ovn-underlay-metallb-e2e.conclusion == 'failure')
3258
+ with :
3259
+ name : kube-ovn-underlay-metallb-e2e-events
3260
+ path : kube-ovn-underlay-metallb-e2e-events.tar.gz
3261
+
3262
+ - name : Collect apiserver audit logs
3263
+ if : failure() && (steps.kube-ovn-underlay-metallb-e2e.conclusion == 'failure')
3264
+ run : |
3265
+ docker cp kube-ovn-control-plane:/var/log/kubernetes/kube-apiserver-audit.log .
3266
+ tar zcf kube-ovn-underlay-metallb-e2e-audit-log.tar.gz kube-apiserver-audit.log
3267
+
3268
+ - name : Upload apiserver audit logs
3269
+ uses : actions/upload-artifact@v4
3270
+ if : failure() && (steps.kube-ovn-underlay-metallb-e2e.conclusion == 'failure')
3271
+ with :
3272
+ name : kube-ovn-underlay-metallb-e2e-audit-log
3273
+ path : kube-ovn-underlay-metallb-e2e-audit-log.tar.gz
3274
+
3275
+ - name : kubectl ko log
3276
+ if : failure() && (steps.kube-ovn-underlay-metallb-e2e.conclusion == 'failure')
3277
+ run : |
3278
+ make kubectl-ko-log
3279
+ mv kubectl-ko-log.tar.gz kube-ovn-underlay-metallb-e2e-ko-log.tar.gz
3280
+
3281
+ - name : upload kubectl ko log
3282
+ uses : actions/upload-artifact@v4
3283
+ if : failure() && (steps.kube-ovn-underlay-metallb-e2e.conclusion == 'failure')
3284
+ with :
3285
+ name : kube-ovn-underlay-metallb-e2e-ko-log
3286
+ path : kube-ovn-underlay-metallb-e2e-ko-log.tar.gz
3287
+
3288
+ - name : Check kube ovn pod restarts
3289
+ if : ${{ success() || (failure() && (steps.install.conclusion == 'failure' || steps.kube-ovn-underlay-metallb-e2e.conclusion == 'failure')) }}
3290
+ run : make check-kube-ovn-pod-restarts
3291
+
3147
3292
push :
3148
3293
name : Push Images
3149
3294
needs :
@@ -3153,6 +3298,7 @@ jobs:
3153
3298
- kube-ovn-conformance-e2e
3154
3299
- kube-ovn-ic-conformance-e2e
3155
3300
- kube-ovn-ipsec-e2e
3301
+ - kube-ovn-underlay-metallb-e2e
3156
3302
- multus-conformance-e2e
3157
3303
- vpc-egress-gateway-e2e
3158
3304
- ovn-vpc-nat-gw-conformance-e2e
0 commit comments