@@ -3144,6 +3144,143 @@ 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-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 : Create kind cluster
3226
+ run : |
3227
+ pipx install jinjanator
3228
+ make kind-init
3229
+
3230
+ - name : Install Kube-OVN
3231
+ id : install
3232
+ run : make kind-install-metallb-pool-from-underlay
3233
+
3234
+ - name : Run Ovn Metallb and Kube-OVN Combine E2E
3235
+ id : kube-ovn-metallb-e2e
3236
+ working-directory : ${{ env.E2E_DIR }}
3237
+ env :
3238
+ E2E_BRANCH : ${{ github.base_ref || github.ref_name }}
3239
+ run : make kube-ovn-metallb-e2e
3240
+
3241
+ - name : Collect k8s events
3242
+ if : failure() && ( steps.ovn-metallb-e2e.conclusion == 'failure')
3243
+ run : |
3244
+ kubectl get events -A -o yaml > kube-ovn-metallb-e2e-events.yaml
3245
+ tar zcf kube-ovn-metallb-e2e-events.tar.gz kube-ovn-metallb-e2e-events.yaml
3246
+
3247
+ - name : Upload k8s events
3248
+ uses : actions/upload-artifact@v4
3249
+ if : failure() && (steps.kube-ovn-metallb-e2e.conclusion == 'failure')
3250
+ with :
3251
+ name : kube-ovn-metallb-e2e-events
3252
+ path : kube-ovn-metallb-e2e-events.tar.gz
3253
+
3254
+ - name : Collect apiserver audit logs
3255
+ if : failure() && (steps.kube-ovn-metallb-e2e.conclusion == 'failure')
3256
+ run : |
3257
+ docker cp kube-ovn-control-plane:/var/log/kubernetes/kube-apiserver-audit.log .
3258
+ tar zcf kube-ovn-metallb-e2e-audit-log.tar.gz kube-apiserver-audit.log
3259
+
3260
+ - name : Upload apiserver audit logs
3261
+ uses : actions/upload-artifact@v4
3262
+ if : failure() && (steps.kube-ovn-metallb-e2e.conclusion == 'failure')
3263
+ with :
3264
+ name : kube-ovn-metallb-e2e-audit-log
3265
+ path : kube-ovn-metallb-e2e-audit-log.tar.gz
3266
+
3267
+ - name : kubectl ko log
3268
+ if : failure() && (steps.kube-ovn-metallb-e2e.conclusion == 'failure')
3269
+ run : |
3270
+ make kubectl-ko-log
3271
+ mv kubectl-ko-log.tar.gz kube-ovn-metallb-e2e-ko-log.tar.gz
3272
+
3273
+ - name : upload kubectl ko log
3274
+ uses : actions/upload-artifact@v4
3275
+ if : failure() && (steps.kube-ovn-metallb-e2e.conclusion == 'failure')
3276
+ with :
3277
+ name : kube-ovn-metallb-e2e-ko-log
3278
+ path : kube-ovn-metallb-e2e-ko-log.tar.gz
3279
+
3280
+ - name : Check kube ovn pod restarts
3281
+ if : ${{ success() || (failure() && (steps.install.conclusion == 'failure' || steps.kube-ovn-metallb-e2e.conclusion == 'failure')) }}
3282
+ run : make check-kube-ovn-pod-restarts
3283
+
3147
3284
push :
3148
3285
name : Push Images
3149
3286
needs :
@@ -3153,6 +3290,7 @@ jobs:
3153
3290
- kube-ovn-conformance-e2e
3154
3291
- kube-ovn-ic-conformance-e2e
3155
3292
- kube-ovn-ipsec-e2e
3293
+ - kube-ovn-metallb-e2e
3156
3294
- multus-conformance-e2e
3157
3295
- vpc-egress-gateway-e2e
3158
3296
- ovn-vpc-nat-gw-conformance-e2e
0 commit comments